Lo acabo de corregir... el codigo quedo asi...
procedure TfrmConfCom.btnBorrarClick(Sender: TObject);
var
lcSql,lcError:string;
lnFilasAfec:integer;
begin
lcSql:='DELETE FROM BALCONF'+
' WHERE IDCONF='+IntToStr(lnIdAct);
try
try
tAccionSql.Active:=False;
tAccionSql.StartTransaction;
qAccionSql.SQL.Text:=lcSql;
qAccionSql.ExecSQL;
lnFilasAfec:=qAccionSql.RowsAffected;
tAccionSql.Commit;
except on e:exception do
begin
lnFilasAfec:=0;
lcError:=e.Message;
tAccionSql.Rollback;
end;
end;
finally
tAccionSql.EndTransaction;
end;
qAccionSql.Close;
UpdRegistros('BalConf');
if llHayRegistros then
IrA('>|','BalConf','','IdConf')
else
begin
HabilitarMod(False);
UpdVisibilidad(False);
end;
end;
Notar que antes de StartTransaction pongo Active en False. Que seg�n he le�do es como poner EndTransaction y creo que esto se debe a que cuando hago una consulta debo hacer un endTransaction, porque se abre una implicitamente aunque el Action este en CANone
Pero de todos modos pienso que el error era que el qActionSQL tenia asociado como objeto de transacci�n el que esta en el modulo de datos.
Es decir mi idea original era solo tener el objeto de transacci�n en el modulo de datos pero no me tomaba el objeto de transacci�n en el modulo de datos as� que para grabar puse otro en el formulario...
Me parece que lo l�gico es no tener dos objetos de transacci�n, pero bueno as� anda...
Ustedes como lo usan al objeto de transacci�n ponen uno por formulario o lo llaman desde el modulo de datos y si usan este ultimo caso como hacen para que se los tome...
Saludos y Gracias,
Pancho
C�rdoba
Argentina
El vie., 22 may. 2015 a las 17:28, Ismael L. Donis Garcia (< slibre en citricos.co.cu>) escribi�:
Show quoted text 257 lines
Me podr�as pasar un ejemplo simplificado al pribado? Un peque�ito
programa con una tabla que se te reprodusca el problema.
Para poderte depurar el error.
Saludos Reiterados
========
| ISMAEL |
========
Only for the small landowners and Cubans companies
Website: www.sisconge.byethost15.com
www.sisconge.hol.es
----- Original Message -----
*From:* francisco prieto <fajprieto en gmail.com>
*To:* Spanish version of Lazarus List
<lazarus-es en lists.lazarus.freepascal.org>
*Sent:* Friday, May 22, 2015 3:36 PM
*Subject:* Re: [Lazarus-es] Error de FlameRobin? o error de Lazarus?
No, no anda....
Sigo con el mismo error...
La rutina la puse as� en el bot�n de borrado.
procedure TfrmConfCom.btnBorrarClick(Sender: TObject);
var
lcSql,lcError:string;
lnFilasAfec:integer;
begin
lcSql:='DELETE FROM BALCONF'+
' WHERE IDCONF='+IntToStr(lnIdAct);
try
try
tAccionSql.StartTransaction;
qAccionSql.SQL.Text:=lcSql;
qAccionSql.ExecSQL;
lnFilasAfec:=qAccionSql.RowsAffected;
tAccionSql.Commit;
except on e:exception do
begin
lnFilasAfec:=0;
lcError:=e.Message;
tAccionSql.Rollback;
end;
end;
finally
tAccionSql.EndTransaction;
end;
1) Ejecuto el programa...
2) Me posiciono en el registro que quiero borrar.
3) Presiono el bot�n de borrar
4) Entro a FlameRobin
5) Ejecuto una consulta de la tabla y aparecen todos los registros incluso
el reci�n eliminado.
6) Cierro mi programa.
7) Vuelvo a ejecutar la consulta de la tabla con FlameRobin y ahora si el
registro fue eliminado.
Pueden indicarme donde esta el error.
Saludos y Gracias,
Pancho
C�rdoba
Argentina
El vie., 22 may. 2015 a las 9:28, Ismael L. Donis Garcia (<
slibre en citricos.co.cu>) escribi�:
> Eso mismo fue lo que le puse en el mensaje anterior, aunque no se lo
> dije esplicitamente, se te fijas en su c�digo el no finaliza la
> transacci�n, y como yo le dije que lo hiciera si est� la finalizaci�n de la
> transacci�n adem�s de ponerlo dentro de un try para validar la opraci�n lo
> cual a mi entender siempre se debe comprobar al operar con datos, incluso
> yo devuelvo siempre variales donde controlo el error y las filas afectadas
> por las operaciones de la siguiente forma: "un pedazo del codigo que
> utilizo"
>
> try try
> trausc.StartTransaction;
> rsusc.ExecSQL;
> intfilas := rsusc.RowsAffected;
> trausc.Commit;
>
> except on e:exception do
> begin
> intfilas := 0;
> strerror := e.Message;
> trausc.Rollback;
> end;
> end;
> finally
> trausc.EndTransaction;
> end;
> Por lo que al final de la operaci�n siempre verifico el valor de la
> variable intfilas
>
> Tambien uso Firebird con los componentes nativos de Lazarus y nunca he
> tenido problema alguno. Para mi tanto los componentes nativos de Lazarus
> como Firebird son excelentes. Yo no veo necesidad alguna de usar zeus con
> Firebird.
>
> Saludos Reiterados
> ========
> | ISMAEL |
> ========
> Only for the small landowners and Cubans companies
> Website: www.sisconge.byethost15.com
> www.sisconge.hol.es
>
> ----- Original Message -----
> *From:* Iv�n Mesa <iv.mesa.prg en gmail.com>
> *To:* Spanish version of Lazarus List
> <lazarus-es en lists.lazarus.freepascal.org>
>
> *Sent:* Thursday, May 21, 2015 5:16 PM
> *Subject:* Re: [Lazarus-es] Error de FlameRobin? o error de Lazarus?
>
> Yo normalmente trabajo con Zeos y con SP en firebird.
> El commit refresca bien los datos en FlameRobin.
> F�jate que no tengas abierta una transacci�n en flame robin. Por ejemplo,
> si ejecutas una select en FR, se abre una transacci�n, si no la cierras, y
> actualizas desde tu aplicaci�n, no ver�s los cambios en FR hasta que
> finalices la transacci�n abierta con select.
> Al menos eso es lo que yo puedo apreciar.
> Suerte!!!
>
> El 21/05/2015 a las 22:31, francisco prieto escribi�:
>
> Ismael lee el codigo por favor...
>
> Mi codigo es este.
>
> lcSql:='Update Contador Set Ultimo=Ultimo+1 Where NomClave=''BALCONF''
> and Clave=''IDCONF''';
> tAccionSql.StartTransaction;
> qAccionSql.SQL.Text:=lcSql;
> qAccionSql.ExecSQL;
> tAccionSql.Commit;
>
> Lee La ultima linea... dice claramente Commit...
>
> Si la cambio por CommitRetain sigue dando el mismo error... es decir
> hasta que no salgo de la aplicacion no se actualiza en FlameRobin...
>
> Debe haber otro error.
>
> Saludos,
>
> Pancho
>
>
> El jue., 21 may. 2015 a las 17:19, francisco prieto (<fajprieto en gmail.com>)
> escribi�:
>
>> No se si leistes mis respuestas pero precisamente uso transacciones
>> y estas no se reflejan hasta no cerrar la aplicacion.
>>
>> Estoy viendo ahora el CommitRetain que comenta Lewis, pero la info
>> aclara que esto es para no tener que volver a abrir una nueva transaccion,
>> es decir se deberia usar esto para decirle al motor hasta aca esta bien...
>> aun la transaccion sigue...
>>
>> En fin voy a seguir investigando, vi que en Delphi alguien posteo algo
>> parecido...
>>
>>
>>
http://delphiaccess.com/foros/index.php/topic/11485-finalizar-transacci%C3%B3n-delphi-firebird/
>>
>> Lamentablemente si bien le dijeron que pruebe algo no dice si se
>> soluciono...
>>
>> Debe ser algo muy pavo, porque si uso el firebird desde vfp este
>> problema no existe... lo cual me indica que es un problema de programacion
>> en FreePascal...
>>
>> Los mantengo informados,
>>
>> Saludos,
>>
>> Pancho
>>
>> El jue., 21 may. 2015 a las 16:57, Iv�n Mesa (<iv.mesa.prg en gmail.com>)
>> escribi�:
>>
>>> Quiz�s sea porque no usas transacciones.
>>> En flamerobin cuando ejecutas una actualizaci�n terminas la transacci�n
>>> con un commit (f5)
>>> Haz lo mismo desde lazarus o desde tus procedimientos almacenados.
>>> Saludos.
>>>
>>>
>>>
>>> El 21/05/2015 a las 21:03, francisco prieto escribi�:
>>>
>>> Grupo,
>>>
>>> Estoy con un CRUD que me tiene loco...
>>>
>>> Realizo una modificacion en mis datos y hasta que no cierro el exe o
>>> termino mi sesion de pruebas no se actualiza en FlameRobin...
>>>
>>> A alguien le paso?
>>>
>>> Como lo solucion�?
>>>
>>> Saludos,
>>>
>>> Pancho
>>> C�rdoba
>>> Argentina
>>>
>>>
>>> _______________________________________________
>>> Lazarus-es mailing listLazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>>
>>> _______________________________________________
>>> Lazarus-es mailing list
>>> Lazarus-es en lists.lazarus.freepascal.org
>>>
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>
>
> _______________________________________________
> Lazarus-es mailing listLazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> ------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
>
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
>
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
------------------------------
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20150522/f1865deb/attachment-0001.html>