Ir al contenido



Foto

Solicitud de entrada de datos al usuario en consulta SQL

Firebird SQL reporte

  • Por favor identifícate para responder
4 respuestas en este tema

#1 NKP

NKP

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 12 julio 2017 - 12:33

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


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.239 mensajes
  • LocationRepública Dominicana

Escrito 12 julio 2017 - 01:15

Desde Delphi:

delphi
  1. var Campo: String;
  2. SQL: String;
  3. ...
  4.  
  5. Campo := 'un_campo';
  6. SQL := 'Select ' + Campo + ' From TablaCOmprobantes';
  7. ...

Desde Firebird (en un procedmiento almacenado);


sql
  1. SELECT :Campo FROM TablaComprobantes;

Donde :Campo puede ser un parámetro de entrada ó variable, desde delphi también se puede hacer:


delphi
  1. var SQL: String;
  2. ...
  3.  
  4. SQL := 'Select :Campo From TablaCOmprobantes';
  5.  
  6. FDQuery1.SQL.Text := SQL;
  7. FDQuery1.ParamByName('Campo').AsString := 'Un_Campo';
  8. FDQuery1.Open;
  9. ...

Saludos.
  • 0

#3 NKP

NKP

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 12 julio 2017 - 01:41

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


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.239 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2017 - 07:15

Podrías crear un Procedimiento almacenado y pasarle como parámetro el campo que desees:


sql
  1. CREATE OR ALTER PROCEDURE OBTENER_ALGO (
  2. CAMPO VARCHAR(20))
  3. RETURNS (
  4. CAMPO_RESULT VARCHAR(100))
  5. AS
  6. BEGIN
  7. FOR SELECT :campo FROM TablaComprobantes WHERE un_campo = 1 INTO :campo_result;
  8. END

Y lo llamas de esta forma:


sql
  1. EXECUTE PROCEDURE obtener_algo('un_campo');

Saludos.


  • 0

#5 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.084 mensajes
  • LocationRepública Dominicana

Escrito 14 julio 2017 - 08:48

Saludos.

 

Para dar un poco de dinamismo formando la consulta (SQL):

https://www.firebird...l-execstat.html


  • 1