Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-08-2005
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Poder: 21
LucianoRey Va por buen camino
Procedimiento almacenado

Hola,espero me puedan ayudar, tengo el siguiente problema:

me conecto a mi base de datos (MSQLServer) por medio de Ado, mando ejecutar un procedimiento almacenado, al que le mando parametros que recoge de mi pantalla, este me genera un archivo.
Despues de esto mando ejecutar un query sobre este archivo generado, y con este mando un reporte, pero la siguiente vez que lo mando parece como si no me respetara los nuevos parametros, sin embargo voy a las tablas del servidor y el archivo generado esta bien.

Mi query esta condicionado a que el procedimiento me regrese un valor cero en su parametro de retorno, pero aun asi, el reporte me pinta la consulta anterior, entonces lo que entiendo es que el procedimiento en su parametro de retorno me indica eso, que si llego al servidor, pero no, que ya termino, pues el query se ejecuta cuando todavia no termina el procedimiento.

Quisiera entonces , si alguien puede decirme como saber cuando el procedimiento termino su ejecucion, para asi poder condicionar mi query a que se realize solo cuando haya terminado el procedimiento, pongo aqui el codigo para que, si tengo algun error me puedan corregir, saludos y gracias.

Código:
 DataModule1.ADOQuery1.Active:=(0=1);
 DataModule1.ADOStoredProc5.Active:=(0=1);
 DataModule1.ADOStoredProc5.Parameters.ParamByName('@vmesI').Value:=DBLookupComboBox7.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vmesF').Value:=DBLookupComboBox8.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vArea').Value:=DBLookupComboBox3.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vCentro').Value:=DBLookupComboBox4.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vEntidad').Value:=DBLookupComboBox5.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vBenef').Value:=DBLookupComboBox6.KeyValue;
nNumero:=1;
DataModule1.ADOQuery1.Active:=(0=1);
DataModule1.ADOStoredProc5.Active:=(0=1);
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vmesI').Value:=DBLookupComboBox7.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vmesF').Value:=DBLookupComboBox8.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vArea').Value:=DBLookupComboBox3.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vCentro').Value:=DBLookupComboBox4.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vEntidad').Value:=DBLookupComboBox5.KeyValue;
DataModule1.ADOStoredProc5.Parameters.ParamByName('@vBenef').Value:=DBLookupComboBox6.KeyValue;
nNumero:=1;
while (DataModule1.ADOStoredProc5.Parameters.ParamByName('@RETURN_VALUE').Value=Null) do
  begin
	DataModule1.ADOStoredProc5.ExecProc;
  end;
nNumero :=DataModule1.ADOStoredProc5.Parameters.ParamByName('@RETURN_VALUE').Value;
if nNumero = 0 then
  begin
   DataModule1.ADOQuery1.Active:=(0=0);
   QuickRep1.DataSet:=DataModule1.ADOQuery1;
   QuickRep1.Preview;
  end;
Responder Con Cita
  #2  
Antiguo 19-08-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Tres sugerencias:

- Elimina las declaraciones obvias que devuelven true o false siempre (las comparaciones) y evitate un ciclo mas de cpu (eso de 0=0 o 0=1, pon directamente true o false)

- Utiliza la clausula With para encerrar bloques de codigo que siempre hacen llamadas a metodos o propiedades de un mismo objeto

- Elimina los valores de la coleccion de parametros antes de realizar una nueva consulta. Mira a ver si tienen un metodo Clear o algun similar, porque es posible que sea la causa de por que, en distintas llamadas, te traiga exactamente los mismos resultados.
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 23-08-2005
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Poder: 21
LucianoRey Va por buen camino
Procedimiento almacenado

Gracias por los consejos, sabes, ya vi donde esta mi error, en el reporte que envio tengo labels, para mostrar mis totales por grupos, y cuando reenvio el reporte con otros valores me deja los labels anteriores.

Sera cosa de limpiarlos y listo, lo hice con labels porque no supe usar algun componente que me guardara mis totales por grupo e imprimirlos al final.,
Lo que hice fue, en el programa, crear registros para esos totales por grupo y al finalizar el reporte, los asigno a los labels.

Gracias nuevamente.
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


La franja horaria es GMT +2. Ahora son las 00:25:23.


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