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