Announcement

Collapse
No announcement yet.

HILFE !! => ADODataSet.Refresh erzeugt Speicherloch

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • HILFE !! => ADODataSet.Refresh erzeugt Speicherloch

    Lese eine SQL Datenbank mit ADOConnection und ADODataSet. Um eventuelle Änderungen mitzubekommen, führe ich jede Secunde einen ADODataSet.Refresh aus. Aber bei jeden Refresh zählt der Speicher hoch und führ unweigerlich zum Überlauf.
    Kann mir jemand helfen? Mache ich was falsch? Habe ich eine alte Komponente (OCX)? [Defphi 7 sp1].

  • #2
    sag mal, wie kommst Du darauf, daß ein "Speicherloch" auftritt? Wenn Du zuviele Daten einliest, dann läuft die Komponente eben über. Du solltest mal Deine Select-Anweisung angeben!

    Grüße, Marti

    Comment


    • #3
      Jede Sekunde ein Refresh bei SQL? *aua* der Server tut mir irgendwie leid :-)
      Du solltest die Anwendung unbedingt so auslegen, dass sie ohne dauernde Aktualisierung auskommt. Das ist nicht ganz leicht, allerdings gibt es meistens recht eindeutige Indekatoren, wann eine Aktualisierung notwendig ist. Im Notfall kann man immer noch irgendwo in einem DB-Feld, dass dann oft aktualisiert wird, die Information ablegen, dass die Datenbank geaendert wurde.
      Wenn du's gleich richtig machen willst, dann leg das ganze als Three Tier Anwendung mit einer Zwischenschicht, die die Clients benachrichtigt, an.

      Fuer den "Klassiker" Refresh/Requery empfiehlt sich ausserdem, das Forum zu durchsuchen - das Problem wurde hier schon oftmals diskutiert

      Comment


      • #4
        Jede Sekunde ist die schnellste UpDate Möglichkeit. Kann natürlich über die Registry eingestellt werden. Das muss der Anwender dann entscheiden. Das funktioniert ja auch alles prima, auch wenn die Belastung hoch ist. Es gibt weiter keine Indikatoren einer für DataChange, da der Server Meilen weit weg ist.
        Aber zum eingentlichen Problem: Wenn ich "ADODataSet.Refresh" auskommentiere, ist der Speicher Stabil! Also ich mache nichts als nur eine Property der Komponente zu benutzen. Auch der Datensatz ist nicht sehr groß, umfaßt nur 14 Spalten mit jeweils 54 Zeilen. Deswegen ist mir die Erscheinung ja so unverständlich. Habe es jetzt erst mal so gelößt, das ich die Komponenten ADOConnect und ADODataSet vernichte und wieder entstehen lasse. Damit geht es. Sonst fällt mir nichts ein. Vielleicht jemand anders

        Comment


        • #5
          > Habe es jetzt erst mal so gelößt, das ich die Komponenten ADOConnect und ADODataSet vernichte und wieder entstehen lasse.

          Hört sich für mir an als würden irgendwo zirkuläre Referenzen auf die nativen COM-Objekte in den ADO-Wrappern vorhanden sein. Kannst Du die Testanwendung mal auf die nativen ADO-Objekte umstellen ohne die Borland-Wrapper

          Comment

          Working...
          X