Página 1 de 1

TSqLiteDataSource:Table() y Procedures

Publicado: Mar Nov 06, 2007 10:55 am
por Angel
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?

TSqLiteDataSource:Table() y Procedures

Publicado: Mar Nov 06, 2007 11:28 am
por ignacio
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?

TSqLiteDataSource:Table() y Procedures

Publicado: Mar Nov 06, 2007 11:31 am
por Angel
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!