Zitat von
Karstadt:
Hallo. Ich will nicht in eine Tabelle schreiben, sonder in DBGRIB (Zeile Temp) was reinschreiben, diese Weerte werde nicht gespeichert. Außerdem kann ich mit TQUERY nicht editieren, das ist eine Anzeige komponente
Habe ich neulich jemanden geraten, da er keine berechneten Felder nehmen konnte: im SELECT die zusätzliche Spalte angeben, zb
SELECT a.*, 'teststring mit richtiger länge' as irgendwas FROM mytable a
und dann OnGetText der Felder dynamisch überschreiben:
Delphi-Quellcode:
type
TForm3 = class(TForm)
AdsConnection1: TAdsConnection;
AdsQuery1: TAdsQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure AdsQuery1AfterOpen(DataSet: TDataSet);
private
{ Private declarations }
procedure irgendwasGetText(Sender: TField; var Text: string; DisplayText: Boolean);
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.AdsQuery1AfterOpen(DataSet: TDataSet); begin
TBlobField(AdsQuery1.FieldByName('irgendwas')).OnGetText:=irgendwasGetText;
end;
procedure TForm3.irgendwasGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
if SameText(Sender.FieldName,'irgendwas')
then begin
Text:='hallo Welt';
end;
end;