Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Multiplicar un campo sumado con un parametro (https://www.clubdelphi.com/foros/showthread.php?t=86061)

daragor 12-06-2014 01:53:51

Multiplicar un campo sumado con un parametro
 
Hola compañeros, recurro a uds. para me que ayuden con una consulta que no me esta funcionando, me da error de sintaxis -902

En una consulta quiero multiplicar un campo sumado x un parametro, ya que el mismo es variable.
Ejemplo:
Código SQL [-]
SELECT (SUM(precio)*:CI) AS total FROM ventas
CI es el parametro que toma la variable x ejemplo 50

Espero me entiendan muchas gracias!

jhonny 12-06-2014 16:02:22

¿Esta consulta que mencionas, la estas tratando de ejecutar tal y cual?, porque si es así, seguramente lo que necesitas es vincularla a un procedimiento almacenado.

daragor 12-06-2014 16:23:24

Estoy trabajando con lazarus, es un query en un procedimiento. Creo que no acepta multiplicacion por parametros?

ecfisa 12-06-2014 18:37:43

Hola daragor.

Yo opino como jhonny, hasta donde conozco, Firebird no permite el uso de los parámetros de ese modo, vas a tener que hacerte un procedimiento almacenado...

Por ejemplo:
Código SQL [-]
SET TERM ^;

CREATE PROCEDURE SP_SUMTOTAL(MULT DOUBLE PRECISION)
RETURNS (RESULT DOUBLE PRECISION)
AS
BEGIN
  SELECT SUM(PRECIO) FROM VENTAS INTO RESULT;
  RESULT = RESULT * MULT;
  SUSPEND;
END^

SET TERM; ^

Desde Delphi:
Código Delphi [-]
  with IBStoredProc1 do
  begin
    Params.ParamByName('MULT').AsFloat:= 5;
    ExecProc;
    ShowMessage(ParamByName('RESULT').AsString);
  end;
Lo que te debo es como sería con el equivalente al TIBStoredProc en Lazarus ya que desconozco cuál es el componente.

Saludos :)

daragor 12-06-2014 20:09:30

Gracias muchachos

ecfisa 12-06-2014 20:27:09

De nada daragor, por si te pudiera servir de ayuda, te detallo la asignación anterior del TIBStoredProc en tiempo de ejecución.
Código Delphi [-]
  with IBStoredProc1 do
  begin
    DataBase:= IBDatabase1;
    StoredProcName:= 'SP_SUMTOTAL';
    Params.Clear;
    Params.CreateParam(ftFloat,'RESULT',ptOutput);
    Params.CreateParam(ftFloat,'MULT',ptInput);
    Params.ParamByName('MULT').AsFloat:= 5;
    ExecProc;
    ShowMessage(ParamByName('RESULT').AsString);
  end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 06:08:41.

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