Witam
Próbuje dynamicznie utworzyc obiekt TSQLQuery, który by obsługiwał różne zapytania do bazy. Robie dynamicznie, bo jakby miał ręcznie kłaść na formatke te komponenty, to ich byłoby kilka, bo do kazdego zapytania, musiałby być oddzielny komponent, a tak bede mial jeden.
Probowalem czegos takiego:
var
sql:tsqlquery;
pole:tstringfield;
...
sql:=tsqlquery.Create(self);
sql.SQLConnection:=ddm.konekszyn;
sql.SQL.Text:='SELECT COUNT(idrap) FROM raporty WHERE idkier="'+lvkierowcy.Selected.Caption+'";';
pole:=tstringfield.Create(self);
pole.SetFieldType(ftString);
pole.Name:='sqlcountidrap';
pole.FieldName:='COUNT(idrap)';
pole.FieldKind:=fkData;
pole.DisplayLabel:='COUNT(idrap)';
sql.Fields.Add(pole);
sql.Fields.Fields[0].SetFieldType(ftString);
try
sql.Open;
except
showmessage('dupa z open');
end;
showmessage(sql.FieldByName('COUNT(idrap)').AsString);
sql.Free;
pole.Free;
....
ale ciagle dostaje:
First chance exception at $75409617. Exception class EDatabaseError with message 'Type mismatch for field 'COUNT(idrap)', expecting: String actual: FMTBcdField'. Process htstrm2.exe (3964)
z tego błędu wynika jakby typ pola był zle zdefiniowany, no ale jak widac w kodzie, probowałem dwojako go zmienić i nic. Jakies rady?