![]() |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Hallo,
per Doppelklick auf das DataSet, um im DBGrid das besser anzeigen zu können. Ich denke aber, dass es daran liegt, dass du in OnButton1 etwas machst und dann "irgendwo" auf die Query zugreifst, die viell. in der Zwischenzeit schon wieder was ganz anderes geladen hat. Das ist immer schwer zu finden. Mach doch deine Abfrage nach ID mal direkt nach dem Open. Heiko |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Ja, das stimmt. direkt nach dem Open geht´s.
Ich mache aber zu dem Zeitpunkt eigendlich gar nichts mit der Query. Da muss ich mal suchen, was da gerade passiert. |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
So, ich habe das jetzt mal geprüft. Im OI ist die Query nicht Connect und auch nicht Open.
Im FormCreate greife ich auch noch nicht drauf zu. Im FormActivate starte ch dann die Funktion VSTFuellen, in der ich das erste mal auf die Query zugreife.
Delphi-Quellcode:
Um auf das DataSet mal zurückzukommen. Ich habe gar keine Komponente, die dies zur Verfügung stellt. Da ich nicht mit einem DBGrid sondern mit dem VirtualStringTree arbeite, brauche ich der doch keine, Oder?
procedure TForm1.VSTFuellen;
var Daten : TOMB256PLUS; Count : Integer; iError : Integer; sMessage : String; begin if ServiceGetStatus('', 'FirebirdGuardianDefaultInstance') = 4 then begin QryMB256PLUS.SQL.Clear; QryMB256PLUS.SQL.Text := 'SELECT ID FROM MB256PLUS'; //Selbst hier kommt schon der Fehler if not QryMB256PLUS.Active then begin iError := 0; Repeat Try QryMB256PLUS.Open; Except on e : Exception Do begin sMessage := e.Message; Inc(iError); Application.ProcessMessages; Sleep(1000); end; end; until QryMB256PLUS.Active or (iError > 5); // <- bitte ausprobieren, ob 5 reicht oder eventuell höher sein muss. if iError > 5 then begin ShowMessage('Die Datenbank konnte mit ' + IntToStr(iError) + ' Versuchen nicht geöffnet werden.' + #13 + 'Die letzte Fehlermeldung lautete: ' + sMessage); Application.Terminate; // <- oder sonstige Fehlerbehandlung. end; end; VST.BeginUpdate; VST.Clear; QryMB256PLUS.First; .... |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Klicke dann doch mal, auf den Query und überprüfe, ob das Felder angelegt sind!
|
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Genial Markus.
Das war es. Ich habe am Anfang von meinen Datenbankversuchen mal mit einem DBGrid und einer DataSource gearbeitet. Davon stammten die Eintragungen noch. So, jetzt kann ich wenigstens mal weiter machen mit meinem Problem. Dank Euch erstmal. Melde mich bestimmt bald wieder. |
Re: Datenbank in VirtualTreeView anzeigen und auswerten
Hallo zusammen,
hat alles super geklappt. Habe jetzt die gesamte Funktion umgebaut und es scheint zu funtionieren. Werde jetzt mal einen Testlauf bis heute Abend machen, und schauen ob es dann noch funktioniert. Folgende Lösung, habe ich jetzt um neue Einträge in mein VST einzufügen.
Delphi-Quellcode:
Ich hoffe das ist so alle OK.
procedure TForm1.TreeViewResult(ParserTreeView: TMyBaseParser);
var Daten : TOMB256PLUS; begin 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 := ParserTreeView.Entries[0].LfdNr; QryMB256PLUS.ParamByName('Datum').AsString := ParserTreeView.Entries[0].Datum; QryMB256PLUS.ParamByName('Uhrzeit').AsString := ParserTreeView.Entries[0].Uhrzeit; QryMB256PLUS.ParamByName('Ereignis').AsString := ParserTreeView.Entries[0].Ereignis; QryMB256PLUS.ParamByName('Teilnehmer').AsString := ParserTreeView.Entries[0].Teilnehmer; QryMB256PLUS.ParamByName('Bereich').AsString := ParserTreeView.Entries[0].Bereich; QryMB256PLUS.ExecSQL; ConMB256PLUS.Commit; QRyMB256PLUS.Close; QryMB256PLUS.SQL.Text := 'Select Max(ID) As ID From MB256PLUS'; QryMB256PLUS.Open; VST.BeginUpdate; Daten := TOMB256PLUS.Create; with Daten do begin Daten.ID := QryMB256PLUS.FieldByName('ID').AsInteger; Daten.LfdNr := ParserTreeView.Entries[0].LfdNr; Daten.Datum := ParserTreeView.Entries[0].Datum; Daten.Uhrzeit := ParserTreeView.Entries[0].Uhrzeit; Daten.Ereignis := ParserTreeView.Entries[0].Ereignis; Daten.Teilnehmer := ParserTreeView.Entries[0].Teilnehmer; Daten.Bereich := ParserTreeView.Entries[0].Bereich; end; VST.AddChild(nil, Daten); VST.ScrollIntoView(VST.GetLast, true); VST.EndUpdate; QRyMB256PLUS.Close; DataMB256plus := ''; end; Danke schon mal an alle. PS: Diese antwort gebe ich auch auf den anderen Thread, Damit auch jeder bescheid weis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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