Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-07-2007
gaia gaia is offline
Registrado
 
Registrado: jul 2007
Posts: 2
Poder: 0
gaia Va por buen camino
Smile 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
Responder Con Cita
  #2  
Antiguo 28-07-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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.
__________________


Última edición por ContraVeneno fecha: 28-07-2007 a las 00:32:02.
Responder Con Cita
  #3  
Antiguo 29-07-2007
gaia gaia is offline
Registrado
 
Registrado: jul 2007
Posts: 2
Poder: 0
gaia Va por buen camino
Smile

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.
Responder Con Cita
  #4  
Antiguo 30-07-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimiento almacenado desde Delphi hmv MS SQL Server 6 07-01-2010 00:02:05
Procedimiento almacenado efelix MS SQL Server 7 21-11-2007 18:53:00
Procedimiento Almacenado egostar Firebird e Interbase 4 15-12-2006 03:04:07
Procedimiento almacenado LucianoRey MS SQL Server 2 23-08-2005 01:37:06
Mostrar valor de DBEDIT con Procedimiento Almacenado JoanKa Firebird e Interbase 3 05-06-2005 12:10:35


La franja horaria es GMT +2. Ahora son las 16:57:22.


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
Copyright 1996-2007 Club Delphi