[Lazarus-es] Concectividad a bases de Datos

Ismael L. Donis García ismael en citricos.co.cu
Jue Nov 4 22:16:04 CET 2010


El lío está por el código que empleaste para mi entender, no por errores de 
implementación. Al menos es lo que veo.

Además no necesitas SQLTransaction2.Commit; ya que no has editado nada con 
ese query.

No podremos esperar que nos salga todo bien si ponemos cosas mal en el 
código.


Mis más sinceros saludos
=========
|| ISMAEL ||
=========
----- Original Message ----- 
From: "Claudio Romero" <clauslack en gmail.com>
To: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Thursday, November 04, 2010 2:49 PM
Subject: Re: [Lazarus-es] Concectividad a bases de Datos


Funciona, pero no del modo correcto

Aqui hay un ejemplo
http://bugs.freepascal.org/view.php?id=12956

**--
procedure TForm1.Button1Click(Sender: TObject);
begin
    //without try .. finally ..
    //for this example uses table p_ucm_a with blob field in linux firebird
    //I Use a BLOB field, because before this issue caused 'Invalid BLOB ID'
    if not opendialog1.Execute then exit;
    IBConnection1.open;
    //--
    if SQLTransaction1.Active then 
showmessage('SQLTransaction1.active=true')
    else showmessage('SQLTransaction1.active=false');
    if SQLTransaction2.Active then 
showmessage('SQLTransaction2.Active=true')
    else showmessage('SQLTransaction2.Active=false');
    SQLQuery2.close;
    SQLQuery2.sql.clear;
    SQLQuery2.sql.add('select * from p_ucm_a');
    SQLQuery2.Transaction:= SQLTransaction2;
    if not SQLTransaction2.active then SQLTransaction2.StartTransaction;
    SQLQuery2.open;
    //--
    if SQLTransaction1.Active then showmessage('After SELECT
(SqlQuery2) SQLTransaction1.Active=true')
    else showmessage('After SELECT (SqlQuery2) 
SQLTransaction1.Active=false');
    if SQLTransaction2.Active then showmessage('After SELECT
(SqlQuery2) SQLTransaction2.Active=true')
    else showmessage('After SELECT (SqlQuery2) 
SQLTransaction2.Active=false');
    SQLQuery1.close;
    SQLQuery1.sql.clear;
    SQLQuery1.sql.add('update p_ucm_a set memo=:memo where clave_adhe=4');
    SQLQuery1.Transaction:=SQLTransaction1;
    SQLQuery1.params.paramByName('memo').LoadFromFile(opendialog1.filename,ftBlob);
    if not SQLTransaction1.active then SQLTransaction1.StartTransaction;
    SQLQuery1.ExecSQL;
    SQLTransaction1.Commit;
    SQLTransaction2.Commit;
    //
end;

*--

La segunda consulta usa la primera transacción, en vez de la segunda
transacción. Lo que da unos lios terribles en algunos casos, yo tenia
errores cuando maneja BLOBs.

_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es






More information about the Lazarus-es mailing list