Añadir datas a un form con __objAddData
Publicado: Vie May 25, 2007 8:50 am
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.
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.