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)
-   -   Consulta de FIBPlus (https://www.clubdelphi.com/foros/showthread.php?t=17838)

Delphos 23-01-2005 20:35:01

Consulta de FIBPlus
 
Hola Foro.

Alquien sabe como se hacen consultas con parametros con pFIBQuery, podrian poner un ejemplo completo para asi poder ver de paso el tema de las transacciones y demas ya que tampoco tengo muy claro el componente pFIBDataset y el pFIBTransaction.

Muchas gracias de antemano.

Salu2.

Sinaloense 24-01-2005 17:15:17

El Sql Generator del query hace todo por ti, solo debes agregar el parámetor:

Por ejemplo:

Código:

SELECT
    FOLIO,
    FECHA,
    CORTE,
    TANQUE,
    FECHAHORA,
    COMBUSTIBLE,
    NUEVOESTADO
FROM
    DPVGCTAN
WHERE FECHA=:FECHA
AND CORTE=:CORTE

Y en el código:

Código:

    if Tr_Cortes.InTransaccion then
        Tr_Cortes.Commit;
    Tr_Cortes.StartTransaccion; //Esta es la transacción:     
    QL_Corte_Tanque.Params[0].Value:=Fecha;
    QL_Corte_Tanque.Params[1].AsInteger:=Corte;
    QL_Corte_Tanque.ExecQuery;
    ..
    ..
    Tr_Cortes.commit;


Si te das cuenta no utilize el ql_Corte_Tanque.Close antes de darle valor a los parámetros, esto es porque la transacción no está activa, y si la transacción no esta activa tampoco lo está el Query.

Después de habierto el quiery puedes accesar a los campos de la mandera tradicional. con un FieldByName por ejemplo.

Recuerda que los querys de FibPlus son unidireccionales y de solo lectura, si necesitas algo más avanzado usa mejor un dataset, que en el caso funciona igual.


Suerte.

Delphos 24-01-2005 17:47:01

El ejemplo de antes funciona de maravilla muchas gracias.

Esta consulta tambien funciona pero ¿Esta bien estructurada, no?.

Ejemplo:
Código:


    SQL:='INSERT INTO Horarios (Servicio,TiempoI,TiempoF,Horas) VALUES
            (:Serv,:TInicio,:TFinal,:THoras)';
    If pFIBTransaction1.InTransaction then
      pFIBTransaction1.Commit;
    pFIBDataSet1.Open;
    pFIBDataSet1.InsertSQL.Clear;
    pFIBDataSet1.SQLs.InsertSQL.Add(SQL);
    pFIBDataSet1.QInsert.ParamByName('Serv').AsString := txtServ.text;
    pFIBDataSet1.QInsert.ParamByName('TInicio').AsString := TI;
    pFIBDataSet1.QInsert.ParamByName('TFinal').AsString := TF;
    pFIBDataSet1.QInsert.ParamByName('THoras').AsString := THM;
    pFIBDataSet1.QInsert.ExecQuery;
    pFIBTransaction1.Commit;
    pFIBDataSet1.Close;

Un saludo.


La franja horaria es GMT +2. Ahora son las 23:34:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi