[Lazarus-es] Sobre TSQLQuery
Ismael L. Donis García
ismael en citricos.co.cu
Mie Mar 10 16:10:37 CET 2010
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 ||
=========
----- 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
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
More information about the Lazarus-es
mailing list