Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
TSQLStoredProc

Buen día comunidad.
Estoy utilizando el componente TSQLStoredProc que utiliza un procedimiento almacenado que pagina registros. Este procedimiento ademas de devolverme información, me devuelve un parámetro de salida.

El detalle es que la primera vez que se ejecuta esta todo correcto. Recibe los parámetros correctos y devuelve el parámetro de salida.

Pero cuando vuelvo a invocar el Procedimiento almacenado para que me traiga la otra página o me traiga una página con otro tipo de filtrado .
Me marca el error de que tengo que especificar los parámetros, cuando ya está especificado y ya le hice un ExecProc().

Antes de ejecutarlo ya cerré previamente el TClientDataSet, vuelvo a enviarle los parámetros necesarios, y cuando ejecute open al TClientDataSet es cuando me marca ese error y ya se termina el proceso.

Algo en la configuración del TSQLStoredProc no se si esté mal configurado ya llevo un par de horas investigando y no eh dado con el problema.

Gracias.

Saludos.
Responder Con Cita
  #2  
Antiguo 29-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon el código para que lo veamos.

Por cierto, para otras ocasiones no olvides poner títulos descriptivos a tus preguntas. Gracias
Responder Con Cita
  #3  
Antiguo 30-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Error al ejecutar TSQLStoredProc

Hola de nuevo.. la primera vez cuando lo ejecuto me trae la información pero supongamos que ahora filtrare por otros campos y asigno los parámetros de nuevo.

Cita:
SPListadoDocumentos->ParamByName("RESULT_VALUE")->Value = 0;
SPListadoDocumentos->ParamByName("fechaDesde")->AsString = fechaDesde;
SPListadoDocumentos->ParamByName("fechaHasta")->AsString = fechaHasta;
SPListadoDocumentos->ParamByName("numeroPagina")->AsInteger = numeroPagina;
SPListadoDocumentos->ParamByName("columnaDeOrdenamiento")->AsInteger = columnaDeOrdenamiento;
SPListadoDocumentos->ParamByName("registrosPagina")->AsInteger = ModuloDeDatos->_registrosPorPagina;
SPListadoDocumentos->ParamByName("tipoDocumento")->AsString = tipoDocumento;

SPListadoDocumentos->ParamByName("numeroPaginaOutPut")->AsInteger = _numeroPaginaOutPut;
Pero al ejecutarlo con ExeProc()

me dice que esperaba el parámetro @fechaDesde que no está especificado y es ahí cuando me marca el error.

Última edición por Casimiro Notevi fecha: 30-07-2014 a las 09:32:57.
Responder Con Cita
  #4  
Antiguo 30-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Como que se pierde la información que tiene el componente. Tendría que volver a crear los parámetros ??
Responder Con Cita
  #5  
Antiguo 30-07-2014
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Si el motor de bases de datos es SQL SERVER seguramente los parámetros deberían iniciarse dela siguiente manera:

Código Delphi [-]
SPListadoDocumentos->ParamByName("RESULT_VALUE")->Value = 0;
SPListadoDocumentos->ParamByName("@fechaDesde")->AsString = fechaDesde;
SPListadoDocumentos->ParamByName("@fechaHasta")->AsString = fechaHasta;
SPListadoDocumentos->ParamByName("@numeroPagina")->AsInteger = numeroPagina;
SPListadoDocumentos->ParamByName("@columnaDeOrdenamiento")->AsInteger = columnaDeOrdenamiento;
SPListadoDocumentos->ParamByName("@registrosPagina")->AsInteger = ModuloDeDatos->_registrosPorPagina;
SPListadoDocumentos->ParamByName("@tipoDocumento")->AsString = tipoDocumento;

SPListadoDocumentos->ParamByName("@numeroPaginaOutPut")->AsInteger = _numeroPaginaOutPut;

Notese el "@" antecediendo cada parámetro.
Responder Con Cita
  #6  
Antiguo 30-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola.

