CListCtrl aktualisiert sich falsch



  • Hallo Leute,

    nachdem ich nun doch auch allein den Weg zum Unicode gefunden habe (mit dem hier gefundenen Tutorial versteht sich) rollt auch schon wieder was auf mich zu.
    Ich habe eine CListCtrl die mir den inhalt einer Testdatenbank anzeigt. Ich bekomme es hin Änderungen anzeigen zu lassen und neue Sätze auch sofort anzeigen zu lassen (also Satz auswählen und Daten in einem Unterdialog ändern oder hinzufügen). Danach lasse ich die Liste neu aufbauen und die Änderungen anzeigen. Funktioniert auch alles, außer beim Löschen eines Satzes.

    Egal ob:

    CListCtrl.DeleteAllItems();
    CListCtrl.DeleteItems();

    mit anschließendem neu füllen bzw. RedrawWindow, der eben gelöschte Satz bleibt in der Anzeige stehen, sie wird einfach nicht aktualisiert.

    Hat jemand ne Idee?
    DB ist, wenn man es so nennen kann Access über ODBC angebunden.

    Viele Grüße,
    Ranger



  • Hallo nochmal!

    Es wird noch verrückter, im Debugger sehe ich, dass die Funktion

    CListCtrl.DeleteAllItems();
    

    mit TRUE zurück kommt, also alles funktioniert hat und siehe da, im Debugger gehts dann auch. Kann Access so langsam sein, dass ich ne Wartesekunde einbauen muss?

    Vielen Dank schonmal,

    Ranger



  • wird denn nach dem löschen einer Zeile die Datenbank updatet ??

    Turmfalke



  • wird denn nach dem löschen einer Zeile die Datenbank updatet ??

    Turmfalke



  • Es scheint so zu sein, denn wie gesagt wenn ich im Debugger durchgehe macht er es korrekt. Wenn ich die Applikation schließe und wieder öffne zeigt er auch den korrekten Inhalt der Db an, nur wenn ich gleich nach dem Löschen die Liste neu füllen will zeigt er den alten Datensatz mit an.

    Ranger



  • gleich nach dem Löschen die Liste neu füllen will

    Mit welchem Bestand füllst Du die Liste neu - aus einem Array, aus der DB oder ...? Sieh da mal nach. Falls Du die Sätze aus der DB holst - vielleicht ist die Transaktion zu dem Zeitpunkt einfach noch nicht abgeschlossen? Oder der Abschluss geschieht mit dem Beenden der Applikation (deshalb ist beim erneuten Öffnen alles OK)? Es gibt da viele Möglichkeiten. Am DeleteAllItems und dem anschließenden InsertItems wird es nicht liegen.



  • Jo, sowas hab ich mir auch gedacht. Die Liste füll ich sofort nach dem Löschen mit den Inhaltten der DB neu. Wenn die Transaktion abgeschlossen ist scheint es ja zu gehen.
    Ich schließe die DB erst wieder bevor ich sie neu auslese. Sollte ich sie offen lassen? Dann könnte es doch sein, dass er für meine neue Anfrage nach Tabelleninhalten erst die vorherige Transaktion abschließt.

    Vielen Dank erstma,
    Ranger



  • Keine Ahnung, ich kenne mich nur mit Oracle aus und da kann ich "Autocommit" auf false stellen und das Commit dann explizit auftrufen.

    Probier's doch aus.


Log in to reply