Danke erstmal, das Projekt habe ich geladen. Das Projekt, baut allerdings noch auf der
BDE auf. Ich habe es jetzt mal umgebaut auf meine Zeos Komponenten, und bekomme den folgenden Fehler, wenn ich Daten aus der Datenbank laden will.
SQL-Query ist Empty
ich verwende jetzt folgende Quelltext...
Delphi-Quellcode:
type
PTZRec = ^TZRec;
TZRec = packed record
ID, LfdNr : integer;
Datum, Uhrzeit, Ereignis, Teilnehmer, Bereich : WideString;
end;
var
frmMain: TfrmMain;
implementation
uses fDetail;
{$R *.dfm}
procedure TfrmMain.Button2Click(Sender: TObject);
begin
LoadDataSecData;
end;
procedure TfrmMain.LoadDataSecData;
begin
if not ZTable1.Active then
ZTable1.Open;
ZTable1.filtered := false;
ZTable1.filter := '';
VirtualStringTree1.BeginUpdate;
VirtualStringTree1.Clear;
VirtualStringTree1.NodeDataSize := Sizeof(TZRec);
ZTable1.First;
VirtualStringTree1.RootNodeCount := ZTable1.RecordCount;
VirtualStringTree1.SortTree(0,sdAscending,true);
VirtualStringTree1.EndUpdate;
end;
procedure TfrmMain.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
TZRecord : PTZRec;
begin
TZRecord := Sender.GetNodeData(Node);
Initialize(TZRecord^);
TZRecord.ID := ZTable1.FieldByName('ID').AsInteger;
TZRecord.LfdNr := ZTable1.FieldByName('LfdNr').AsInteger;
TZRecord.Datum := ZTable1.FieldByName('Datum').AsString;
TZRecord.Uhrzeit := ZTable1.FieldByName('Uhrzeit').AsString;
TZRecord.Ereignis := ZTable1.FieldByName('Ereignis').AsString;
TZRecord.Teilnehmer := ZTable1.FieldByName('Teilnehmer').AsString;
TZRecord.Bereich := ZTable1.FieldByName('Bereich').AsString;
if not ZTable1.eof then
ZTable1.Next;
end;
procedure TfrmMain.VirtualStringTree1FreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var
TZData : PTZRec;
begin
TZData := Sender.GetNodeData(Node);
if Assigned(TZData) then
Finalize(TZData^);
end;
procedure TfrmMain.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var
TZRecord : PTZRec;
begin
TZRecord := Sender.GetNodeData(Node);
case Column of
0: CellText:= IntToStr(TZRecord.ID);
1: CellText:= IntToStr(TZRecord.LfdNr);
2: CellText:= TZRecord.Datum;
3: CellText:= TZRecord.Uhrzeit;
4: CellText:= TZRecord.Ereignis;
5: CellText:= TZRecord.Teilnehmer;
6: CellText:= TZRecord.Bereich;
end;
end;
procedure TfrmMain.VirtualStringTree1HeaderClick(Sender: TVTHeader;
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if Button = mbLeft then
with Sender do
begin
if SortColumn <> Column then
SortColumn := Column;
if SortDirection = sdAscending then
SortDirection := sdDescending
else SortDirection := sdAscending;
VirtualStringTree1.SortTree(Column,SortDirection,true);
end;
end;