Delphi-PRAXiS
Seite 9 von 9   « Erste     789   

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)

hoika 19. Mär 2009 19:23

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

Jens Hartmann 19. Mär 2009 20:10

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.

Jens Hartmann 19. Mär 2009 21:03

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:
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;
....
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?

mkinzler 19. Mär 2009 21:07

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Klicke dann doch mal, auf den Query und überprüfe, ob das Felder angelegt sind!

Jens Hartmann 19. Mär 2009 21:15

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.

Jens Hartmann 20. Mär 2009 12:44

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:
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;
Ich hoffe das ist so alle OK.

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 14:08 Uhr.
Seite 9 von 9   « Erste     789   

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