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)
-   -   Componente similar en FireDAC (https://www.clubdelphi.com/foros/showthread.php?t=85258)

santiago14 21-02-2014 14:28:33

Componente similar en FireDAC
 
Buenas, acabo de instalar Delphi XE5, hasta ahora muy bien.
Resulta que tengo un componente que debo cambiar, TIBSQL de los componentes IBX, pero no se cual es el similar en FireDAC.
Agradecería me mandaran una ayudita.

Gracias.

santiago14 21-02-2014 15:26:04

Me respondo a mí mismo, pero de seguro servirá para toda la gente que se pase a XE5.
Con el componente TFDQuery de los FireDAC la cosa se soluciona, de la siguiente manera:
Estoy en Firebird 2.1

En este caso hice un Insert y le pedí que me devolviera la clave primaria a través del Returning...
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  FDConnection1.Connected:=true;
  with FDQuery1 do
  begin
    close;
    sql.clear;
    sql.add('Insert Into det_recibos (cod_rec, renglon_det, cod_fact, monto_rec) ');
    SQL.Add('Select :codigo, :renglon, :codigo_factura, :monto ');
    SQL.Add('From rdb$database ');
    sql.Add('Returning cod_rec ');
    ParamByName('codigo').AsInteger:=3;
    ParamByName('renglon').AsInteger:=1;
    ParamByName('codigo_factura').AsInteger:=1;
    ParamByName('monto').AsFloat:=1000.98;
    try
      Open();
      edit1.Text:=FDQuery1.FieldByName('cod_rec').AsString;
      FDConnection1.Commit;
      Application.MessageBox(PWideChar('Lo hice'), PWideChar(self.Caption),
          MB_OK + MB_ICONINFORMATION);
    except
      on e:Exception do
      begin
        FDConnection1.Rollback;
        Application.MessageBox(PWideChar('Falló'), PWideChar(self.Caption),
          MB_OK + MB_ICONERROR);
      end;
    end;
  end;
end;

ElKurgan 22-02-2014 14:12:10

Gracias por compartir la solución

Saludos

darkerbyte 20-03-2014 04:13:38

Hola Santiago14.

Yo estoy por migrar de Delphi7 a XE5. En D7 utilizo ZeosBDO y veo que el "modus operandi" de los componentes es muy similar. Has usado Zeos? Si es así me gustaría saber cual es tu opinion Zeos vs FireDAC
Por cierto de tu codigo agregaste la linea:

FDConnection1.Commit;

Pero no vi ningun comando para iniciar la transaccion (FDConnection1.StartTransaction por ejemplo) , a caso FireDAC inicia automaticamente el modo transacción cuando mandas una consulta?

santiago14 20-03-2014 12:46:21

En el momento de hacer el ejemplo no lo tuve en cuenta pero, hay un componente TFDTransaction que hace todas las operaciones de transacción. Sería algo así como: trans.startTransaction; trans.Commit; trans.Rollback;

En cuanto a si Zeos o FireDAC. Hace un tiempo largo que no uso Zeos, lo he usado en unas aplicaciones pero luego me pasé a MDO (con el cual no tuve problemas y un excelente desempeño)
A FireDAC lo estoy probando ahora mientras paso mis aplicaciones a XE5 y puedo decir que, salvo algunas cosas propias del componente, es muy similar a MDO y el rendimiento ha sido muy bueno.

Por ahí se recomienda MyDAC, pero es pago.

Santiago.


La franja horaria es GMT +2. Ahora son las 22:03:36.

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