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 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: 913
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



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 01:16:53.


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