Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank in VirtualTreeView anzeigen und auswerten (https://www.delphipraxis.net/130113-datenbank-virtualtreeview-anzeigen-und-auswerten.html)

Jens Hartmann 3. Mär 2009 17:12

Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos

Datenbank in VirtualTreeView anzeigen und auswerten
 
Hallo mal wieder,

erstmal an ganz großes Lob an die macher der Video´s in der Delphipraxis. ich habe mir das Video vom 2 Stammtisch über das VirtualTreeView angesehen und mitgearbeitet und eigendlich auch so weitgehend alles verstanden. Mir ist dadurch sogar das Thema der Objekte und Records mal so einigermaßen klar geworden.

Also nochmal Danke für diese geile Möglichkeit.

Jetzt aber meine Frage. In diesem Video, wurde nicht auf die Anbindung an eine Datenbank eingegangen. Ich weiß aber, das das VST häfig dafür verwendet wird. Auch ich möchte dies tun.

Leider fehlen mir da absolut die Kenntnisse wo ich anfangen soll.

Hat jemand von Euch da vieleicht einen Tip, wo ich da Dokumentation, Thread´s oder vieleicht auch so ein Video bekomme.

Schon mal besten Dank,


Jens

Achso, momentan füge ich die Daten nur analog zur Datenbank ins VST ein...

Das mache ich so..

Delphi-Quellcode:
{Datensatzverarbeitung}
procedure TForm1.TreeViewResult(ParserTreeView: TMyBaseParser);
var
  Daten : TOMB256PLUS;
  i: Integer;
  Temp1 : Integer;
  Temp2 : String;
  Temp3 : String;
  Temp4 : String;
  Temp5 : String;
  Temp6 : String;
begin
  Temp1 := ParserTreeView.Entries[0].LfdNr;
  Temp2 := ParserTreeView.Entries[0].Datum;
  Temp3 := ParserTreeView.Entries[0].Uhrzeit;
  Temp4 := ParserTreeView.Entries[0].Ereignis;
  Temp5 := ParserTreeView.Entries[0].Teilnehmer;
  Temp6 := ParserTreeView.Entries[0].Bereich;
  Application.ProcessMessages;

  QryMB256PLUS.Close;
  QryMB256PLUS.SQL.Text := 'INSERT INTO MB256PLUS'+
      '("LfdNr", "Datum", "Uhrzeit", "Ereignis", "Teilnehmer", "Bereich")'+
      'VALUES(:LfdNr,:Datum,:Uhrzeit,:Ereignis,:Teilnehmer,:Bereich)';

  QryMB256PLUS.ParamByName('LfdNr').AsInteger := Temp1;
  QryMB256PLUS.ParamByName('Datum').AsString := Temp2;
  QryMB256PLUS.ParamByName('Uhrzeit').AsString := Temp3;
  QryMB256PLUS.ParamByName('Ereignis').AsString := Temp4;
  QryMB256PLUS.ParamByName('Teilnehmer').AsString := Temp5;
  QryMB256PLUS.ParamByName('Bereich').AsString := Temp6;
  QryMB256PLUS.ExecSQL;
  ConMB256PLUS.Commit;

  QryMB256PLUS.Close;
  QryMB256PLUS.SQL.Text := 'SELECT * FROM MB256PLUS';//'SELECT * FROM MB256PLUS';
  QryMB256PLUS.Open;

  Daten:= TOMB256PLUS.Create;
  with Daten do
  begin
    LfdNr := Temp1;
    Datum := Temp2;
    Uhrzeit := Temp3;
    Ereignis := Temp4;
    Teilnehmer := Temp5;
    Bereich := Temp6;
  end;
  VST.AddChild(nil, Daten);
 
  DataMB256plus := '';
end;

mkinzler 3. Mär 2009 17:22

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
http://www.soft-gems.net/supplement/download.php?ID=60

Jens Hartmann 3. Mär 2009 20:19

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
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;

mkinzler 3. Mär 2009 20:33

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Tausche mal die TZTable durch ein TZQuery aus

Jens Hartmann 3. Mär 2009 20:45

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das habe ich gemacht. Jetzt bring er mir den Fehler(siehe Bild im Anhang)

Um die Frage vorzubuegen, Ja die Datei befindet sich im Programmordner

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 ZQuery1.Active then
  ZQuery1.Open;
  ZQuery1.filtered := false;
  ZQuery1.filter := '';
  VirtualStringTree1.BeginUpdate;
  VirtualStringTree1.Clear;
  VirtualStringTree1.NodeDataSize := Sizeof(TZRec);
  ZQuery1.First;
  VirtualStringTree1.RootNodeCount := ZQuery1.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 := ZQuery1.FieldByName('ID').AsInteger;
  TZRecord.LfdNr := ZQuery1.FieldByName('LfdNr').AsInteger;
  TZRecord.Datum := ZQuery1.FieldByName('Datum').AsString;
  TZRecord.Uhrzeit := ZQuery1.FieldByName('Uhrzeit').AsString;
  TZRecord.Ereignis := ZQuery1.FieldByName('Ereignis').AsString;
  TZRecord.Teilnehmer := ZQuery1.FieldByName('Teilnehmer').AsString;
  TZRecord.Bereich := ZQuery1.FieldByName('Bereich').AsString;
  if not ZQuery1.eof then
    ZQuery1.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;


[EDIT] Wäre schon von Vorteil... :gruebel:

mkinzler 3. Mär 2009 20:48

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Den Anhang solltest du vielleicht auch anhängen :zwinker:

Jens Hartmann 3. Mär 2009 20:55

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
So Anhang ist drin :thumb: :thumb: :thumb: :thumb:

mkinzler 3. Mär 2009 21:02

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Steht den ein fester Pfad zum Client in der Kompo?

Jens Hartmann 3. Mär 2009 21:11

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Du meinst in der Connection Kompo unter Database.
Ja

und zwar der genau Standort der Datenbank, in welchem Verzeichnis auch die Exe und die ClientDatei liegt.

D:\Delphi\Sonstiges\VST_DatabaseExample\Securdat.F DB

mkinzler 3. Mär 2009 21:16

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Kommt der Fehler beim Aufruf aus der IDE?

Jens Hartmann 3. Mär 2009 21:19

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Ja, aber auch, wenn ich die Exe so starte.

Blup 4. Mär 2009 11:48

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Ist der Firebird-Server bzw. Client installiert und ist die DLL im Zugriffspfad bzw. im System32-Verzeichnis zu finden.

Jens Hartmann 4. Mär 2009 12:03

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Habe ich oben schon geschrieben. Jawohl alles das ist erfüllt.

Zitat:

Das habe ich gemacht. Jetzt bring er mir den Fehler(siehe Bild im Anhang)

Um die Frage vorzubuegen, Ja die Datei befindet sich im Programmordner

Jens Hartmann 4. Mär 2009 17:27

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo nochmal, so leider komme ich nicht weiter.

Ich habe jetzt noch versucht über google oder so weiterzukommen. Ich habe immer noch den gleichen Fehler und weiß echt nicht wo ich noch suchen soll.

Im Anhang habe ich mal einen Screenshot mit den Einstellungen der TZConnestion und der TZQuery.

Vieleicht ist ja nur einen Einstellung falsch.

Gruß

Jens

alex517 4. Mär 2009 18:09

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
sieh mal hier nach
Zeos-Forum
alex

Jens Hartmann 4. Mär 2009 18:40

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Danke für den Tip. Mit meinem bißchen Englisch, habe ich entschlüsselt, das das ein Problem von Firebird sein könnte.

Leider kann ich nicht erkenne, wie ich es beheben kann.

alex517 4. Mär 2009 19:00

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
kein Problem von Firebird sondern es fehlen Visual C++ and Visual C runtimes msvcp80.dll, msvcr80.dll und mscvcm80.dll.

weiteres findest hier:
Firebird 2 Migration & Installation
unter "Installation of Microsoft system libraries".


alex

Jens Hartmann 4. Mär 2009 19:11

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Das versteh ich nicht. Ich arbeite doch mit Delphi,

vieleicht bin ich ja dazu jetzt zu doof. Aber das läuft doch auch mit der Anbindung an eine DBGrid über DataSource.

alex517 4. Mär 2009 19:22

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

Zitat von Jens Hartmann
Ich arbeite doch mit Delphi

du schon, aber nicht Firebird und auch nicht die Clientlib (fbclient.dll/gds32.dll)
über die Zeos auf den Firebird-Server zugreift.
Die sind mit MS Visual Studio compiliert.
Das Delphi-Programm muss also nicht nur die Clientlib sondern auch
die msvcp80.dll, msvcr80.dll und mscvcm80.dll "sehen".
Firebird selbst hat Zugriff auf diese Dateien bei der Installation
mit ins ..\Firebird\bin\ kopiert wurden.

alex

mkinzler 4. Mär 2009 19:23

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Die Dlls werden auch nicht von Delphi, sondern von der Client-Dll benötigt. Kopiere siese einfach zusätzlich ins Programmverzeichnis

Jens Hartmann 4. Mär 2009 19:27

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

alex hat geschrieben...
die msvcp80.dll, msvcr80.dll und mscvcm80.dll "sehen".

Diese dll´s befinden sich nicht im bin Ordner von Firebird.

mkinzler 4. Mär 2009 19:33

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Diese sind eigentlich Teil des Downloads bzw. werden vom installer installiert

alex517 4. Mär 2009 19:35

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

Zitat von Jens Hartmann
Diese dll´s befinden sich nicht im bin Ordner von Firebird.

komisch bei mit schon :gruebel:

In der ..Firebird_2_0\doc\Firebird_v2.1.1.InstallationGui de.pdf ist dazu ein downloadlink angegeben
vcredist. exe

alex

Jens Hartmann 4. Mär 2009 19:39

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Die sind auch auf meinem Rechner allerings unter folgendem Pfad zu finden

C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a 1e18e3b_8.0.50727.3053_x-ww_b80fa8ca

nur diese nicht

mscvcm80.dll

Bei mir heiß der Ordner übrigens

C:\Programme\Firebird\Firebird_2_1\bin

Jens Hartmann 4. Mär 2009 19:48

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Also, ich habe jetzt Firebird nochmal neu installiert. Aber auch dabei, werden die dll´s nicht mit installiert.

Von dem Link, was muss ich da laden

mkinzler 4. Mär 2009 19:52

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Der Link verlinkt die englische Version
Hier ist die deutsche http://www.microsoft.com/downloads/d...9-220b62a191ee

Hansa 4. Mär 2009 19:57

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Wie soll denn das was überhaupt werden, ohne Eigeninitiative ?

Ich gebe in google nur den Dateinamen an und erhalte als erstes Ergebnis :

http://www.dll-datei.de/msvcp80.dll,2739

alex517 4. Mär 2009 19:59

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

Zitat von Jens Hartmann
Bei mir heiß der Ordner übrigens
C:\Programme\Firebird\Firebird_2_1\bin

kommt eben ganz darauf an wohin du installiert hast.

Zitat:

Zitat von Jens Hartmann
nur diese nicht mscvcm80.dll

stimmt habe ich auch nicht auf dem Rechner.

Die Angabe stammt aus der von mir in #17
angegebenen Firebird-2.1.2_RC1-Installation.pdf, also FB V.2.1.2.
Ich haben aber nur die V.2.1.1 installiert. Also Asche auf mein Haupt. :oops:
Das Problem muss also spätestens nicht der nächsten FB-Version gelöst werden. :mrgreen:

alex

mkinzler 4. Mär 2009 20:02

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Im Zweifel die aktuellen Abhängigkeiten der Client-Dll mit Hilfe des Dependency Walkers ermitteln

Jens Hartmann 4. Mär 2009 20:17

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

Wie soll denn das was überhaupt werden, ohne Eigeninitiative ?

Ich gebe in google nur den Dateinamen an und erhalte als erstes Ergebnis :
Danke für die Aussage. Und gut das Du bescheid weißt. Es ist ja OK, das ich vieleicht keine Ahnung habe,
aber keine Eigeninitiative lasse ich mir nicht nachsagen.........


Thema...
Ich habe die dll´s jetzt alle in meinem Programmordner, aber es läuft trotzdem nicht.

Was mir jetzt noch aufgefallen ist,ich besitze nur die fbclient.dll und nicht die fbclient20.dll


Zitat:

Und fall´s es Hansa Interessiert, ich habe bereits nach gesucht. www.google.de

mkinzler 4. Mär 2009 20:25

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Die beiden Dlls sind auch alternativ.

hast du mal die Abhängigkeiten gecheckt?

Jens Hartmann 4. Mär 2009 20:27

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Wie meinst Du das

mkinzler 4. Mär 2009 20:28

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

Zitat von Jens Hartmann
Wie meinst Du das

http://www.delphipraxis.net/internal...009377#1009377

Jens Hartmann 4. Mär 2009 20:39

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das habe ich mir schon gedacht.

Ich habe mir das Programm im Netz geladen, und mal gestarte. Ich denke es war richtig die Exe damit zu öffnen.

Im Anhang mal den Screenshot von der Fehlermeldung

mkinzler 4. Mär 2009 20:46

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Markiere mal die fbclient.Dll, dann siehst du welche Dlls von ihr referenziert werden.

Jens Hartmann 4. Mär 2009 20:58

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Die fbclient, finde ich da nicht.

Sie ist aber definitiv im Programmordner enthalten

Jens Hartmann 4. Mär 2009 21:45

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Ich habe da noch eine Idee, wo das her kommen kann. Aber ich vermute schon, das ich damit falsch liege. Kann es sein, weil ich die Firebird 2.1 besitze, aber in Delphi ja nur Protocol 2.0(Also in der Zeos Komponente) einstellen kann. Das der Fehler eventuell davon kommen kann.

mkinzler 4. Mär 2009 21:46

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Nein, weil die Dll abwärtskompatibel ist

Jens Hartmann 4. Mär 2009 21:53

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Dann weiß ich nicht wo ich noch suchen soll.

Warum finde ich Datei fbclient.dll nicht bei Dependency Walkers.

Ich weiß mittlerweile echt nicht mehr,ob das der richtige weg mit der Firebird war. Es wurde ja vorher schon von einigen gesagt. das die für Anfänger sehr schwer sei.

Vieleicht hätte ich es doch besser mit MySQL versucht.

mkinzler 4. Mär 2009 21:56

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Zitat:

Ich weiß mittlerweile echt nicht mehr,ob das der richtige weg mit der Firebird war. Es wurde ja vorher schon von einigen gesagt. das die für Anfänger sehr schwer sei.
Warum sollte FireBird für Anfänger schwer sein? Und warum MySQL leichter?
Lade mal die Dll direkt mit dem DW


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz