![]() |
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; |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
|
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; |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Tausche mal die TZTable durch ein TZQuery aus
|
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: |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Den Anhang solltest du vielleicht auch anhängen :zwinker:
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
So Anhang ist drin :thumb: :thumb: :thumb: :thumb:
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Steht den ein fester Pfad zum Client in der Kompo?
|
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 |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Kommt der Fehler beim Aufruf aus der IDE?
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Ja, aber auch, wenn ich die Exe so starte.
|
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.
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Habe ich oben schon geschrieben. Jawohl alles das ist erfüllt.
Zitat:
|
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 |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
|
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. |
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: ![]() unter "Installation of Microsoft system libraries". alex |
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. |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
ü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 |
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
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Diese sind eigentlich Teil des Downloads bzw. werden vom installer installiert
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
In der ..Firebird_2_0\doc\Firebird_v2.1.1.InstallationGui de.pdf ist dazu ein downloadlink angegeben ![]() alex |
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 |
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 |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Der Link verlinkt die englische Version
Hier ist die deutsche ![]() |
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 : ![]() |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
Zitat:
Die Angabe stammt aus der von mir in ![]() 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 |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Im Zweifel die aktuellen Abhängigkeiten der Client-Dll mit Hilfe des Dependency Walkers ermitteln
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
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:
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Die beiden Dlls sind auch alternativ.
hast du mal die Abhängigkeiten gecheckt? |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Wie meinst Du das
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
![]() |
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 |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Markiere mal die fbclient.Dll, dann siehst du welche Dlls von ihr referenziert werden.
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Die fbclient, finde ich da nicht.
Sie ist aber definitiv im Programmordner enthalten |
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.
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Nein, weil die Dll abwärtskompatibel ist
|
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. |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Zitat:
Lade mal die Dll direkt mit dem DW |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz