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.

Añadir datas a un form con __objAddData

Foro público de Xailer en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Añadir datas a un form con __objAddData

Mensaje por Bingen Ugaldebere »

Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
llegará.
Asi que he creado este código para la apertura automática de todos los
DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
principal para luego heredarlos de este en cada nuevo form.
No hay problema en el AdsDataSource ya que asigno en el With Object un
nombre real al objeto y funciona:
WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
Application:oMainForm )
Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
que el nombre del objeto lo tengo en una variable cFile y luego no lo
reconoce, lo he intentado de una docena de maneras durante 1 dí­a entero
y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
deberí­a de devolver una referencia al objeto creado según xHb pero lo
que devuelve es una referencia al objeto principal Application:oMainForm.
Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
archivos??
A algún genio se le ocurre como hacerlo
//Autoopen Files on INIT
If AppData:lAdvantage .And. AppData:lAutoOpen
//Create Ads DataSource from Data directory
__objAddData( Application:oMainForm, "oAds" )
WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
Application:oMainForm )
:cConnect := AppData:cDataPath
:nServerType := asANY
:lConnected := .T.
:Create()
END
//Create Ads Datasets for each DBF file from Data directory
aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
For nFile:=1 to Len(aFiles)
cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
__objAddData( Application:oMainForm, cFile )
cFile:="Application:oMainForm:"+cFile
WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
) //<<<== aquí­ esta el problema
:cName := aFiles[nFile,1]
:oDataSource := Application:oMainForm:oAds
:cProcess := "GENERAL"
:lOpen:=.T.
:Create()
End
Next
Endif
Muchas gracias.
Paco V
Mensajes: 380
Registrado: Jue Oct 27, 2005 9:08 am

Añadir datas a un form con __objAddData

Mensaje por Paco V »

Binge:
No te cortes con MySql. Hasta yo lo tengo funcionando.
Claro, que me han ayudado.
En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
Paco V
Bingen Ugaldebere <bingen@muninser.com> wrote:
>Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>llegará.
>
>Asi que he creado este código para la apertura automática de todos los
>DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>principal para luego heredarlos de este en cada nuevo form.
>
>No hay problema en el AdsDataSource ya que asigno en el With Object un
>nombre real al objeto y funciona:
>
>WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>Application:oMainForm )
>
>Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>que el nombre del objeto lo tengo en una variable cFile y luego no lo
>reconoce, lo he intentado de una docena de maneras durante 1 día entero
>y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
>debería de devolver una referencia al objeto creado según xHb pero lo
>que devuelve es una referencia al objeto principal Application:oMainForm.
>
>Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>archivos??
>
>A algún genio se le ocurre como hacerlo
>
>
>
> //Autoopen Files on INIT
> If AppData:lAdvantage .And. AppData:lAutoOpen
> //Create Ads DataSource from Data directory
> __objAddData( Application:oMainForm, "oAds" )
> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>Application:oMainForm )
> :cConnect := AppData:cDataPath
> :nServerType := asANY
> :lConnected := .T.
> :Create()
> END
>
> //Create Ads Datasets for each DBF file from Data directory
> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>
> For nFile:=1 to Len(aFiles)
> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
> __objAddData( Application:oMainForm, cFile )
> cFile:="Application:oMainForm:"+cFile
>
>
> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>) //<<<== aquí esta el problema
> :cName := aFiles[nFile,1]
> :oDataSource := Application:oMainForm:oAds
> :cProcess := "GENERAL"
> :lOpen:=.T.
> :Create()
> End
> Next
>
> Endif
>
>
>Muchas gracias.
desarrollo
Mensajes: 109
Registrado: Lun Abr 02, 2007 10:12 am

Añadir datas a un form con __objAddData

Mensaje por desarrollo »

En Sevilla os espero a todos el 23 y 24 de junio ;-)
"Paco V" <ssi@ono.com> escribió en el mensaje
news:4656ab8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> Binge:
> No te cortes con MySql. Hasta yo lo tengo funcionando.
> Claro, que me han ayudado.
>
> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>
> Paco V
>
> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>llegará.
>>
>>Asi que he creado este código para la apertura automática de todos los
>>DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>principal para luego heredarlos de este en cada nuevo form.
>>
>>No hay problema en el AdsDataSource ya que asigno en el With Object un
>>nombre real al objeto y funciona:
>>
>>WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>Application:oMainForm )
>>
>>Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>reconoce, lo he intentado de una docena de maneras durante 1 día entero
>
>>y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
>
>>debería de devolver una referencia al objeto creado según xHb pero lo
>>que devuelve es una referencia al objeto principal Application:oMainForm.
>>
>>Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>archivos??
>>
>>A algún genio se le ocurre como hacerlo
>>
>>
>>
>> //Autoopen Files on INIT
>> If AppData:lAdvantage .And. AppData:lAutoOpen
>> //Create Ads DataSource from Data directory
>> __objAddData( Application:oMainForm, "oAds" )
>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>Application:oMainForm )
>> :cConnect := AppData:cDataPath
>> :nServerType := asANY
>> :lConnected := .T.
>> :Create()
>> END
>>
>> //Create Ads Datasets for each DBF file from Data directory
>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>
>> For nFile:=1 to Len(aFiles)
>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>> __objAddData( Application:oMainForm, cFile )
>> cFile:="Application:oMainForm:"+cFile
>>
>>
>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>
>>) //<<<== aquí esta el problema
>> :cName := aFiles[nFile,1]
>> :oDataSource := Application:oMainForm:oAds
>> :cProcess := "GENERAL"
>> :lOpen:=.T.
>> :Create()
>> End
>> Next
>>
>> Endif
>>
>>
>>Muchas gracias.
>
Paco V
Mensajes: 380
Registrado: Jue Oct 27, 2005 9:08 am

Añadir datas a un form con __objAddData

Mensaje por Paco V »

¡Ojala! Estamos en el intento.
Estoy pidiendo un credito, pa las cañas y los pescaitos.
Paco V
"Jose A. Suarez" <desarrollo@aseproda.com> wrote:
>En Sevilla os espero a todos el 23 y 24 de junio ;-)
>
>
>"Paco V" <ssi@ono.com> escribió en el mensaje
>news:4656ab8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>
>> Binge:
>> No te cortes con MySql. Hasta yo lo tengo funcionando.
>> Claro, que me han ayudado.
>>
>> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>>
>> Paco V
>>
>> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>>Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>>momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>>llegará.
>>>
>>>Asi que he creado este código para la apertura automática de todos los
>>>DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>>principal para luego heredarlos de este en cada nuevo form.
>>>
>>>No hay problema en el AdsDataSource ya que asigno en el With Object un
>>>nombre real al objeto y funciona:
>>>
>>>WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>Application:oMainForm )
>>>
>>>Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>>que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>>reconoce, lo he intentado de una docena de maneras durante 1 día entero
>>
>>>y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile
)
>>
>>>debería de devolver una referencia al objeto creado según xHb pero lo
>>>que devuelve es una referencia al objeto principal Application:oMainForm.
>>>
>>>Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>>archivos??
>>>
>>>A algún genio se le ocurre como hacerlo
>>>
>>>
>>>
>>> //Autoopen Files on INIT
>>> If AppData:lAdvantage .And. AppData:lAutoOpen
>>> //Create Ads DataSource from Data directory
>>> __objAddData( Application:oMainForm, "oAds" )
>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>Application:oMainForm )
>>> :cConnect := AppData:cDataPath
>>> :nServerType := asANY
>>> :lConnected := .T.
>>> :Create()
>>> END
>>>
>>> //Create Ads Datasets for each DBF file from Data directory
>>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>>
>>> For nFile:=1 to Len(aFiles)
>>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>>> __objAddData( Application:oMainForm, cFile )
>>> cFile:="Application:oMainForm:"+cFile
>>>
>>>
>>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>>
>>>) //<<<== aquí esta el problema
>>> :cName := aFiles[nFile,1]
>>> :oDataSource := Application:oMainForm:oAds
>>> :cProcess := "GENERAL"
>>> :lOpen:=.T.
>>> :Create()
>>> End
>>> Next
>>>
>>> Endif
>>>
>>>
>>>Muchas gracias.
>>
>
>
Paco V
Mensajes: 380
Registrado: Jue Oct 27, 2005 9:08 am

Añadir datas a un form con __objAddData

Mensaje por Paco V »

¡Ojala! Estamos en el intento.
Estoy pidiendo un credito, pa las cañas y los pescaitos.
Paco V
"Jose A. Suarez" <desarrollo@aseproda.com> wrote:
>En Sevilla os espero a todos el 23 y 24 de junio ;-)
>
>
>"Paco V" <ssi@ono.com> escribió en el mensaje
>news:4656ab8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>
>> Binge:
>> No te cortes con MySql. Hasta yo lo tengo funcionando.
>> Claro, que me han ayudado.
>>
>> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>>
>> Paco V
>>
>> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>>Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>>momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>>llegará.
>>>
>>>Asi que he creado este código para la apertura automática de todos los
>>>DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>>principal para luego heredarlos de este en cada nuevo form.
>>>
>>>No hay problema en el AdsDataSource ya que asigno en el With Object un
>>>nombre real al objeto y funciona:
>>>
>>>WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>Application:oMainForm )
>>>
>>>Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>>que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>>reconoce, lo he intentado de una docena de maneras durante 1 día entero
>>
>>>y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile
)
>>
>>>debería de devolver una referencia al objeto creado según xHb pero lo
>>>que devuelve es una referencia al objeto principal Application:oMainForm.
>>>
>>>Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>>archivos??
>>>
>>>A algún genio se le ocurre como hacerlo
>>>
>>>
>>>
>>> //Autoopen Files on INIT
>>> If AppData:lAdvantage .And. AppData:lAutoOpen
>>> //Create Ads DataSource from Data directory
>>> __objAddData( Application:oMainForm, "oAds" )
>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>Application:oMainForm )
>>> :cConnect := AppData:cDataPath
>>> :nServerType := asANY
>>> :lConnected := .T.
>>> :Create()
>>> END
>>>
>>> //Create Ads Datasets for each DBF file from Data directory
>>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>>
>>> For nFile:=1 to Len(aFiles)
>>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>>> __objAddData( Application:oMainForm, cFile )
>>> cFile:="Application:oMainForm:"+cFile
>>>
>>>
>>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>>
>>>) //<<<== aquí esta el problema
>>> :cName := aFiles[nFile,1]
>>> :oDataSource := Application:oMainForm:oAds
>>> :cProcess := "GENERAL"
>>> :lOpen:=.T.
>>> :Create()
>>> End
>>> Next
>>>
>>> Endif
>>>
>>>
>>>Muchas gracias.
>>
>
>
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Añadir datas a un form con __objAddData

Mensaje por Bingen Ugaldebere »

En Sevila quisieramos estar todos a ver como nos lo hacemos....
Jose A. Suarez escribió:
> En Sevilla os espero a todos el 23 y 24 de junio ;-)
>
>
> "Paco V" <ssi@ono.com> escribió en el mensaje
> news:4656ab8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Binge:
>> No te cortes con MySql. Hasta yo lo tengo funcionando.
>> Claro, que me han ayudado.
>>
>> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>>
>> Paco V
>>
>> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>> Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>> momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>> llegará.
>>>
>>> Asi que he creado este código para la apertura automática de todos los
>>> DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>> principal para luego heredarlos de este en cada nuevo form.
>>>
>>> No hay problema en el AdsDataSource ya que asigno en el With Object un
>>> nombre real al objeto y funciona:
>>>
>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>> Application:oMainForm )
>>>
>>> Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>> que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>> reconoce, lo he intentado de una docena de maneras durante 1 dí­a entero
>>> y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
>>> deberí­a de devolver una referencia al objeto creado según xHb pero lo
>>> que devuelve es una referencia al objeto principal Application:oMainForm.
>>>
>>> Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>> archivos??
>>>
>>> A algún genio se le ocurre como hacerlo
>>>
>>>
>>>
>>> //Autoopen Files on INIT
>>> If AppData:lAdvantage .And. AppData:lAutoOpen
>>> //Create Ads DataSource from Data directory
>>> __objAddData( Application:oMainForm, "oAds" )
>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>> Application:oMainForm )
>>> :cConnect := AppData:cDataPath
>>> :nServerType := asANY
>>> :lConnected := .T.
>>> :Create()
>>> END
>>>
>>> //Create Ads Datasets for each DBF file from Data directory
>>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>>
>>> For nFile:=1 to Len(aFiles)
>>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>>> __objAddData( Application:oMainForm, cFile )
>>> cFile:="Application:oMainForm:"+cFile
>>>
>>>
>>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>>> ) //<<<== aquí­ esta el problema
>>> :cName := aFiles[nFile,1]
>>> :oDataSource := Application:oMainForm:oAds
>>> :cProcess := "GENERAL"
>>> :lOpen:=.T.
>>> :Create()
>>> End
>>> Next
>>>
>>> Endif
>>>
>>>
>>> Muchas gracias.
>
>
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Añadir datas a un form con __objAddData

Mensaje por Bingen Ugaldebere »

Quiero ir por partes, de momento bastante me parece montar un mega
programa con Xailer y pegarme solo con el antes de empezar con Sql que
será lo siguiente.
Gracias de todas maneras.
Paco V escribió:
> Binge:
> No te cortes con MySql. Hasta yo lo tengo funcionando.
> Claro, que me han ayudado.
>
> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>
> Paco V
>
> Bingen Ugaldebere <bingen@muninser.com> wrote:
>> Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>> momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>> llegará.
>>
>> Asi que he creado este código para la apertura automática de todos los
>> DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>> principal para luego heredarlos de este en cada nuevo form.
>>
>> No hay problema en el AdsDataSource ya que asigno en el With Object un
>> nombre real al objeto y funciona:
>>
>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>> Application:oMainForm )
>>
>> Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>> que el nombre del objeto lo tengo en una variable cFile y luego no lo
>> reconoce, lo he intentado de una docena de maneras durante 1 dí­a entero
>
>> y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
>
>> deberí­a de devolver una referencia al objeto creado según xHb pero lo
>> que devuelve es una referencia al objeto principal Application:oMainForm.
>>
>> Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>> archivos??
>>
>> A algún genio se le ocurre como hacerlo
>>
>>
>>
>> //Autoopen Files on INIT
>> If AppData:lAdvantage .And. AppData:lAutoOpen
>> //Create Ads DataSource from Data directory
>> __objAddData( Application:oMainForm, "oAds" )
>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>> Application:oMainForm )
>> :cConnect := AppData:cDataPath
>> :nServerType := asANY
>> :lConnected := .T.
>> :Create()
>> END
>>
>> //Create Ads Datasets for each DBF file from Data directory
>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>
>> For nFile:=1 to Len(aFiles)
>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>> __objAddData( Application:oMainForm, cFile )
>> cFile:="Application:oMainForm:"+cFile
>>
>>
>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>
>> ) //<<<== aquí­ esta el problema
>> :cName := aFiles[nFile,1]
>> :oDataSource := Application:oMainForm:oAds
>> :cProcess := "GENERAL"
>> :lOpen:=.T.
>> :Create()
>> End
>> Next
>>
>> Endif
>>
>>
>> Muchas gracias.
>
desarrollo
Mensajes: 109
Registrado: Lun Abr 02, 2007 10:12 am

Añadir datas a un form con __objAddData

Mensaje por desarrollo »

Bingen,
Lo mejor es ir "a por todas" con Xailer. A la larga ganarás tiempo.
Saludos
Jose A. Suarez
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:[email=4656ce73@ozsrv2.ozlan.local...]4656ce73@ozsrv2.ozlan.local...[/email]
> Quiero ir por partes, de momento bastante me parece montar un mega
> programa con Xailer y pegarme solo con el antes de empezar con Sql que
> será lo siguiente.
>
> Gracias de todas maneras.
>
> Paco V escribió:
>> Binge:
>> No te cortes con MySql. Hasta yo lo tengo funcionando.
>> Claro, que me han ayudado.
>>
>> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>>
>> Paco V
>>
>> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>> Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>> momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>> llegará.
>>>
>>> Asi que he creado este código para la apertura automática de todos los
>>> DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>> principal para luego heredarlos de este en cada nuevo form.
>>>
>>> No hay problema en el AdsDataSource ya que asigno en el With Object un
>>> nombre real al objeto y funciona:
>>>
>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>> Application:oMainForm )
>>>
>>> Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>> que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>> reconoce, lo he intentado de una docena de maneras durante 1 día entero
>>
>>> y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
>>
>>> debería de devolver una referencia al objeto creado según xHb pero lo
>>> que devuelve es una referencia al objeto principal
>>> Application:oMainForm.
>>>
>>> Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>> archivos??
>>>
>>> A algún genio se le ocurre como hacerlo
>>>
>>>
>>>
>>> //Autoopen Files on INIT
>>> If AppData:lAdvantage .And. AppData:lAutoOpen
>>> //Create Ads DataSource from Data directory
>>> __objAddData( Application:oMainForm, "oAds" )
>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>> Application:oMainForm )
>>> :cConnect := AppData:cDataPath
>>> :nServerType := asANY
>>> :lConnected := .T.
>>> :Create()
>>> END
>>>
>>> //Create Ads Datasets for each DBF file from Data directory
>>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>>
>>> For nFile:=1 to Len(aFiles)
>>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>>> __objAddData( Application:oMainForm, cFile )
>>> cFile:="Application:oMainForm:"+cFile
>>>
>>>
>>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>>
>>> ) //<<<== aquí esta el problema
>>> :cName := aFiles[nFile,1]
>>> :oDataSource := Application:oMainForm:oAds
>>> :cProcess := "GENERAL"
>>> :lOpen:=.T.
>>> :Create()
>>> End
>>> Next
>>>
>>> Endif
>>>
>>>
>>> Muchas gracias.
>>
desarrollo
Mensajes: 109
Registrado: Lun Abr 02, 2007 10:12 am

Añadir datas a un form con __objAddData

Mensaje por desarrollo »

A ver, a ver .....
:-)
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:[email=4656cca5@ozsrv2.ozlan.local...]4656cca5@ozsrv2.ozlan.local...[/email]
> En Sevila quisieramos estar todos a ver como nos lo hacemos....
>
> Jose A. Suarez escribió:
>> En Sevilla os espero a todos el 23 y 24 de junio ;-)
>>
>>
>> "Paco V" <ssi@ono.com> escribió en el mensaje
>> news:4656ab8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>> Binge:
>>> No te cortes con MySql. Hasta yo lo tengo funcionando.
>>> Claro, que me han ayudado.
>>>
>>> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>>>
>>> Paco V
>>>
>>> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>>> Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>>> momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>>> llegará.
>>>>
>>>> Asi que he creado este código para la apertura automática de todos los
>>>> DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>>> principal para luego heredarlos de este en cada nuevo form.
>>>>
>>>> No hay problema en el AdsDataSource ya que asigno en el With Object un
>>>> nombre real al objeto y funciona:
>>>>
>>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>> Application:oMainForm )
>>>>
>>>> Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>>> que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>>> reconoce, lo he intentado de una docena de maneras durante 1 día entero
>>>> y no se como hacerlo ya que __objAddData( Application:oMainForm,
>>>> cFile )
>>>> debería de devolver una referencia al objeto creado según xHb pero lo
>>>> que devuelve es una referencia al objeto principal
>>>> Application:oMainForm.
>>>>
>>>> Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>>> archivos??
>>>>
>>>> A algún genio se le ocurre como hacerlo
>>>>
>>>>
>>>>
>>>> //Autoopen Files on INIT
>>>> If AppData:lAdvantage .And. AppData:lAutoOpen
>>>> //Create Ads DataSource from Data directory
>>>> __objAddData( Application:oMainForm, "oAds" )
>>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>> Application:oMainForm )
>>>> :cConnect := AppData:cDataPath
>>>> :nServerType := asANY
>>>> :lConnected := .T.
>>>> :Create()
>>>> END
>>>>
>>>> //Create Ads Datasets for each DBF file from Data directory
>>>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>>>
>>>> For nFile:=1 to Len(aFiles)
>>>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>>>> __objAddData( Application:oMainForm, cFile )
>>>> cFile:="Application:oMainForm:"+cFile
>>>>
>>>>
>>>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>>>> ) //<<<== aquí esta el problema
>>>> :cName := aFiles[nFile,1]
>>>> :oDataSource := Application:oMainForm:oAds
>>>> :cProcess := "GENERAL"
>>>> :lOpen:=.T.
>>>> :Create()
>>>> End
>>>> Next
>>>>
>>>> Endif
>>>>
>>>>
>>>> Muchas gracias.
>>
desarrollo
Mensajes: 109
Registrado: Lun Abr 02, 2007 10:12 am

Añadir datas a un form con __objAddData

Mensaje por desarrollo »

¿Un prestamo?
¿Tanto piensas gastar?
;-)
"Paco V" <ssi@ono.com> escribió en el mensaje
news:4656b5bf$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> ¡Ojala! Estamos en el intento.
>
> Estoy pidiendo un credito, pa las cañas y los pescaitos.
>
> Paco V
>
>
>
> "Jose A. Suarez" <desarrollo@aseproda.com> wrote:
>>En Sevilla os espero a todos el 23 y 24 de junio ;-)
>>
>>
>>"Paco V" <ssi@ono.com> escribió en el mensaje
>>news:4656ab8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>>
>>> Binge:
>>> No te cortes con MySql. Hasta yo lo tengo funcionando.
>>> Claro, que me han ayudado.
>>>
>>> En serio, es sencillo. Si quieres preparamos una comidita y charlamos.
>>>
>>> Paco V
>>>
>>> Bingen Ugaldebere <bingen@muninser.com> wrote:
>>>>Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
>>>>momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
>>>>llegará.
>>>>
>>>>Asi que he creado este código para la apertura automática de todos los
>>>>DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
>>>>principal para luego heredarlos de este en cada nuevo form.
>>>>
>>>>No hay problema en el AdsDataSource ya que asigno en el With Object un
>>>>nombre real al objeto y funciona:
>>>>
>>>>WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>>Application:oMainForm )
>>>>
>>>>Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto
>>>>que el nombre del objeto lo tengo en una variable cFile y luego no lo
>>>>reconoce, lo he intentado de una docena de maneras durante 1 día entero
>>>
>>>>y no se como hacerlo ya que __objAddData( Application:oMainForm, cFile
> )
>>>
>>>>debería de devolver una referencia al objeto creado según xHb pero lo
>>>>que devuelve es una referencia al objeto principal
>>>>Application:oMainForm.
>>>>
>>>>Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
>>>>archivos??
>>>>
>>>>A algún genio se le ocurre como hacerlo
>>>>
>>>>
>>>>
>>>> //Autoopen Files on INIT
>>>> If AppData:lAdvantage .And. AppData:lAutoOpen
>>>> //Create Ads DataSource from Data directory
>>>> __objAddData( Application:oMainForm, "oAds" )
>>>> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
>>>>Application:oMainForm )
>>>> :cConnect := AppData:cDataPath
>>>> :nServerType := asANY
>>>> :lConnected := .T.
>>>> :Create()
>>>> END
>>>>
>>>> //Create Ads Datasets for each DBF file from Data directory
>>>> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>>>>
>>>> For nFile:=1 to Len(aFiles)
>>>> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
>>>> __objAddData( Application:oMainForm, cFile )
>>>> cFile:="Application:oMainForm:"+cFile
>>>>
>>>>
>>>> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm
>>>
>>>>) //<<<== aquí esta el problema
>>>> :cName := aFiles[nFile,1]
>>>> :oDataSource := Application:oMainForm:oAds
>>>> :cProcess := "GENERAL"
>>>> :lOpen:=.T.
>>>> :Create()
>>>> End
>>>> Next
>>>>
>>>> Endif
>>>>
>>>>
>>>>Muchas gracias.
>>>
>>
>>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Añadir datas a un form con __objAddData

Mensaje por ignacio »

Bingen,
Supongamos un array aFiles con los nombres de los ficheros:
LOCAL cFile
FOR EACH cFile IN aFiles
WITH OBJECT TDbfDataSet():New( Self )
:cName := cFile
:oDataSource := ::oCdxDataSource1
:lOpen := .T.
:Create()
END
NEXT
También podrias poner lOpen a .F. y simplemente llamar al método
oDataSource:OpenProcess( "GENERAL" ) para abrir todas de golpe.
Saludos,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:[email=46568736@ozsrv2.ozlan.local...]46568736@ozsrv2.ozlan.local...[/email]
> Tengo una aplicación que tiene que abrir un montón de DBFs unos 60 de
> momento y voy a usar ADS, de momento SQL se me atraganta un poco, ya
> llegará.
>
> Asi que he creado este código para la apertura automática de todos los
> DBFs y asignación del AdsDataSource y todos los DbfDataSet al form
> principal para luego heredarlos de este en cada nuevo form.
>
> No hay problema en el AdsDataSource ya que asigno en el With Object un
> nombre real al objeto y funciona:
>
> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
> Application:oMainForm )
>
> Pero en los DbfDataSet no hay manera de hacerlo con un For Next puesto que
> el nombre del objeto lo tengo en una variable cFile y luego no lo
> reconoce, lo he intentado de una docena de maneras durante 1 día entero y
> no se como hacerlo ya que __objAddData( Application:oMainForm, cFile )
> debería de devolver una referencia al objeto creado según xHb pero lo que
> devuelve es una referencia al objeto principal Application:oMainForm.
>
> Si lo hago con un nombre real funciona 100% pero como hacerlo de 1 a n
> archivos??
>
> A algún genio se le ocurre como hacerlo
>
>
>
> //Autoopen Files on INIT
> If AppData:lAdvantage .And. AppData:lAutoOpen
> //Create Ads DataSource from Data directory
> __objAddData( Application:oMainForm, "oAds" )
> WITH OBJECT Application:oMainForm:oAds := TAdsDataSource():New(
> Application:oMainForm )
> :cConnect := AppData:cDataPath
> :nServerType := asANY
> :lConnected := .T.
> :Create()
> END
>
> //Create Ads Datasets for each DBF file from Data directory
> aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
>
> For nFile:=1 to Len(aFiles)
> cFile:=StrTran("oDbf"+FileShortName(aFiles[nFile,1])," ")
> __objAddData( Application:oMainForm, cFile )
> cFile:="Application:oMainForm:"+cFile
>
>
> WITH OBJECT cFile := TDbfDataSet():New( Application:oMainForm )
> //<<<== aquí esta el problema
> :cName := aFiles[nFile,1]
> :oDataSource := Application:oMainForm:oAds
> :cProcess := "GENERAL"
> :lOpen:=.T.
> :Create()
> End
> Next
>
> Endif
>
>
> Muchas gracias.
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Añadir datas a un form con __objAddData

Mensaje por Bingen Ugaldebere »

Gracias Ignacio pero este código me da un error
Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: Message not found
Operación: TAPPLICATION:INSERTCOMPONENT
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TDATASET:CREATE (230)
TDBFDATASET:CREATE (175)
..........
Deduzco que no inserta el componente ya que no se declara en el With
Object con lo cual vuelvo al mismo punto como insertarlo y con el nombre
que yo tengo en una variable.
Por ejemplo si inserto el componente de antemano con
__objAddData( Application:oMainForm, "oDataSetClientes" )
como decirle que el Dataset creado se asigne a este nombre?
No se si me explico o lo estoy liando más.
Por cierto no encuentro en el Chm de xHb para Xailer ninguna referencia
a With Object ni a For Each, puedes indicarme donde salen o simplemente
no están.
Salu2.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Añadir datas a un form con __objAddData

Mensaje por jfgimenez »

Bingen,
> Gracias Ignacio pero este código me da un error
Pon ese código en el evento OnInitialize del formulario principal.
> Deduzco que no inserta el componente ya que no se declara en el With
> Object con lo cual vuelvo al mismo punto como insertarlo y con el nombre
> que yo tengo en una variable.
No, no tiene que ver con eso. El error se produce porque se está asignando
como padre del dataset el objeto Application, que no soporta que le añadan
componentes (sólo permite que se le añadan formularios).
> Por ejemplo si inserto el componente de antemano con
> __objAddData( Application:oMainForm, "oDataSetClientes" )
> como decirle que el Dataset creado se asigne a este nombre?
No termino de entender lo que pretendes hacer, y me explico: si lo que
quieres es añadir DATAs a una clase con un nombre que sólo conoces en tiempo
de ejecución, entonces ¿no sería mejor meterlos simplemente en un array y
olvidarte del nombre que van a tener? Vamos, que podrías tener una DATA
aDatasets que contenga todos los dataset, en vez de crear una DATA por cada
uno. Si no sabes el nombre que van a tener, te da igual acceder a ellos
mediante un índice en vez de un nombre.
Y si los nombres los conoces en tiempo de diseño, ¿por qué no los añades
directamente a la declaración de la clase y ya está?
> Por cierto no encuentro en el Chm de xHb para Xailer ninguna referencia a
> With Object ni a For Each, puedes indicarme donde salen o simplemente no
> están.
Son comandos de xHarbour (bueno, hace tiempo que están también en Harbour).
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Añadir datas a un form con __objAddData

