No no est�n mal, dentro de la base de datos tengo defino el procedimiento de la siguiente forma:
SET TERM ^ ;
CREATE PROCEDURE PU_EAUM (
VCH_ENTIDAD Varchar(7),
VCH_UM Varchar(7) )
AS
begin
/* Procedimiento para modificar las unidades de medidas */
update eaum set um=:vch_um where ((eaum.entidad)=:vch_entidad);
end^
SET TERM ; ^
GRANT EXECUTE
ON PROCEDURE PU_EAUM TO SYSDBA;
Y lo llamo en Lazarus de la siguiente forma: execute procedure pu_eaum(:entidad, :um)
El nombre de los par�metros en Lazarus no tienen que ser igual al nombre de los par�metros dentro de la BD de firebird, lo que importa es el orden en que pases los par�metros.
:entidad y :um son los nombres de los par�metros dentro de Lazarus y vch_entidad y vch_um dentro de la BD y tanto es as� que el de insertar me funciona perfecto y lo tengo de la siguiente manera:
execute procedure pi_eaum(:entidad, :um)
mientras que dentro de la BD est� de la siguiente forma: SET TERM ^ ;
CREATE PROCEDURE PI_EAUM (
VCH_ENTIDAD Varchar(7),
VCH_UM Varchar(7) )
AS
begin
/* Procedimiento para agregar las unidades de medidas */
insert into eaum (entidad, um) values (:vch_entidad, :vch_um);
end^
SET TERM ; ^
GRANT EXECUTE
ON PROCEDURE PI_EAUM TO SYSDBA;
Con esa misma tabla y esos mismos par�metros creo un ejemplo en Visual Basic y funciona perfecto.
Disc�lpenme por mi respuesta, pero cr�enme aunque no conozco nada de Delphi ni de Lazarus, pero llevo m�s de 15 a�os trabajando en la l�nea de Microsoft y mis conocimientos sobre bases de datos y dem�s no son pocos que digamos.
Mis m�s sinceros saludos a todos y aun mucho m�s a los que me han ayudado o intentado ayudar en el mundo de Lazarus y del soft libre. =========
|| ISMAEL ||
=========
Earlier message 26 lines
----- Original Message -----
From: "Maxi" <maximiliano.duarte en gmail.com>
To: "Spanish version of Lazarus List"
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Tuesday, March 16, 2010 1:24 PM
Subject: Re: [Lazarus-es] Error al actualizar
tenes mal los parametros o los pasaste a la lista incorrectamente
en el procedimiento definiste:
pu_eaum(:entidad, :um)
y en el sql pones como parametros :vch_um y :vch_entidad
update eaum set um=:vch_um where ((eaum.entidad)=:vch_entidad);
No creo que ande nunca asi.
--
Maximiliano Duarte
Linux User #495070
Ubuntu User #28504
Tolerancia significa disculpar los defectos de los dem�s; tacto, no
reparar en ellos.