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
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.
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.
DataSource somente no Form principal... tem jeito ???
DataSource somente no Form principal... tem jeito ???
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.
í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 ???
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.
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.
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
DataSource somente no Form principal... tem jeito ???
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.
>
>
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.
>
>