Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Datenbank in VirtualTreeView anzeigen und auswerten

  Alt 3. Mär 2009, 21:19
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;
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat