Cuando intento crear un dataset mediante este metodo de la clase
TSqLite, si lo hago desde un procedure, me devuelve un dataset 'vacio'.
En cambio, si lo creo desde un method, como por ejemplo un OnCreate de
un TDBBbrowse, me lo crea perfectamente. El código en cuestión es este:
//Así, lo crea correctamente
METHOD DBBrowse1Create( oSender ) CLASS FrmUsuarios
LOCAL oDatasetusuarios
oDatasetUsuarios:= AppData:oSqlSource:Table("usuarios")
oDataSetUsuarios:lOpen:=.T.
oSender:oDataset:=oDataSetUsuarios
RETURN Nil
//Así, no.
Procedure CreaDatas()
WITH OBJECT AppData
:AddData("oDataSetUsuarios",:oSqlSource:Table("usuarios"))
END WITH
RETURN
He podido ver que mi objeto oSqlSource, no se inicializa correctamente
hasta que no se ejecuta la aplicación, y si lo 'clono' en una variable
local dentro del procedure, se muestra vacio. En cambio, ya iniciada la
aplicación, toma sus registros correspondientes. ¿Es esto una limitación
de los mismos procedures y estoy obligado a trabajar con ellos una vez
que la aplicación este iniciada?
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.
TSqLiteDataSource:Table() y Procedures
- ignacio
- Site Admin
- Mensajes: 9459
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
TSqLiteDataSource:Table() y Procedures
Angel,
Seguramente el problema se produzca porque el Datasource aún no está creado.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:473039ef$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Cuando intento crear un dataset mediante este metodo de la clase TSqLite,
> si lo hago desde un procedure, me devuelve un dataset 'vacio'. En cambio,
> si lo creo desde un method, como por ejemplo un OnCreate de un TDBBbrowse,
> me lo crea perfectamente. El código en cuestión es este:
>
> //Así, lo crea correctamente
> METHOD DBBrowse1Create( oSender ) CLASS FrmUsuarios
> LOCAL oDatasetusuarios
> oDatasetUsuarios:= AppData:oSqlSource:Table("usuarios")
> oDataSetUsuarios:lOpen:=.T.
> oSender:oDataset:=oDataSetUsuarios
> RETURN Nil
>
> //Así, no.
> Procedure CreaDatas()
> WITH OBJECT AppData
> :AddData("oDataSetUsuarios",:oSqlSource:Table("usuarios"))
> END WITH
> RETURN
>
> He podido ver que mi objeto oSqlSource, no se inicializa correctamente
> hasta que no se ejecuta la aplicación, y si lo 'clono' en una variable
> local dentro del procedure, se muestra vacio. En cambio, ya iniciada la
> aplicación, toma sus registros correspondientes. ¿Es esto una limitación
> de los mismos procedures y estoy obligado a trabajar con ellos una vez que
> la aplicación este iniciada?
Seguramente el problema se produzca porque el Datasource aún no está creado.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:473039ef$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Cuando intento crear un dataset mediante este metodo de la clase TSqLite,
> si lo hago desde un procedure, me devuelve un dataset 'vacio'. En cambio,
> si lo creo desde un method, como por ejemplo un OnCreate de un TDBBbrowse,
> me lo crea perfectamente. El código en cuestión es este:
>
> //Así, lo crea correctamente
> METHOD DBBrowse1Create( oSender ) CLASS FrmUsuarios
> LOCAL oDatasetusuarios
> oDatasetUsuarios:= AppData:oSqlSource:Table("usuarios")
> oDataSetUsuarios:lOpen:=.T.
> oSender:oDataset:=oDataSetUsuarios
> RETURN Nil
>
> //Así, no.
> Procedure CreaDatas()
> WITH OBJECT AppData
> :AddData("oDataSetUsuarios",:oSqlSource:Table("usuarios"))
> END WITH
> RETURN
>
> He podido ver que mi objeto oSqlSource, no se inicializa correctamente
> hasta que no se ejecuta la aplicación, y si lo 'clono' en una variable
> local dentro del procedure, se muestra vacio. En cambio, ya iniciada la
> aplicación, toma sus registros correspondientes. ¿Es esto una limitación
> de los mismos procedures y estoy obligado a trabajar con ellos una vez que
> la aplicación este iniciada?
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
TSqLiteDataSource:Table() y Procedures
Ignacio Ortiz de Zúñiga escribió:
> Angel,
>
> Seguramente el problema se produzca porque el Datasource aún no está creado.
>
> Un saludo,
>
Si, efectivamente ese era el error. Es más, pensandolo bien me he dado
cuenta de que lo más óptimo no es abrir todas las tablas y tener
mutliples conexiones a la base de datos abierta aunque sea local, sino
que creo que es más correcto únicamente crear los correspondientes
DataSets y DataSources, y cuando se acceda a un formulario que hace uso
de ellos, abrirlos, hacer uso de ellos mientras sea necesario, y al
cerrar el formulario, cerrar los datasets que se han abierto con el.
La aplicación está pensada para ser monousuario en un principio, pero si
en un futuro la utilizaran varios usuarios y quisiera migrarla a
multiusuario, creo que me encontraría con los típicos problemas de
concurrencia.
Saludos!
> Angel,
>
> Seguramente el problema se produzca porque el Datasource aún no está creado.
>
> Un saludo,
>
Si, efectivamente ese era el error. Es más, pensandolo bien me he dado
cuenta de que lo más óptimo no es abrir todas las tablas y tener
mutliples conexiones a la base de datos abierta aunque sea local, sino
que creo que es más correcto únicamente crear los correspondientes
DataSets y DataSources, y cuando se acceda a un formulario que hace uso
de ellos, abrirlos, hacer uso de ellos mientras sea necesario, y al
cerrar el formulario, cerrar los datasets que se han abierto con el.
La aplicación está pensada para ser monousuario en un principio, pero si
en un futuro la utilizaran varios usuarios y quisiera migrarla a
multiusuario, creo que me encontraría con los típicos problemas de
concurrencia.
Saludos!