Assign TMyquery and calculated fields

Discussion of open issues, suggestions and bugs regarding MyDAC (Data Access Components for MySQL) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
kaffeburk
Posts: 214
Joined: Mon 29 Jan 2007 08:03

Assign TMyquery and calculated fields

Post by kaffeburk » Sun 25 Mar 2012 19:43

Im assigning a TMyquery to another TMyquery. Works fine until i try to access a calculated field - i get error "field XXX not found". I guess assign does not assign calculated fields, is there any workaround?

AndreyZ

Post by AndreyZ » Mon 26 Mar 2012 14:30

Hello,

TMyQuery inherits basic functionality from the TDataSet class. The TDataSet.Assign method doesn't create fields in the destination dataset using fields from the source dataset. To solve the problem, you can use the following code:

Code: Select all

procedure TMainForm.ButtonClick(Sender: TObject);
var
  i: integer;
  fld: TField;
begin
  MyQuery1.Open;
  MyQuery2.Assign(MyQuery1);
  for i := 0 to MyQuery1.FieldCount - 1 do begin
    fld := TFieldClass(MyQuery1.Fields[i].ClassType).Create(MyQuery2);
    fld.FieldName := MyQuery1.Fields[i].FieldName;
    fld.FieldKind := MyQuery1.Fields[i].FieldKind;
    fld.DataSet := MyQuery2;
  end;
  MyQuery2.Open;
end;

Post Reply