Ver Mensaje Individual
  #2  
Antiguo 21-02-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Reputación: 21
santiago14 Va por buen camino
Wink

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;
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita