Einzelnen Beitrag anzeigen

Tempdir

Registriert seit: 19. Feb 2009
Ort: Karlsruhe
84 Beiträge
 
RAD-Studio 2009 Pro
 
#1

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

  Alt 22. Apr 2009, 09:52
Datenbank: TurboDB • Version: 5.16 • Zugriff über: TurboDB-Komponenten
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!
  Mit Zitat antworten Zitat