Página 1 de 1

DataSource somente no Form principal... tem jeito ???

Publicado: Mié Jun 17, 2009 1:41 pm
por Reginaldo
Caros Colegas,
Estou iniciando um projeto no Xailer, estou usando a versão 1.9.9 DEMO, e
depois de pronto, obviamente, irei comprar a licença...
Nesse projeto estou usando banco de dados POSTGRESQL, conectando via ADO no
xailer...
Bom, a questão é a seguinte: qual a melhor forma de trabalhar com o banco de
dados no xailer...
Queria fazer o seguinte: Criar o oAdoDataSource no form principal e nos
forms filhos apenas indicar no sqlquery o ado do form princpal, mas me
disseram que isso não seria possível a não ser com a versão 2.0 do Xailer...
Então, a única forma que vejo é conectar ao banco de dados em cada form
filho, ou seja, terei que criar um adodatasource em cada form que acessa o
banco de dados... é essa a melhor forma de se fazer no Xailer ???
Outra questão: Porque o Xailer 2.0 não tem versão DEMO ???
Obrigado a todos,
Reginaldo

DataSource somente no Form principal... tem jeito ???

Publicado: Mié Jun 17, 2009 4:20 pm
por ftwein
Talvez isso te ajude:
íngel Fernández respondeu em 11/09/2008:
Esto es un procedure del primer modulo ejecutable de mi aplicación.
------------------------------------------------------------ -------
Procedure VariablesPublicas()
AppData:AddData("oDataSource",TCdxDatasource():Create())
AppData:AddData("oDataSourceImgVo",TCdxDatasource():Create())
AppData:AddData("oDataSourceImgDni",TCdxDatasource():Create())
AppData:AddData("oDataSetClientes",TDbfDataset():Create())
AppData:AddData("oDataSetHistorico",TDbfDataset():Create())
AppData:AddData("oDataSetVo",TDbfDataset():Create())
AppData:AddData("oDataSetGastos",TDbfDataset():Create())
AppData:AddData("oDataSetImagenes",TDbfDataset():Create())
AppData:AddData("oDataSetImagenesVo",TDbfDataset():Create())
Return
Aquí­ inicio los datasources/datasets, pero aun están "en blanco".
Después, tengo otro PRG aparte, para las inicializaciones de los
datasets cuya parte del código es:
#include "Xailer.ch"
FUNCTION InicializaDataSource
WITH OBJECT AppData:oDataSource
:cConnect:=".DBF"
END WITH
WITH OBJECT AppData:oDataSourceImgDni
:cConnect:=".IMGDNI"
END WITH
WITH OBJECT AppData:oDataSourceImgVo
:cConnect:=".IMGVO"
END WITH
RETURN NIL
FUNCTION InicializaDatasetClientes
WITH OBJECT AppData:oDatasetClientes
IF(:lOpen == .T.)
:lOpen:= .F.
END IF
:cName:="BD.DBF"
:oDataSource:=AppData:oDataSource
IF (FILE("BD.CDX"))
FERASE("BD.CDX")
END IF
IF (:lOpen := .T.)
:Pack()
INDEX ON _FIELD->DNICIF TAG iBdDniCif UNIQUE FOR !DELETED()
INDEX ON _FIELD->APELNOM TAG iBdApelnom UNIQUE FOR !DELETED()
ELSE
MSGINFO("Error abriendo base de datos")
END IF
END WITH
RETURN NIL
Ya después en cada OnInitialize de los formularios, solo hay que llamar
a la funciónes que previamente hemos creado para iniciar los datasets.
METHOD FormInitialize( oSender ) CLASS FrmClientes
InicializaDatasetClientes()
RETURN Nil
Espero que te sirva, un saludo.

DataSource somente no Form principal... tem jeito ???

