Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-11

Ingresar datos directamente en un grid

5 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis García

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 ||
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101122/c5853f19/attachment-0001.html>

Reply by email

José Antonio Cuello
to Ismael L. Donis García

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

Show quoted text 42 lines
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

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101123/b08a685e/attachment.html>

Reply by email

Ismael L. Donis García
to José Antonio Cuello

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 ||
=========

Earlier message 54 lines
----- 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 || =========

Reply by email

José Mejuto
to Ismael L. Donis García: Estoy tratando que ingresar datos directamente sobre un grid, pero me da error el cual me…

Hello Ismael,

Monday, November 22, 2010, 10:36:13 PM, you wrote:

ILDG> Estoy tratando que ingresar datos directamente sobre un ILDG> grid, pero me da error el cual me dice que la llave primar�a es ILDG> requerida pero realmente yo la lleno en el tigger por lo que no ILDG> deber�a dar ese error, es m�s si lo mando a ejecutar en consola ILDG> funciona perfecto al igual que desde otros lenguajes de ILDG> programaci�n, solo en Lazarus es donde estoy enredado.

Nunca se me ha dado el caso, pero puede ser que ese campo lo tengas exportado en el QueryFields y tenga la propiedad "Required" a true ?

Best regards, Jos�

Reply by email

Ismael L. Donis García
to José Mejuto

Gran Maestro excelente tiro.

1 Mill�n de gracias.
=========
|| ISMAEL ||
=========

Earlier message 27 lines
----- Original Message ----- From: "Jos� Mejuto" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, November 23, 2010 11:07 AM Subject: Re: [Lazarus-es] Ingresar datos directamente en un grid Hello Ismael, Monday, November 22, 2010, 10:36:13 PM, you wrote: ILDG> Estoy tratando que ingresar datos directamente sobre un ILDG> grid, pero me da error el cual me dice que la llave primar�a es ILDG> requerida pero realmente yo la lleno en el tigger por lo que no ILDG> deber�a dar ese error, es m�s si lo mando a ejecutar en consola ILDG> funciona perfecto al igual que desde otros lenguajes de ILDG> programaci�n, solo en Lazarus es donde estoy enredado. Nunca se me ha dado el caso, pero puede ser que ese campo lo tengas exportado en el QueryFields y tenga la propiedad "Required" a true ? -- Best regards, Jos�

Reply by email