Buenos dias! soy nuevo en Firebird y pido disculpas por anticipado si mi consulta es trivial.
Les comento, estoy trabajando con un ERP con base Firebird donde en un lugar permite realizar consultas a medida (SQL).
Lo que estoy necesitando es poder realizar una consulta donde el usuario cargue unos parametros, por ejemplo fecha desde y hasta, pero no logro encontrar como.
En otros ERP que manejaba tenia instrucciones del tipo '<%fechadesde%>' donde podia pedir ese dato al usuario en una estructura del tipo:
SELECT '<%fechadesde%>' as fechadesde from TablaComprobantes where TablaComprobantes.fecha > '<%fechadesde%>'
Donde al momento de ejecutarse la consulta emergia una ventana para solicitar al usuario que ingrese el dato fechadesde
Necesito hacer algo similar con una consulta SQL de Firebird y no encuentro la forma, si alguien puede darme un ejemplo de como hacerlo se lo agradecer infinitamente.
Desde ya muchas gracias
Jorge

Solicitud de entrada de datos al usuario en consulta SQL
#1
Posted 12 July 2017 - 12:33 PM
#2
Posted 12 July 2017 - 01:15 PM
var Campo: String; SQL: String; ... Campo := 'un_campo'; SQL := 'Select ' + Campo + ' From TablaCOmprobantes'; ...
Desde Firebird (en un procedmiento almacenado);
SELECT :Campo FROM TablaComprobantes;
Donde :Campo puede ser un parámetro de entrada ó variable, desde delphi también se puede hacer:
var SQL: String; ... SQL := 'Select :Campo From TablaCOmprobantes'; FDQuery1.SQL.Text := SQL; FDQuery1.ParamByName('Campo').AsString := 'Un_Campo'; FDQuery1.Open; ...
Saludos.
#3
Posted 12 July 2017 - 01:41 PM
Muchas gracias enecumene por tu pronta respuesta y el tiempo dedicado.
Un tema que no aclare, es que el ERP donde quiero hacer la consulta es un enlatado y por lo pronto solo puedo ejecutar consultas SQL.
Intente con la solcucion que me pasate (SELECT :Campo FROM TablaComprobantes;) pero no me toma la sentecia :Campo; el cual decis que es un parámetro de entrada ó variable, como puedo declarar eso dentro de una consulta para que la pueda ingresar el usuario al ejecutarla?
Mil gracias nuevamente
#4
Posted 13 July 2017 - 07:15 AM
Podrías crear un Procedimiento almacenado y pasarle como parámetro el campo que desees:
CREATE OR ALTER PROCEDURE OBTENER_ALGO ( CAMPO VARCHAR(20)) RETURNS ( CAMPO_RESULT VARCHAR(100)) AS BEGIN FOR SELECT :campo FROM TablaComprobantes WHERE un_campo = 1 INTO :campo_result; END
Y lo llamas de esta forma:
EXECUTE PROCEDURE obtener_algo('un_campo');
Saludos.
#5
Posted 14 July 2017 - 08:48 AM
Saludos.
Para dar un poco de dinamismo formando la consulta (SQL):
https://www.firebird...l-execstat.html