Publicado: Mié Jun 17, 2009 6:07 pm
por Reginaldo
Caro Trautwein,
Essa solução é boa, porém, me parece que não terei o datasource disponível
em tempo de projeto, ou terei ? Pois, o ideal seria que tivesse como eu ter
o datasource disponível em tempo de projeto, pois facilita para a montagem
dos formulários, etc...
Grato,
Reginaldo
"F.Trautwein" <ftwein@yahoo.com.br> escreveu na mensagem
news:[email=4a38fbc5@svctag-j7w3v3j....]4a38fbc5@svctag-j7w3v3j....[/email]
> Talvez isso te ajude:
>
> Ángel Fernández respondeu em 11/09/2008:
>
> Esto es un procedure del primer modulo ejecutable de mi aplicación.
> ------------------------------------------------------------ -------
>
> Procedure VariablesPublicas()
> AppData:AddData("oDataSource",TCdxDatasource():Create())
> AppData:AddData("oDataSourceImgVo",TCdxDatasource():Create())
> AppData:AddData("oDataSourceImgDni",TCdxDatasource():Create())
> AppData:AddData("oDataSetClientes",TDbfDataset():Create())
> AppData:AddData("oDataSetHistorico",TDbfDataset():Create())
> AppData:AddData("oDataSetVo",TDbfDataset():Create())
> AppData:AddData("oDataSetGastos",TDbfDataset():Create())
> AppData:AddData("oDataSetImagenes",TDbfDataset():Create())
> AppData:AddData("oDataSetImagenesVo",TDbfDataset():Create())
> Return
>
> Aquí inicio los datasources/datasets, pero aun están "en blanco".
>
> Después, tengo otro PRG aparte, para las inicializaciones de los datasets
> cuya parte del código es:
>
> #include "Xailer.ch"
> FUNCTION InicializaDataSource
> WITH OBJECT AppData:oDataSource
> :cConnect:=".DBF"
> END WITH
>
> WITH OBJECT AppData:oDataSourceImgDni
> :cConnect:=".IMGDNI"
> END WITH
>
> WITH OBJECT AppData:oDataSourceImgVo
> :cConnect:=".IMGVO"
> END WITH
>
> RETURN NIL
>
> FUNCTION InicializaDatasetClientes
> WITH OBJECT AppData:oDatasetClientes
> IF(:lOpen == .T.)
> :lOpen:= .F.
> END IF
>
> :cName:="BD.DBF"
> :oDataSource:=AppData:oDataSource
>
> IF (FILE("BD.CDX"))
> FERASE("BD.CDX")
> END IF
>
> IF (:lOpen := .T.)
> :Pack()
> INDEX ON _FIELD->DNICIF TAG iBdDniCif UNIQUE FOR !DELETED()
> INDEX ON _FIELD->APELNOM TAG iBdApelnom UNIQUE FOR !DELETED()
> ELSE
> MSGINFO("Error abriendo base de datos")
> END IF
> END WITH
> RETURN NIL
>
> Ya después en cada OnInitialize de los formularios, solo hay que llamar a
> la funciónes que previamente hemos creado para iniciar los datasets.
>
> METHOD FormInitialize( oSender ) CLASS FrmClientes
> InicializaDatasetClientes()
> RETURN Nil
>
> Espero que te sirva, un saludo.

DataSource somente no Form principal... tem jeito ???

