Página 1 de 1
tcdxdatasource y tdbfdaset
Publicado: Jue Nov 03, 2011 5:59 pm
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
tcdxdatasource y tdbfdaset
Publicado: Mar Nov 08, 2011 2:31 pm
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
>
>
tcdxdatasource y tdbfdaset
Publicado: Mar Nov 08, 2011 4:52 pm
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
>>
>>
tcdxdatasource y tdbfdaset
Publicado: Mar Nov 08, 2011 7:35 pm
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