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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Error al ejecutar procedimiento almacendado con el componente TSQLStoredProc

Hola Chicos tengo esta duda:

Utilizo Firebird y tengo un procedimiento almacenado que me consulta el ultimo id insertado trayendome el datos del mismo:

Código SQL [-]
CREATE PROCEDURE LASTFAMILIAGREGADA
RETURNS(
  COD_FAMILIA VARCHAR(25) CHARACTER SET ASCII COLLATE ASCII,
  NOM_FAM VARCHAR(100) CHARACTER SET ASCII COLLATE ASCII,
  DESCRI VARCHAR(250) CHARACTER SET ASCII COLLATE ASCII)
AS
DECLARE VARIABLE ID_FAM INTEGER;
DECLARE VARIABLE MI_ID INTEGER;
BEGIN
  /* Procedure body */ 
 SELECT * from LASTFAMILIAGREGADA_ID into :ID_FAM;
 MI_ID = ID_FAM;
 select f.COD_FAMILIAS, f.NOMBRE, f.DESCRIPCION from FAMILIAS f where f.ID_FAMILIAS =  :MI_ID INTO :COD_FAMILIA, :NOM_FAM, ESCRI;
SUSPEND;

END;

ahora en delphi utilizo el componente TSQLStoredPrc asignando sus respectivos valores en propiedades sin embargo al hacer esto:

Código Delphi [-]
with dmStoreProcedure.spUltimaFamiliaAgregada do
  begin
  ExecProc; //Aqui me manda el error LASTFAMILIAGREGADA": Actual number of parameters (1) exceeds the current number of stored procedure parameters (0). Either uncheck the ParamCheck component property or review the parameter list content.
  codF := Params.ParamByName('COD_FAMILIA').Value;
  NomF := Params.ParamByName('NOM_FAM').Value;
  DescF := Params.ParamByName('DESCRI').Value;
  end;

Alguna idea?

Saludos a Todos
Responder Con Cita
  #2  
Antiguo 26-09-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Hola

Respondiendo yo mismo a mi consulta y realizando prueba hice esto:

Código Delphi [-]
with dmStoreProcedure.spUltimaFamiliaAgregada do
  begin
  ExecProc;//Quité esta linea ahora para cada vez que quiero que me refresque el último registro 
  codF := Params.ParamByName('COD_FAMILIA').Value;
  NomF := Params.ParamByName('NOM_FAM').Value;
  DescF := Params.ParamByName('DESCRI').Value;
  Close;//Cierro el SP espero que esto sea correcto
  end;


Saludos
Responder Con Cita
  #3  
Antiguo 26-09-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Prueba con esto...

Código Delphi [-]
    with dmStoreProcedure.spUltimaFamiliaAgregada do
    begin                                                            
           {Si tú procedimiento recibe algún  parametro...}
           ParamByName('PARAM1').AsInteger :=Param1;         
           {
           ExceQuery: Si estas retornando valores desde el Store Procedure. 
           ExecProc: Si estas no retornas valores;
           }
           ExecQuery;   
           codF  := FieldByName('COD_FAMILIA').Value;
           NomF := FieldByName('NOM_FAM').Value;
           DescF := FieldByName('DESCRI').Value;          
           Close;       
end;
No indicas que componentes estas usando para acceso a la base de datos, ExecQuery y ExecProc suponiendo que usas FIBPlus. No se si para IBX son las mismas sentencias...

Saludos cordiales

Última edición por cloayza fecha: 26-09-2013 a las 23:08:57.
Responder Con Cita
  #4  
Antiguo 26-09-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
En realidad realidad en el procedimiento en el mismo motor de base de datos Firebird 2.5 hago esto:

Código SQL [-]
CREATE PROCEDURE LASTFAMILIAGREGADA
RETURNS(
  COD_FAMILIA VARCHAR(25) CHARACTER SET ASCII COLLATE ASCII,
  NOM_FAM VARCHAR(100) CHARACTER SET ASCII COLLATE ASCII,
  DESCRI VARCHAR(250) CHARACTER SET ASCII COLLATE ASCII)
AS
DECLARE VARIABLE ID_FAM INTEGER;
DECLARE VARIABLE MI_ID INTEGER;
BEGIN
  /* Procedure body */ 
 SELECT * from LASTFAMILIAGREGADA_ID into :ID_FAM;
 MI_ID = ID_FAM; /*Mi parametro de entrada que obtengo del primer procedimiento almacenado */
 select f.COD_FAMILIAS, f.NOMBRE, f.DESCRIPCION from FAMILIAS f where f.ID_FAMILIAS =  :MI_ID INTO :COD_FAMILIA, :NOM_FAM, ESCRI;
SUSPEND;

END

o sea en teoria el procedimiento spUltimaFamiliaAgregada debe de hacer la consulta y luego traer el dato pero el componente me manda el mismo dato que tengo en modo de diseño y no refresca si se hace una actualización

Saludos y gracias por responder cloayza
Responder Con Cita
  #5  
Antiguo 27-09-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
resolví el problema

haciendo esto:

Código Delphi [-]
with dmStoreProcedure.spUltimaFamiliaAgregada do
  begin
  ExecProc;//Quité esta linea ahora para cada vez que quiero que me refresque el último registro 
  codF := ParamByName('COD_FAMILIA').Value; //quite la propiedad params y deje parambyname
  NomF := ParamByName('NOM_FAM').Value;
  DescF := ParamByName('DESCRI').Value;
  Close;//Cierro el SP espero que esto sea correcto
  end;

investigaré porque sucedía eso para dar una solución mas lógica...


Saludos

novato_erick
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
Error de sintaxis al ejecutar procedimiento almacenado en Firebird 2.1.3 dant Firebird e Interbase 4 26-07-2010 20:18:25
Error al ejecutar un procedimiento JosepGA Conexión con bases de datos 4 26-11-2008 11:54:41
Usar un solo procedimiento almacendado para restar o sumar valores a un mismo registro Chogo Trucos 2 11-05-2007 17:39:01
ejecutar un TSQLStoredProc desde un cliente pmfras Conexión con bases de datos 7 31-01-2007 22:19:17
Error al ejecutar procedimiento en servidor CORBATIN Providers 6 03-03-2005 02:12:35


La franja horaria es GMT +2. Ahora son las 10:50:35.


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