Publicado: Mié Jun 17, 2009 8:36 pm
por jrcpoli-quitar
Saludos:
Toma la decisión de hacerlo desde el IDE o por código, no hay mas
formas de hacerlo, el DataSource, el AdoDataSource, el OdbcDataSource
creado en el formulario principal es accesible desde cualquier
formulario hijo con solo usar el objeto oParent, el DataSource del hijo
::oDataSource := ::oParent:oDataSource del padre, pero todo esto es
usando código.
Esto es completamente valido para cualquier DataSet que crees en el
formulario padre, será accesible desde el hijo usando el oParent.
METHOD ColorCreate( oSender ) CLASS TFormColorNew
// Hijo Padre
oSender:oDataSet := ::oParent:oDataSet
RETURN Nil
También es valido para ejecutar métodos del formulario padre desde el
formulario hijo.
** Si esta marcado
IF ::oCheckbox13:lChecked
** Visualizar los resultados del concurso
** method que esta en el padre
::oParent:Resultados()
ENDIF
*
Perdona sino he entendido bien tú pregunta.
José Ramón Castro.
Reginaldo escribió:
> Caro Trautwein,
>
> Essa solução é boa, porém, me parece que não terei o datasource disponí­vel
> em tempo de projeto, ou terei ? Pois, o ideal seria que tivesse como eu ter
> o datasource disponí­vel em tempo de projeto, pois facilita para a montagem
> dos formulários, etc...
>
> Grato,
>
> Reginaldo
>
> "F.Trautwein" <ftwein@yahoo.com.br> escreveu na mensagem
> news:[email=4a38fbc5@svctag-j7w3v3j....]4a38fbc5@svctag-j7w3v3j....[/email]
>> Talvez isso te ajude:
>>
>> íngel Fernández respondeu em 11/09/2008:
>>
>> Esto es un procedure del primer modulo ejecutable de mi aplicación.
>> ------------------------------------------------------------ -------
>>
>> Procedure VariablesPublicas()
>> AppData:AddData("oDataSource",TCdxDatasource():Create())
>> AppData:AddData("oDataSourceImgVo",TCdxDatasource():Create())
>> AppData:AddData("oDataSourceImgDni",TCdxDatasource():Create())
>> AppData:AddData("oDataSetClientes",TDbfDataset():Create())
>> AppData:AddData("oDataSetHistorico",TDbfDataset():Create())
>> AppData:AddData("oDataSetVo",TDbfDataset():Create())
>> AppData:AddData("oDataSetGastos",TDbfDataset():Create())
>> AppData:AddData("oDataSetImagenes",TDbfDataset():Create())
>> AppData:AddData("oDataSetImagenesVo",TDbfDataset():Create())
>> Return
>>
>> Aquí­ inicio los datasources/datasets, pero aun están "en blanco".
>>
>> Después, tengo otro PRG aparte, para las inicializaciones de los datasets
>> cuya parte del código es:
>>
>> #include "Xailer.ch"
>> FUNCTION InicializaDataSource
>> WITH OBJECT AppData:oDataSource
>> :cConnect:=".DBF"
>> END WITH
>>
>> WITH OBJECT AppData:oDataSourceImgDni
>> :cConnect:=".IMGDNI"
>> END WITH
>>
>> WITH OBJECT AppData:oDataSourceImgVo
>> :cConnect:=".IMGVO"
>> END WITH
>>
>> RETURN NIL
>>
>> FUNCTION InicializaDatasetClientes
>> WITH OBJECT AppData:oDatasetClientes
>> IF(:lOpen == .T.)
>> :lOpen:= .F.
>> END IF
>>
>> :cName:="BD.DBF"
>> :oDataSource:=AppData:oDataSource
>>
>> IF (FILE("BD.CDX"))
>> FERASE("BD.CDX")
>> END IF
>>
>> IF (:lOpen := .T.)
>> :Pack()
>> INDEX ON _FIELD->DNICIF TAG iBdDniCif UNIQUE FOR !DELETED()
>> INDEX ON _FIELD->APELNOM TAG iBdApelnom UNIQUE FOR !DELETED()
>> ELSE
>> MSGINFO("Error abriendo base de datos")
>> END IF
>> END WITH
>> RETURN NIL
>>
>> Ya después en cada OnInitialize de los formularios, solo hay que llamar a
>> la funciónes que previamente hemos creado para iniciar los datasets.
>>
>> METHOD FormInitialize( oSender ) CLASS FrmClientes
>> InicializaDatasetClientes()
>> RETURN Nil
>>
>> Espero que te sirva, un saludo.
>
>