Yo tengo:
SQLQuery.SQL := 'select eaum.um, eaum.entidad from eaum where
eaum.entidad=:entidad order by eaum.um'
SQLQuery.DeleteSQL := 'execute procedure pd_eaum(:entidad, :um)' //delete
from eaum where (((eaum.entidad)=:vch_entidad) and ((eaum.um)=:vch_um));
SQLQuery.InsertSQL := 'execute procedure pi_eaum(:entidad, :um)'
//insert into eaum (entidad, um) values (:vch_entidad, :vch_um);
SQLQuery.UpdateSQL := 'execute procedure pu_eaum(:entidad, :um)' //update
eaum set um=:vch_um where ((eaum.entidad)=:vch_entidad);
En la grilla tengo creada los 2 �nicos campos que tiene la tabla (entidad y um)
Y en el evento KeyUp de la grilla tengo (lo tengo en el KeyUp porque el KeyPress no funciona, tambi�n prob� el KeyPress del formulario y tampoco funciona para el enter)
if Key = 13 then
if (not dbgum.DataSource.DataSet.EOF) or (dbgum.DataSource.DataSet.State
in dsEditModes) then
begin
if length(rsum.FieldByName('um').AsString) = 0 then
begin
cmdcerrar.SetFocus;
key:=0;
end
else
begin
key:=0;
if dbgum.DataSource.DataSet.State in dsEditModes then
dbgum.DataSource.DataSet.Post;
if dbgum.SelectedIndex < dbgum.DataSource.DataSet.FieldCount - 1
then
dbgum.SelectedIndex := dbgum.SelectedIndex + 1
else
dbgum.DataSource.DataSet.Append;
end;
end
else
begin
cmdcerrar.SetFocus;
key:=0;
end;
Con eso pretendo (pretendo porque no lo he logrado) que cuando termine de llenar la celda y de enter me actualice la tabla y autom�ticamente me abra otra fila de la grilla para agregar otro registro a la tabla.
Si alguien de la lista me puede ayudar en ello le paso un peque�o ejemplo a su preivado, la base de datos est� en Firebird 2.1.3
JoshyFun ambos sabemos que me has ayudado grandemente, al punto que m�s del 60% de mis conocmientos de Lazarus te los debo, pero la verdad en estos d�as he estado presionado por el tiempo sin lograr abanzar nada.
Repito no quiero, ni pretend� ofender a nadie, y mucho menos a ti JoshyFun que te debo grandemente por toda la ayuda y tus conocimientos que me has brindado. Solo que me parece que he tratado de entrar de lleno en un soft que aun no est� maduro en su totalidad, por lo que estoy pagando sus consecuencias.
Saludos a todos
=========
|| ISMAEL ||
=========
Earlier message 60 lines
----- Original Message -----
From: "JoshyFun" <joshyfun en gmail.com>
To: "Spanish version of Lazarus List"
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Tuesday, March 09, 2010 5:29 PM
Subject: Re: [Lazarus-es] Sobre TSQLQuery
Hello Ismael,
Tuesday, March 9, 2010, 10:17:20 PM, you wrote:
ILDG> Lo creo a mano y salvo, cuando cierro el proyecto y lo vuelvo a abrir,
ILDG> abolina el par�metro, se pierde, no lo guarda.
Hmmm... eso ya si que no me parece l�gico...
ILDG> Y cuando trato de ejecutar, me ejecuta el SQL, no el InsertSQL. Adem�s
como
ILDG> diferencio entre si quiero ejecutar InsertSQL, DeleteSQL o UpdateSQL?
Eso no lo decides tu, lo decide por ejemplo el DBGrid o mejor dicho el
recordset. Si en el recordset haces un "rs.append" por ejemplo cuando
hagas el post se realizar� autom�ticamente un InsertSQL (lo que ser�a
un append). Si haces un "rs.delete" para borrar un registro, el
SQLQuery invocar� el "DeleteSQL", etc...
Resumiendo, tu trabajas con el recordset, de modo que cuando en el
recorset haces un:
Open, Refresh
Se invoca el SQLQuery.SQL
Delete
Se invoca el SQLQuery.DeleteSQL
Insert, Append
Se invoca el SQLQuery.InsertSQL
Modificar un registro, y post
Se invoca el SQLQuery.UpdateSQL
En el SQLQuery puedes definir campos que no est�n presentes en el
recordset f�sico del SQLQuery, pero que de un modo u otro necesitar�s,
como para "simular" par�metros. Eso lo haces pulsando con el bot�n
derecho sobre SQLQuery y "definir campos". Ah� puedes meter los del
SQLQuery y m�s, o eliminar alguno que no necesites.
ILDG> Disculpa la frase, pero la verdad que me dan ganas de olvidarme de su
ILDG> existencia despu�s de pasarme los d�as hurgando sin tener literatura
que te
ILDG> explique algo y con un lista con muy poca ayuda.
Ya :(
--
Best regards,
JoshyFun