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

Ismael L. Donis Garcia slibre en citricos.co.cu
Vie Mayo 22 22:23:42 CEST 2015


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 
  To: Spanish version of Lazarus List 
  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 
      To: Spanish version of Lazarus List 
      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 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


    _______________________________________________
    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/5dfcb27e/attachment-0002.html>


More information about the Lazarus-es mailing list