Mensaje por Bingen Ugaldebere »

Muchas gracias a los dos, ya he conseguido que ande, pero el caso es que
no tengo ningún form abierto aún, cuando declaro el Datasource y los
Dataset, pero no pasa nada ya que me has dado la clave, en vez de
colgarlos de Application los he colgado de AppData, pero una curiosidad.
AppData y Application se dejan colgar un TAdsDataSource sin problemas
pero no los tDataSet ya que no tienen el método InserComponent, ¿pero no
es TAdsDataSource también un componente?
Lo que he hecho es colgarselos a AppData anque para ello haya tenido que
sobrecargar la clase con los método InserComponent y RemoveComponent,
¿no creo que esto cause ningún problema no?
Desde luego la sobrecarga es una pu.. maravilla........
Otra cosa ¿por que en el Debugger puedo ver todos los elementos de los
objetos públicos como Application pero no me deja ver los elementos de
Appdata? le doy al + y no me enseña nada de nada.
Funcionando perfectamente:
//Create Ads DataSource from Data directory
__objAddData( AppData, "oAds" )
WITH OBJECT AppDATA:oAds := TAdsDataSource():New( AppData )
:cConnect := AppData:cDataPath
:nServerType := asANY
:lConnected := .T.
:Create()
END
//Create Ads Datasets for each DBF file from Data directory
aFiles:=DIRECTORY(AppData:cDataPath +"*.Dbf")
For nItem:=1 to len(aFiles)
Aadd(aDbfs,aFiles[nItem,1])
Next
nItem:=0
__objAddData( AppData, "oDbf" )
AppData:oDbf:=Array(Len(aDbfs))
FOR EACH cFile IN aDbfs
WITH OBJECT Appdata:oDbf[++nItem] := TDbfDataSet():New( AppData )
:cName := cFile
:oDataSource := AppData:oAds
:lOpen := .T.
:Create()
END
NEXT
Salu2.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Añadir datas a un form con __objAddData

Mensaje por ignacio »

Bingen,
> colgarlos de Application los he colgado de AppData, pero una curiosidad.
No tiene ningún sentido. Sencilalmante y de momemnto no los cuelges a
ningún objeto
> AppData y Application se dejan colgar un TAdsDataSource sin problemas pero
> no los tDataSet ya que no tienen el método InserComponent, ¿pero no es
> TAdsDataSource también un componente?
Debería fallarte en ambos, pues efectivamente los dos son componentes.
METHOD Create( oParent, cConnect ) CLASS XDataSource
Super:Create( oParent )
UPDATE ::cConnect TO cConnect
AAdd( aDataSources, Self )
::OnCreate()
IF ::oParent != Nil
::oParent:InsertComponent( Self )
ENDIF
RETURN Self
> Lo que he hecho es colgarselos a AppData anque para ello haya tenido que
> sobrecargar la clase con los método InserComponent y RemoveComponent, ¿no
> creo que esto cause ningún problema no?
Ninguno, pero tiene más sentido que no se lo cuelges a nadie.
> Otra cosa ¿por que en el Debugger puedo ver todos los elementos de los
> objetos públicos como Application pero no me deja ver los elementos de
> Appdata? le doy al + y no me enseña nada de nada.
Porque son DATAS, no PROPERTIES. Espero que podamos soportar properties en
un futuro próximo.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Añadir datas a un form con __objAddData

Mensaje por Bingen Ugaldebere »

Ok de acuerdo. Gracias.
Responder