[Lazarus-es] Ingresar datos directamente en un grid

Ismael L. Donis García ismael en citricos.co.cu
Mar Nov 23 15:11:30 CET 2010


No trabaja en otra transacción, son pruebas que estoy realizando antes de empezar un proyecto y solo tengo una transacción.
Y si verifico que exista una transacción activa, tengo el siguiente código. Pero tengo entendido que el grid debe activar la transacción ella misma cuando entre en edición.

procedure Tdm.rsAfterPost(DataSet: TDataSet);
begin
  try
    if not tra.Active then tra.StartTransaction;
    rs.ApplyUpdates;
    tra.CommitRetaining;
  except on e:exception do
    begin
      Application.MessageBox(pchar(e.Message), pchar('Error'), 0);
    rs.CancelUpdates;
    end;
  end;
end;

La tabla tiene 2 campos idorg y nombre, pero el campo idorg le asigno los datos en la capa de datos y tengo un procedimiento almacenado que menciono abajo y en el tigger verifico si el valor del campo es nulo, lo cual va a ser cierto y le asigno el valor en el mismo, todo esto dentro de la capa de datos por lo que es transparente a la aplicación.

Quiero teclear los datos directo en la grilla y al dar enter si estoy en la última fila me pase para insertar una nueva, en caso de no estar en la última cuando de enter me deje mover el cursor para la próxima. Esto es algo en lo que estoy enredado.

Cualquier ayuda será bienvenida.

Saludos cordiales.
=========
|| ISMAEL ||
=========
  ----- Original Message ----- 
  From: José Antonio Cuello 
  To: Spanish version of Lazarus List 
  Sent: Tuesday, November 23, 2010 2:33 AM
  Subject: Re: [Lazarus-es] Ingresar datos directamente en un grid


  Hola, no será que el componente trabaja sobre una transacción y el procedimiento y trigger trabajan sobre otra transaccion? 
  Una pregunta, abres una transacción antes de ejecutar el post en el TDataset?

  Pregunto para hacerme una idea de como puede estar trabajando el insert sobre la base de datos.
  Un saludo.


------------------------------------------------------------------------


        ARTEX TRADING S.A.
        José Antonio Cuello Principal



       
  El lun, 22-11-2010 a las 16:36 -0500, Ismael L. Donis García escribió: 
    Estoy tratando que ingresar datos directamente sobre un grid, pero me da error el cual me dice que la llave primaría es requerida pero realmente yo la lleno en el tigger por lo que no debería dar ese error, es más si lo mando a ejecutar en consola funciona perfecto al igual que desde otros lenguajes de programación, solo en Lazarus es donde estoy enredado. 
     
    uso Firebird, TIBConnection, TSQLTransaction, TSQLQuery, TDataSource y TDBGrid 
     
    Tengo las siguientes propiedades: 
    InsertSQL := execute procedure pi_scorg(:NEW_nombre)  
    DeleteSQL := execute procedure pd_scorg(:OLD_idorg) 
    UpdateSQL := execute procedure pu_scorg(:OLD_idorg, :NEW_nombre) 
     
    El procedimiento pi_scorg como: 
     
    DECLARE VARIABLE INT_ID INTEGER; 
    BEGIN
      /* Procedimiento para agregar los organismos */
      select a.idorg from scorg a where (a.nombre = :vch_nombre) into :int_id;
      if (int_id is null) then
        insert into scorg (nombre) values (:vch_nombre);
      else
        exception e_org_e;
    END 
     
    Y un tigger Before Insert como: 
     
      if (new.idorg is null) then
          new.idorg = gen_id(gen_scorg_id, 1);   
     
    Saludos 
    =========
    || ISMAEL ||
    ========= 
_______________________________________________
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/20101123/d7b230f8/attachment-0002.html>


More information about the Lazarus-es mailing list