AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank in VirtualTreeView anzeigen und auswerten
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank in VirtualTreeView anzeigen und auswerten

Ein Thema von Jens Hartmann · begonnen am 3. Mär 2009 · letzter Beitrag vom 20. Mär 2009
 
Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Datenbank in VirtualTreeView anzeigen und auswerten

  Alt 15. Mär 2009, 08:18
Hallo nochmal zusammen,

habe das ganze jetzt ausgiebig geprüft, und habe leider festgestellt, das da noch irgendein zeitliches Problem bestehen muss.

Starte ich meine Verbindung um Daten von der COM Schnittstelle zu holen, geht das, möchte ich diese allerdings wieder trennen, kommen zwar keine weiteren Daten ins VST, aber mein Programm scheint an irgendeiner Stelle hängen zu bleiben. Oder was ich eher Vermute, weil wenn ich lange Daten hole, und mein Programm minimiere, und später wieder vergrößern will, dauert das unwahrscheinlich lange bis das VST neu gezeichnet ist oder es hgeht gar nicht.

Daher vermute ich, das ich mir irgendwo den Speicher zu mülle.

Mein Object gebe ich allerdings wieder frei.

Hier mal der Code..

Delphi-Quellcode:
{Datensatzverarbeitung}
procedure TForm1.TreeViewResult(ParserTreeView: TMyBaseParser);
var
  i: Integer;
  Temp1 : Integer;
  Temp2 : String;
  Temp3 : String;
  Temp4 : String;
  Temp5 : String;
  Temp6 : String;
  Daten : TOMB256PLUS;
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;
  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;

  VST.BeginUpdate;
  Daten := TOMB256PLUS.Create;
  QryMB256PLUS.Last;
  with Daten do
  begin
    Daten.ID := QryMB256PLUS.FieldByName('ID').AsInteger;
    Daten.LfdNr := QryMB256PLUS.FieldByName('LfdNr').AsInteger;
    Daten.Datum := QryMB256PLUS.FieldByName('Datum').AsString;
    Daten.Uhrzeit := QryMB256PLUS.FieldByName('Uhrzeit').AsString;
    Daten.Ereignis := QryMB256PLUS.FieldByName('Ereignis').AsString;
    Daten.Teilnehmer := QryMB256PLUS.FieldByName('Teilnehmer').AsString;
    Daten.Bereich := QryMB256PLUS.FieldByName('Bereich').AsString;
  end;
  VST.AddChild(nil, Daten);

          if Pos('Einbruch',Daten.Ereignis)
            or Pos('EINBRUCH',Daten.Ereignis) > 0 then
          begin
          CBAlarme.Items.Add(Daten.Ereignis);
          CBAlarme.ItemIndex := 0;
          CBAlarmeDatum.Items.Add(Daten.Datum);
          CBAlarmeDatum.ItemIndex := 0;
          end;

          if Pos('Störung',Daten.Ereignis)
            or Pos('STÖRUNG',Daten.Ereignis) > 0 then
          begin
          CBStoerungen.Items.Add(Daten.Ereignis);
          CBStoerungen.ItemIndex := 0;
          CBStoerungenDatum.Items.Add(Daten.Datum);
          CBStoerungenDatum.ItemIndex := 0;
          end;

          if Pos('Extern',Daten.Ereignis) > 0 then
          begin
          CBExtern.Items.Add(Daten.Ereignis);
          CBExtern.ItemIndex := 0;
          CBExternDatum.Items.Add(Daten.Datum);
          CBExternDatum.ItemIndex := 0; end;

          if Pos('Intern',Daten.Ereignis) > 0 then
          begin
          CBIntern.Items.Add(Daten.Ereignis);
          CBIntern.ItemIndex := 0;
          CBInternDatum.Items.Add(Daten.Datum);
          CBInternDatum.ItemIndex := 0;
          end;

  VST.ScrollIntoView(VST.GetLast, true);
  VST.EndUpdate;
  QRyMB256PLUS.Close;
  DataMB256plus := '';
end;


procedure TForm1.VSTFreeNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode);
var
  Daten : TOMB256PLUS;
begin
  Daten := TOMB256PLUS(VST.GetNodeData(Node)^);
  Daten.Free;
end;
Leider kann ich mit Haltepunkten nichts anfangen. Da ich bei den vielen bereits gesetzten nichts falsches Enddecken kann.

Hat vieleicht jemand eine Idee.

Gruß und Danke Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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-2025 by Thomas Breitkreuz