Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con parámetros en ADOStroredProc (https://www.clubdelphi.com/foros/showthread.php?t=79710)

Ignacio Gentile 02-08-2012 13:55:00

Problema con parámetros en ADOStroredProc
 
Buenas!
Tengo una conexión entre mi aplicación y una base de datos Postrgres 8.4 a través de un ADOConnection. Para ejecutar las funciones escritas en la base de datos uso los componentes ADOStoredProc.

El problema está dado cuando los parámetros son de tipo real (en este caso el parámetro es 'valor'). El error que sale es que no se reconoce la función con esos parámetros. He probado con el siguiente código:

Código Delphi [-]
   frmTablasAuxiliar.alta_arancel.Close;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('nombre').value := edtNombreArancel.Text ;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('valor').value := StrToFloat(edtValorArancel.Text);
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('esfijo').value := True;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('descripcion').value := edtDescripcionArancel.Text ;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('idusuario').Value := frmVariables.vgUsuarioLogueado;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('fechamod').Value :=  Now;
   frmTablasAuxiliar.alta_arancel.Open;

También probe con el siguiente código:

Código Delphi [-]
   frmTablasAuxiliar.alta_arancel.Close;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('nombre').value := edtNombreArancel.Text ;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('valor').value := edtValorArancel.Text;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('esfijo').value := True;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('descripcion').value := edtDescripcionArancel.Text ;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('idusuario').Value := frmVariables.vgUsuarioLogueado;
   frmTablasAuxiliar.alta_arancel.Parameters.ParamByName('fechamod').Value :=  Now;
   frmTablasAuxiliar.alta_arancel.Open;

Recuerdo también haber tenido el mismo problema cuando los parámetros son de tipo DATE.

Muchas gracias por su ayuda! :)

Casimiro Notevi 02-08-2012 14:13:24

Y en la base de datos, ¿de qué tipo es el campo valor?
¿Y el mensaje de error exacto que sale cuál es?
¿Y la función a la que llamas (será un stored procedure) qué parámetros admite y de qué tipo?
...

Ignacio Gentile 02-08-2012 14:29:13

En la base de datos, el campo valor es de tipo real, al igual que en la función. La función comienza de la siguiente manera (ahí se puede ver el tipo de dato de los parámetros):

Código SQL [-]
CREATE OR REPLACE FUNCTION "public"."alta_arancel" (
  "nombre" varchar,
  "valor" real,
  "esfijo" boolean,
  "descripcion" varchar,
  "idusuario" integer,
  "fechamod" timestamp

El mensaje exacto que me devuelve es el siguiente:
ERROR: no existe la función alta_arancel(unknown, double precision, unknown, unknown, integer, date); Error while executing de query.


La franja horaria es GMT +2. Ahora son las 07:23:08.

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