Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DBGrid hängt manchmal bei zugriff auf Tabelle über Datasourc (https://www.delphipraxis.net/132933-dbgrid-haengt-manchmal-bei-zugriff-auf-tabelle-ueber-datasourc.html)

Tempdir 22. Apr 2009 08:52

Datenbank: TurboDB • Version: 5.16 • Zugriff über: TurboDB-Komponenten

DBGrid hängt manchmal bei zugriff auf Tabelle über Datasourc
 
Hallo,

ich habe ein seltsames Problem das mich schon viel Zeit gekostet hat:

Auf meinem Hauptformular habe ich eine Routine die beim Empfang von Daten über Netzwerk ausgelöst wird. In dieser Routine werden dann die Daten über eine Tabellen-Komponente in eine Datenbank gespeichert - etwa so:

Delphi-Quellcode:
    //Neuen Datensatz einfügen
    TdbTable[ClientID].Append;

    //Datensatz mit Daten füllen
    for I := 1 to (Datalength) do
    begin
      TdbTable[ClientID].Fields[i].Value := Data[i];
    end;

    //Datensatz in Datenbank speichern
    TdbTable[ClientID].Post;


//Hinweis: TdbTable ist dabei ein Array von mehreren Tabellen-komponenten
Also ich schreibe meine Empfangenen Daten einfach in eine Tabelle, welche mit einer TurboDB-Datenbank verknüpft ist, und Poste diese dann.

Während all dies geschieht kann man ein anderes Formular (Monitor) aufrufen, das den Inhalt der Datenbank anzeigt. Dieses "Monitor"-Formular verfügt über ein DBGrid und eine Datasource-Komponente. Diese Datasource-Komponente ist direkt mit der obigen Tabelle verknüpft:

Delphi-Quellcode:
    //Dem Datasource auf dem "Monitor"-Formular die Tabelle von oben zuweisen
    DataSource1.DataSet := UnitMain.TdbTable[ClientID];
Mein Problem:
Es werden permanent Daten empfangen und gepostet. Wenn ich jetzt die Monitor-Form aufrufe sehe ich, dass das DBGrid ständig mit den neu erhaltenen Daten gefüllt wird. Allerdings kommt es öfters mal vor, dass beim Aufruf der Monitor-Form das DBGrid sich nicht aktualisiert und das Hauptformular im Hintergrund dann seinen Dienst einstellt (verarbeitet nicht mehr die empfangenen Daten). Das passiert besonderst wenn sehr viele Daten/Sekunde ankommen.

Ich wär für jeden Tipp sehr dankbar!

hoika 22. Apr 2009 08:59

Re: DBGrid hängt manchmal bei zugriff auf Tabelle über Datas
 
Hallo,

trenne die beiden Sachen durch Nutzung von 2 Tabellen.
Wurden Daten neu eingetragen, kannst du Table_DBGrid.Refresh aufrufen,
um die Daten im DBGrid zu aktualisieren.

Alternativ kannst du das DBGrid während des Eintragens in die Tabelle auch "abkoppeln"
(DisableControls aufrufen).


Heiko

Tempdir 22. Apr 2009 09:52

Re: DBGrid hängt manchmal bei zugriff auf Tabelle über Datas
 
Danke für die Tipps, leider konnte keiner das Problem lösen. Allerdings bin ich jetzt ein Stück weiter gekommen. Meine Empfangsroutine (UDPRead - Indy UDP Komponente) friert manchmal nach Aufruf meines Monitor-Formulars ein, bzw. wird nicht mehr ausgelöst.

Mal schaun wie ich das Problem in den Griff bekomme ... hmm

Tempdir 22. Apr 2009 10:03

Re: DBGrid hängt manchmal bei zugriff auf Tabelle über Datas
 
Das Problem scheint gelöst zu sein!!! :)

Ich habe mein Monitor-Formular bisher zur Laufzeit erzeugt. Das Problem hierbei war dass ich "ShowModal" benutzt habe.

Lösung: Das Formular wird jetzt automatisch erzeugt, und ich zeige es nun per:

Delphi-Quellcode:
frmMonitor.Show;
an. Schließen ganz normal über:

Delphi-Quellcode:
  Close;
Damit klappt es BISHER super - mal sehen was noch kommt. Danke für die Hilfe !!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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