[Lazarus-es] SQLQuery Refresh

Carlos German Tejero german_tejero en yahoo.com.ar
Mie Nov 12 19:35:49 CET 2008


En realidad eso no es un problema. Funciona de esa manera:

Con SQLQuery.ApplyUpdates ennvias todos lo cambios pendientes al motor de
base de datos, ya que las modificaciones se cachean.

Con SQLTransaction1.CommitRetaining o SQLTransaction1.Commit comprometes la
transaccion. Debes tener en cuenta cual usar de acuerdo al motor de base de
datos, por lo general se debe usar SQLTransaction1.CommitRetaining, es lo
esperado en la mayoria de los casos.

Saludos.

2008/11/12 Fredy Gonzales <fredyg1965 en gmail.com>

>  Bueno,
>
> Yo tuve un problema parecido con ZeosDB, cuando grababa en otra ventana y
> volvia al formulario principal donde estaba el grid, no me mostraba el
> ingreso, lo primero que hize despues de la grabacion era aplicar el
> ApplyUpdate
> con lo cual el ingreso era aplicado y se podia ver sin ningun problema en
> el grid del formulario principal. Luego me di cuenta que la propiedad
> AutoCommit en el componente de la base de datos estaba en Falso, al
> cambiarlo a Verdadero, ya no necesite del ApplyUpdate.
>
> En tu componente SLQdb, no veo el Autocommit, pero en el SQLQuery si veo el
> procedimiento ApplyUpdates.
>
> Pruebalo y nos comentas.
>
> FG
>
>
>
> ----- Original Message -----
> *From:* Carlos German Tejero <german_tejero en yahoo.com.ar>
> *To:* Spanish version of Lazarus List <lazarus-es en lazarus.freepascal.org>
> *Sent:* Tuesday, November 11, 2008 4:40 PM
> *Subject:* Re: [Lazarus-es] SQLQuery Refresh
>
> A ver si pudeo.
> Las transacciones en los motores de base de datos deben cumplir con ACID:
> A: Atomicidad, o sea que una transaccion se debe completar todo o deshacer
> toda, no pueden quedar cosas a medias.
> C: Concurrencia, se deben poder ejecutar mas de una transaccion
> concurrentemente.
> I: Isolation o aislamiento, una transaccion no debe interferir con la otra.
> D: Durabilidad, cuando una transaccion se compremote, los cambios son
> persistentes.
>
> Ahora, el aislamiento entre transacciones (isolation) es configurable, el
> standard de SQL define 4 isolations level, y en la mayoria de los motores
> implementan solo algunos de esos. Incluso algunos de forma diferente. Loa
> cuatro tipo de isolation son READ COMMITTED, DIRTY READ, REPETEABLE READ y
> el cuarto no lo recuerdo.
>
> El tema es que, por ejemplo si usas READ COMMITTED, una transaccion no ve
> los cambios hechos por otra, hasta que esta no los halla comprometido.
>
> entonces en la transaccion 1 se hace un insert, en la tabla persona:
> INSERT INTO PERSONA VALUES("german");
>
> si la transaccion 2 realiza un select de la tabla persona, no va a ver el
> registro de german:
> SELECT * FROM PERSONA;
>
> recien cuando la transaccion 1 haya realizado el COMMIT, la transaccion
> podra ver el registro. Tambien debes tener cuidado con motores como Firebird
> ya quefunciona algo diferente a otros motores. En motores como PostgreSQL,
> MySQL, SQLite funcionan de forma standard y solo se inicia una transaccion
> de forma explicita con START TRANSACCION. En cambio en Firebird siempre se
> inicia una transaccion de forma implicita quieras o no.
> Espero que algo de lo que dije sirva, igual deberias leer la doc de tu
> motor de base de datos, ya que cada uno es un mundito aparte.
> Saludos.
>
>
> 2008/11/11 Usuario Anónimo <usuarioanonimomysql en gmail.com>
>
>> ¿Lo puedes ilustrar con un ejemplo?
>>
>> Gracias.
>>
>> El 11 de noviembre de 2008 19:08, Tejero, Carlos German <
>> german.tejero en gmail.com> escribió:
>>
>>> Si estas usando dos transacciones diferentes deberias chequear el
>>> isolation level que estas usando y si has comiteado la transaccion de
>>> modificacion antes de realizar el refresh de la de consulta.
>>> Saludos.
>>>
>>> El mar, 11-11-2008 a las 17:41 +0100, Usuario Anónimo escribió:
>>>
>>>  > No lo se, a ver si alguien nos saca de dudas.
>>> >
>>> > Saludos.
>>> >
>>> >
>>> >
>>> > El 11 de noviembre de 2008 18:14, Markisich Emiliano
>>> > <markisoft en yahoo.com.ar> escribió:
>>> >         Si pero no lo actualiza por eso preguntaba si hay que hacer
>>> >         algo mas,
>>> >         aparte de SQLQuery1.Refresh
>>> >
>>> >         Usuario Anónimo escribió:
>>> >         > ¿Has probado con SQLQuery1.Refresh;?
>>> >         >
>>> >         > 2008/11/11 Markisich Emiliano <markisoft en yahoo.com.ar
>>> >
>>> >         > <mailto:markisoft en yahoo.com.ar>>
>>> >         >
>>> >         >     tengo dos ventanas una de listado y otra que se abre
>>> >         para dar un ALTA,
>>> >         >     cada ventana tiene su transaccion.
>>> >         >     el problema es que cuando doy de alta un registro no se
>>> >         actualiza
>>> >         >     en la
>>> >         >     ventana de listado, para esto en delphi hacia un refresh
>>> >         en la
>>> >         >     query del
>>> >         >     listado
>>> >         >
>>> >         >     esto lo puedo solucionar desactivando y volviendo a
>>> >         activar el query
>>> >         >     pero en la ventana desaparecen los datos y vuelven a
>>> >         aparecer,
>>> >         >     queda feo
>>> >         >     y ademas pierdo el registro seleccionado porque vuelve
>>> >         el puntero al
>>> >         >     primer registro.
>>> >         >
>>> >         >     ¿se entiende?
>>> >         >
>>> >         >      sqListado.Refresh;
>>> >         >
>>> >         >
>>> >         >     Saludos
>>> >         >
>>> >         >     Usuario Anónimo escribió:
>>> >         >     >
>>> >         >     > ¿Puedes poner un ejemplo de refresh? ¿Para que sirve?
>>> >         ¿Te refieres a
>>> >         >     > un refetch data?
>>> >         >     >
>>> >         >     > Saludos.
>>> >         >     >
>>> >         >     >
>>> >         >     > 2008/11/11 Markisich Emiliano <markisoft en yahoo.com.ar
>>> >         >     <mailto:markisoft en yahoo.com.ar>
>>> >
>>> >         >     > <mailto:markisoft en yahoo.com.ar
>>> >         <mailto:markisoft en yahoo.com.ar>>>
>>> >         >     >
>>> >         >     >     Hola, ¿ me podrian explicar como hacer un refresh
>>> >         con este
>>> >         >     componente?
>>> >         >     >     si es que funciona.
>>> >         >     >
>>> >         >     >     Gracias!!
>>> >         >     >     _______________________________________________
>>> >         >     >     Lazarus-es mailing list
>>> >         >     >     Lazarus-es en lazarus.freepascal.org
>>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>
>>> >         >     >     <mailto:Lazarus-es en lazarus.freepascal.org
>>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>>
>>> >         >     >
>>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>> >         >     >
>>> >         >     >
>>> >         >     >
>>> >         >
>>> >
>>> ------------------------------------------------------------------------
>>> >         >     >
>>> >         >     > _______________________________________________
>>> >         >     > Lazarus-es mailing list
>>> >         >     > Lazarus-es en lazarus.freepascal.org
>>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>
>>> >         >     >
>>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>> >         >     >
>>> >         >
>>> >         >     _______________________________________________
>>> >         >     Lazarus-es mailing list
>>> >         >     Lazarus-es en lazarus.freepascal.org
>>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>
>>> >         >
>>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>> >         >
>>> >         >
>>> >         >
>>> >
>>> ------------------------------------------------------------------------
>>> >         >
>>> >         > _______________________________________________
>>> >         > Lazarus-es mailing list
>>> >         > Lazarus-es en lazarus.freepascal.org
>>> >         >
>>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>> >         >
>>> >
>>> >         _______________________________________________
>>> >         Lazarus-es mailing list
>>> >         Lazarus-es en lazarus.freepascal.org
>>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>> >
>>> >
>>> > _______________________________________________
>>> > Lazarus-es mailing list
>>> > Lazarus-es en lazarus.freepascal.org
>>> > http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>> _______________________________________________
>>> Lazarus-es mailing list
>>> Lazarus-es en lazarus.freepascal.org
>>> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lazarus.freepascal.org
>> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>>
>
>
> --
> Carlos Germán Tejero
>
> ------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>


-- 
Carlos Germán Tejero
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20081112/35f1cf9b/attachment-0001.html>


More information about the Lazarus-es mailing list