Eh estado probando con ADO tambien y efectivamente son con @ los parámetros, pero cuando vuelvo a filtrar para traer la segunda página .. es cuando me sale el error que no se encuentra los parámetros y la primera vez me trae la consulta correctamente, tengo que eliminar los parámetros y volverlos a crear en tiempo de ejecución para que los reconozca ??

Gracias.

Saludos.
Responder Con Cita
  #7  
Antiguo 30-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon el código fuente, como te comenté antes, justo lo que está antes del código que has puesto
Responder Con Cita
  #8  
Antiguo 30-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Hola buen día,
este es el código.
Cita:
// Se cierra el TClientDataSet
DSDatos->Close();

// Se asignan los valores que se requerirá en le store procedure.
AsignarParametrosStoreProcedure(DateTimeToStr(Fecha), DateTimeToStr(Fecha), _numeroPaginaOutPut, _columnaDeOrdenamiento,
_registrosPagina, _tipoDocumento);

// Se ejecuta el procedimiento almacenado.
SPListadoDocumentos->ExecProc();

// Se abre el TClientDataSet y me arroja el error.
DSDatos->Open();
El método AsignarParametrosStoredProcedure es donde se asignan los valores al TSQLStoredProc.

El error que me marca es El procedimiento o la función ListadoDeDocumentos esperaba el parámetro @fechaDesde, que no se ha especificado.

Esto pasa cuando ejecuto el stored para traer la información de la siguiente página, pero la primera vez que se ejecuta trae correctamente la información.
Responder Con Cita
  #9  
Antiguo 30-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por JM1985 Ver Mensaje
El error que me marca es El procedimiento o la función ListadoDeDocumentos esperaba el parámetro @fechaDesde, que no se ha especificado.
¿Y qué tiene ListadoDeDocumentos? ¿No lo cierras antes de asignar los parámetros?
¿Y entonces qué es exactamente DSDatos?
Responder Con Cita
  #10  
Antiguo 30-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
ListadoDeDocumentos es el TSQLStoredProc, si lo cierro al momento de asignar los valores a los parámetros.

DSDatos es el TClientDataSet

El esquema es el siguiente .
Tengo un data source que asu ves está ligado a un dataset, el dataset a un datasetProvider y por ultimo el dataSetProvider al TSQLStoredProc.
Ya que el dataSource es el origen de datos que esta asignado al cxGrid para presentar la información.
Responder Con Cita
  #11  
Antiguo 30-07-2014
JM1985 JM1985 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 68
Poder: 11
JM1985 Va por buen camino
Casimiro, orodriguezca

Ya veo la siguiente página.

Casimiro me diste una pista al preguntarme que es ListadoDeDocumentos y te explique como está el escenario,

Datasource -> DataSet ->DataSetProvider ->Stored Procedure. (El stored procedure tiene la conexión a la base de datos.)

Creo que aquí estaba el problema.

Lo que hice ahora es hacerlo directo .

DataSource -> StoredProcedure (El stored procedure tiene la conexión a la base de datos.)


Al hacer todo el procedo de asignar los valores a los parámetros

ejecuto el procedimiento
SPListadoDocumentos->ExecProc();

y después lo abro y listo
SPListadoDocumentos->Open();

y ya me muestra la siguiente página.

Seguiré haciendo pruebas para verificar que este correcto el paginado con los filtros y ordenamientos necesarios y les comento.

Gracias.

Saludos.
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
Error al ejecutar procedimiento almacendado con el componente TSQLStoredProc novato_erick Conexión con bases de datos 4 27-09-2013 00:33:30
TSQLStoredProc y parámetros ptInputOutput con SqlServer sarackganda Conexión con bases de datos 4 26-11-2009 17:25:44
Problema con un TSQLStoredProc y cursores Lucciano Conexión con bases de datos 0 18-01-2008 20:09:58
ejecutar un TSQLStoredProc desde un cliente pmfras Conexión con bases de datos 7 31-01-2007 22:19:17


La franja horaria es GMT +2. Ahora son las 18:22:21.


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