[Lazarus-es] Error de FlameRobin? o error de Lazarus?

francisco prieto fajprieto en gmail.com
Vie Mayo 22 22:40:38 CEST 2015


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ó:

>  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.orghttp://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.orghttp://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-ide.org/pipermail/lazarus-es/attachments/20150522/f1865deb/attachment-0002.html>


More information about the Lazarus-es mailing list