Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Smile Como obtengo los datos con un procedimiento almacenado

Hola

He realizado un procedimiento almancenado , que funciona dentro de interbase .
es un procedimiento de selección , es decir , recibe dos datos : fecha y almacen y devuelve el articulo y la cantidad .

Estoy con interbase , he puesto un compenente TIBStoredProc , llamado SPStock , ligado a la base de datos , al transaction y en la propiedad StoredProcName he encontrado el procedimiento almancenado .

Luego pongo un botón y pongo lo siguiente

Código Delphi [-]
SPStock.Prepare;
SPStock.ParamByName('fecha').AsDateTime := fechainput;
SPStock.ParamByName('almacen').AsDateTime := almaceninput;
SPStock.ExecProc;

El caso es que ligo un datasource con el TIBStoredProc , pero no hace nada , además el procedimiento tenia que tardar un rato en ejecutarse y lo hace muy rapido sin hacer nada .

Me gustaria con que componentes de la paleta de interbase y se hace funcionar un procedimiento de selección , para que salgan los datos en un DBGrid.

Un saludo
Responder Con Cita
  #2  
Antiguo 21-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Usa un Query en lugar del TIBStoredProc. la sql igual que si fuera una tabla pero con parámetros:
Código SQL [-]
select * from MiSP(:fecha, :almacen);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 21-05-2007
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Si es un procedimiento de selección, lo más sencillo es usar un tIBQuery en vez del componente tIBStoredProc.
Tendrás que asociarle el tIBQuery a un datasource enlazado con un dbgrid para ver los datos.

En la propiedad SQL del tIBQuery, le pones la sentencia SELECT que necesites, le pasas los parámetros encesarios (igual que haces con el tIBStoredProc) y la abres con el método ExecSQL.
Por ejemplo:
Código Delphi [-]
....
QStock.ParamByName('fecha').AsDateTime := fechainput;
QStock.ParamByName('almacen').AsDateTime := almaceninput;
QStock.ExecSQL;
....
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #4  
Antiguo 21-05-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Hola

Ya me sale , ahora lo que pasa es que quiero sacar un informe con el fastreport y el problema es que el procedimiento almacenado es rápido (1'20 segundos ) tiene muchos campos que recorrer , pero el problema es que para sacar el informe tarda casi 6 minutos y el informe es de sólo 10 páginas .

No entiendo como tarda tanto . El caso es que quiero enlazar el TIBQuery del procedimiento almacenado a un TClientDataSet , para que salga el informe antes .

Lo que hago es unir el Provider al TIBQuery y el ClientDataSet al provider . Después de abrir el Query , pues abro el ClientDataSet , pero se queda colgado y no hace nada .

Es cierto que el procedimiento almacenado hace muchas operaciones , recorre muchos campos , pero el resultado que saca , tampoco es tan grande , no más de 800 articulos , un informe como he dicho de 10 páginas , así pues creo que el informe deberia de ser rápido después de hacer el procedimiento almacenado .

Sabeis a que puede ser debido esto ?

Un saludo
Responder Con Cita
  #5  
Antiguo 21-05-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Rectifico con el ClientDataSet no se queda colgado nada . Lo que pasa es que si lo pongo como he dicho el informe tarda en salirme 14 minutos , un tiempo excesivo , sin el ClientDataSet , con el Query que llama el procedimiento almacenado tarda 6 minutos en salirme el informe .

1:20 en hacer el procedimiento almacenado . Un tiempo que veo razonable , pero en preparar el informe con el FastReport que son 10 hojas , tarda hasta completar 6 minutos , un tiempo que me parece excesivo.
Responder Con Cita
Respuesta



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
¿como llamo un procedimiento almacenado? jeshu252006 Conexión con bases de datos 6 28-10-2006 17:49:55
Acceder otra base de datos en Procedimiento Almacenado Firebird mario_2000 Conexión con bases de datos 2 05-09-2006 16:35:27
Como crear un procedimiento almacenado Javi2 SQL 1 11-02-2005 13:32:40
Cómo creo un Procedimiento almacenado? Gabriel2 Firebird e Interbase 3 31-12-2004 09:02:43
Ejectutar Procedimiento Almacenado en otra Base de Datos AGAG4 Conexión con bases de datos 2 20-09-2004 20:12:44


La franja horaria es GMT +2. Ahora son las 16:28:41.


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