Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   mostrar resultado de procedimiento almacenado en delphi (https://www.clubdelphi.com/foros/showthread.php?t=46292)

gaia 27-07-2007 22:39:12

mostrar resultado de procedimiento almacenado en delphi
 
Saludos a todos los miembros del foro

Estoy desarrollando una aplicación en delphi y el gestor de Base de datos que utilizo es SQL Server 2000

Tengo un procedimiento almacenado como el siguiente:

CREATE procedure ejemplo @num int, @tot float output
As
select fecha, nombre
from tabla
where (numero = @num)

set @tot = (select sum (monto)
from tabla
where (numero = @num)

Ejecutando este procedimiento en el analizador de consultas, devuelve todos los valores correctamente.

El código que uso en delphi es:

with DataModule1.SPejemplo do
begin
Prepare;
ParamByName('@num').AsString := Edit1.Text;
ExecProc;
Edit2.Text := ParamByName('@tot').AsString;
end;

utilizo la conexión ODBC

Mi problema es el siguiente:
Muestro los valores devueltos por el select en un dbgrid (hasta aqui todo bien), pero cuando deseo mostrar el valor de la variable @tot en un edit, sólo me muestra '0', no genera ningún error.

No sé qué está mal o cuál es el error que estoy cometiendo.

Agradezco de antemano, cualquier ayuda, comentario o referencia que puedan brindarme.

Gaia

ContraVeneno 27-07-2007 23:29:19

Yo tenía el mismo problema y lo solucioné declarando la variable como variable de salida, es decir:

Código SQL [-]
Create.....
@Tot Money output
...
Select.....

Y en delphi, utilizando un componente TSDStoredProcedure (librería SQLDirect):
Código Delphi [-]
 with datamod1.SPTotal do begin
  if active then close;
  Prepare;
  ParamByName('@Tot').AsFloat:=0.0;
  Prepare;
  ExecProc;
  GetResults;
  Open;
  edtTotal.AsCurrency := ParamByname('@Tot').AsCurrency;
  Close;
  UnPrepare;
 end; //with


Si, ya se que estoy repitiendo instrucciones "Prepare" y luego Execpro seguido de un GetResults... a mi no me parece lógico que lo tenga que hacer así, pero le intenté de muchas formas y solo así es como por fin pude ver el resultado.

Ojala y algún experto en el tema, pueda ilustrarme.

gaia 29-07-2007 00:41:10

Gracias por la ayuda que me das y por supuesto, por responder tan rápido. Estoy averiguando acerca de TSDStoredProcedure y la librería SQLDirect, que la verdad hasta el momento no tenía idea que existía.

Otra pregunta, este error se puede deber al tipo de conexión que tengo? (ODBC), ADO tiene este problema?

Gracias nuevamente.

ContraVeneno 30-07-2007 16:41:20

SQLDirect son componentes de pago, pero los mencioné porque son los que estoy utilizando y de esa manera funciona. Esto lo mencioné tambien para que consideraras de que puede cambiar la forma de utilizarse cuando usas componentes ADO, vamos, que era solo referencia.

No se si ado tenga problemas respecto a los procedimientos almancenados, en teoría, no debería haber ningún problema cuando se configura bien la conexión y cuando todo esta bien programado.


La franja horaria es GMT +2. Ahora son las 13:25:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi