In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

tcdxdatasource y tdbfdaset

Foro público de Xailer en español
Responder
jjgp2
Mensajes: 51
Registrado: Jue May 12, 2011 12:57 am
Ubicación: México
Contactar:

tcdxdatasource y tdbfdaset

Mensaje por jjgp2 »

hola buenos dias
Soy nuevo en el manejo de los tcdxdatasourse y tdbdaset solicito su ayuda
para crear manualmente estos componentes en una funcion como la que indico
en el ejemplo siguiente:
Function Periodos()
Local lPaso:=.F.,cDbfActual
cDbfActual:=Select()
Sele 0
DO WHILE .T.
IF !AbreDbf( "pericomi","pcomi22",.T.,10,.T.,1) // en lugar de ocupar
esta funcion quiero utilizar tcdxdatasourse y tdbdaset
DbGoTop()
Do While !Eof()
if ( Date() >= pcomi22->fechaini .and. date() <= pcomi22->fechafin)
G_PerAct:=pcomi22->periodo
Skip -1
G_PerAnt:=pcomi22->periodo
lPaso:=.T.
Exit
else
Skip
endif
Enddo
Exit
ENDIF
ENDDO
pcomi22->( DbCloseArea() )
IF lPaso=.F.
MsgBeep()
MsgInfo("DEBE DE CAPTURAR EL PERIODO CORRESPODIENTE PORQUE NO
EXISTE......","")
ENDIF
Select (cDbfActual)
Return nil
por su ayuda mil gracias
jrcpoli-quitar
Mensajes: 558
Registrado: Mar Feb 09, 2010 2:26 pm

tcdxdatasource y tdbfdaset

Mensaje por jrcpoli-quitar »

Saludos:
Explicar como manejar los TcdxDataSource y los TdbfDataSet es difí­cil
porque hay múltiples formas de usarlos dentro de un programa. podemos en
el menú principal abrir un TcdxDataSource que apunte al directorio donde
están las bases de datos y tantos TdbfDataSet como bases de datos
queramos abrir y asignándoles una variable global usarlos en todo el
programa con dicha variable, o en un segundo caso podemos abrir un
TcdxDataSource en cada formulario y tantos TdbfDataSet como bases
queramos utilizar en ese formulario, yo haré en este ejemplo la primera
opción.
Podemos crear tantos TcdxDataSource que apunten a cada directorio donde
existan bases de datos.
** Variables Globales del sistema en Main()
AppData:AddData("gCdxDataSource",)
AppData:AddData("gDataSet1",)
CLASS MiMenu FROM TForm
ENDCLASS
METHOD InicializaForm( oSender )CLASS MiMenu
** Instanciar el TCdxDataSource
WITH OBJECT AppData:gCdxDataSource := TCdxDataSource():Create()
:cConnect := ".Bases"
:lAutoOpen := .T.
:nLockScheme := dlDEFAULT
:nMemoType := dmFPT_FLEX
:nTableType := ctDBFSTD
END
** Instanciar la base de datos de Nombre.Dbf
WITH OBJECT AppData:gDataSet1 := TdbfDataSet():Create()
:oDataSource := AppData:gCdxDataSource
:cName := "Nombre.dbf"
:lShared := .T.
IF :lOpen := .T.
:OrdSetFocus("Nombre1")
ELSE
MsgAlert("No se puede abrir la base de datos " + :cName, ;
"Programa")
ENDIF
END
RETURN Nil
Ahora toca tu función desde donde quieras llamarla
Periodos(AppData:gDataSet1)
La función
Function Peridos(oDS)
Local lPaso := .F.
DO WHILE .T.
** IF !AbreDbf // no es necesaria si acaso podrí­amos utilizar para
saber si está abierta la Base de datos IF oDS:lOpen
oDS:GoTop()
DO WHILE !oDS:Eof()
if ( Date()>= oDS:fechaini .and. date()<= oDS:fechafin)
G_PerAct:= oDS:periodo
oDS:Skip(-1)
G_PerAnt:= oDS:periodo
lPaso:=.T.
Exit
else
oDS:Skip()
endif
Exit
END DO
exit
END DO
IF lPaso=.F.
MsgBeep()
MsgInfo("DEBE DE CAPTURAR EL PERIODO CORRESPODIENTE PORQUE NO
EXISTE......","")
ENDIF
RETURN Nil
Bueno más o menos esto serí­a así­ aunque puedo haber cometido algún error
puesto que no lo he probado, espero te sirva.
José R.Castro
El 03/11/2011 17:59, José de Jesús Garcí­a escribió:
> hola buenos dias
>
> Soy nuevo en el manejo de los tcdxdatasourse y tdbdaset solicito su ayuda
> para crear manualmente estos componentes en una funcion como la que indico
> en el ejemplo siguiente:
>
> Function Periodos()
> Local lPaso:=.F.,cDbfActual
> cDbfActual:=Select()
> Sele 0
> DO WHILE .T.
> IF !AbreDbf( "pericomi","pcomi22",.T.,10,.T.,1) // en lugar de ocupar
> esta funcion quiero utilizar tcdxdatasourse y tdbdaset
> DbGoTop()
> Do While !Eof()
> if ( Date()>= pcomi22->fechaini .and. date()<= pcomi22->fechafin)
> G_PerAct:=pcomi22->periodo
> Skip -1
> G_PerAnt:=pcomi22->periodo
> lPaso:=.T.
> Exit
> else
> Skip
> endif
> Enddo
> Exit
> ENDIF
> ENDDO
> pcomi22->( DbCloseArea() )
> IF lPaso=.F.
> MsgBeep()
> MsgInfo("DEBE DE CAPTURAR EL PERIODO CORRESPODIENTE PORQUE NO
> EXISTE......","")
> ENDIF
> Select (cDbfActual)
> Return nil
>
> por su ayuda mil gracias
>
>
jjgp2
Mensajes: 51
Registrado: Jue May 12, 2011 12:57 am
Ubicación: México
Contactar:

tcdxdatasource y tdbfdaset

Mensaje por jjgp2 »

muchas gracias por tu ayuda voy ainiciar una prueba y te aviso como me fue.
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:[email=4eb92f36@svctag-j7w3v3j....]4eb92f36@svctag-j7w3v3j....[/email]
> Saludos:
>
> Explicar como manejar los TcdxDataSource y los TdbfDataSet es difícil
> porque hay múltiples formas de usarlos dentro de un programa. podemos en
> el menú principal abrir un TcdxDataSource que apunte al directorio donde
> están las bases de datos y tantos TdbfDataSet como bases de datos queramos
> abrir y asignándoles una variable global usarlos en todo el programa con
> dicha variable, o en un segundo caso podemos abrir un TcdxDataSource en
> cada formulario y tantos TdbfDataSet como bases queramos utilizar en ese
> formulario, yo haré en este ejemplo la primera opción.
> Podemos crear tantos TcdxDataSource que apunten a cada directorio donde
> existan bases de datos.
>
> ** Variables Globales del sistema en Main()
> AppData:AddData("gCdxDataSource",)
> AppData:AddData("gDataSet1",)
>
> CLASS MiMenu FROM TForm
>
>
> ENDCLASS
>
> METHOD InicializaForm( oSender )CLASS MiMenu
>
> ** Instanciar el TCdxDataSource WITH OBJECT AppData:gCdxDataSource :=
> TCdxDataSource():Create()
> :cConnect := ".Bases"
> :lAutoOpen := .T.
> :nLockScheme := dlDEFAULT
> :nMemoType := dmFPT_FLEX
> :nTableType := ctDBFSTD
> END
>
> ** Instanciar la base de datos de Nombre.Dbf
> WITH OBJECT AppData:gDataSet1 := TdbfDataSet():Create()
> :oDataSource := AppData:gCdxDataSource
> :cName := "Nombre.dbf"
> :lShared := .T.
> IF :lOpen := .T.
> :OrdSetFocus("Nombre1")
> ELSE
> MsgAlert("No se puede abrir la base de datos " + :cName, ;
> "Programa")
> ENDIF
> END
>
> RETURN Nil
>
> Ahora toca tu función desde donde quieras llamarla
> Periodos(AppData:gDataSet1)
>
> La función
> Function Peridos(oDS)
>
> Local lPaso := .F.
>
> DO WHILE .T.
> ** IF !AbreDbf // no es necesaria si acaso podríamos utilizar para saber
> si está abierta la Base de datos IF oDS:lOpen
> oDS:GoTop()
> DO WHILE !oDS:Eof()
> if ( Date()>= oDS:fechaini .and. date()<= oDS:fechafin)
> G_PerAct:= oDS:periodo
> oDS:Skip(-1)
> G_PerAnt:= oDS:periodo
> lPaso:=.T.
> Exit
> else
> oDS:Skip()
> endif
> Exit
> END DO
> exit
> END DO
> IF lPaso=.F.
> MsgBeep()
> MsgInfo("DEBE DE CAPTURAR EL PERIODO CORRESPODIENTE PORQUE NO
> EXISTE......","")
> ENDIF
> RETURN Nil
>
> Bueno más o menos esto sería así aunque puedo haber cometido algún error
> puesto que no lo he probado, espero te sirva.
>
> José R.Castro
>
> El 03/11/2011 17:59, José de Jesús García escribió:
>> hola buenos dias
>>
>> Soy nuevo en el manejo de los tcdxdatasourse y tdbdaset solicito su ayuda
>> para crear manualmente estos componentes en una funcion como la que
>> indico
>> en el ejemplo siguiente:
>>
>> Function Periodos()
>> Local lPaso:=.F.,cDbfActual
>> cDbfActual:=Select()
>> Sele 0
>> DO WHILE .T.
>> IF !AbreDbf( "pericomi","pcomi22",.T.,10,.T.,1) // en lugar de ocupar
>> esta funcion quiero utilizar tcdxdatasourse y tdbdaset
>> DbGoTop()
>> Do While !Eof()
>> if ( Date()>= pcomi22->fechaini .and. date()<=
>> pcomi22->fechafin)
>> G_PerAct:=pcomi22->periodo
>> Skip -1
>> G_PerAnt:=pcomi22->periodo
>> lPaso:=.T.
>> Exit
>> else
>> Skip
>> endif
>> Enddo
>> Exit
>> ENDIF
>> ENDDO
>> pcomi22->( DbCloseArea() )
>> IF lPaso=.F.
>> MsgBeep()
>> MsgInfo("DEBE DE CAPTURAR EL PERIODO CORRESPODIENTE PORQUE NO
>> EXISTE......","")
>> ENDIF
>> Select (cDbfActual)
>> Return nil
>>
>> por su ayuda mil gracias
>>
>>
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

tcdxdatasource y tdbfdaset

Mensaje por jlalin »

José,
mira en samplesdatacontrols. Ahí­ tienes varios ejemplos que usan los dos
componentes.
Puedes buscar y abrir los archivos desde el propio IDE con Editar->Buscar
en archivos->En disco.
Saludos,
José Lalí­n
Responder