[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