PDA

Ver la Versión Completa : Componente similar en FireDAC


santiago14
21-02-2014, 14:28:33
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...

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.