Zum Inhalt springen

[VB6] Programm anhalten bis DB-Zugriff beendet ist


Empfohlene Beiträge

Geschrieben

Ich sitze gerade an einem Formular das aus einer dll raus gestartet wird. Im Form-Load-Ereignis will ich folgendes machen:

1. Den Inhalt einer Tabelle in einer Accessdb per ADO-Recordset löschen

2. Das Ergebnis einer Abfrage über 3 Tabellen in die leere Tabelle schreiben, ebenfalls per ADO-Recordset

3. Ein Flexgrid mit dem Inhalt dieser Tabelle füllen

Komischerweise werden die Daten aus der Abfrage nur bei jedem 2. Durchlauf in die Tabelle geschrieben, wobei der letzte Datensatz im Flexgrid (nicht in der Tabelle) fehlt. Lasse ich mir in der Schleife des Recordsets die Datensätze ausgeben, werden diese vollständig bearbeitet.

Zur Überprüfung habe ich hinter jeden dieser Schritte eine Messagebox gesetzt um die Ausführung anzuhalten. Warte ich mit dem bestätigen der Messagebox einige Sekunden, wird der Inhalt jedesmal korrekt in die Tabelle geschrieben und alle Datensätze in dem Flexgrid angezeigt.

Das Ganze sieht für mich so aus, als ob der Code schon weiter abgearbeitet wird, obwohl die Daten in der Access-Tabelle noch nicht vollständig aktualisiert sind.

Kann man irgendwie das weiterlaufen des Programms anhalten, bis die Datenbank vollständig aktualisiert ist? Oder könnte das an etwas anderem liegen?

Geschrieben

Versuchs mal mit einem Doevent zwischen deinen Anweisungen.

Normalerweise müsste er dann warten bis die Anweisungen bis zu diesem Zeitpunkt vollständig ausgeführt wurden.

Falls das Problem bei Access liegt, dann setz ein Timer dazwischen oder frag in ner Schleife nach bis alle Datensätze erstellt wurden.

Hoffe ich konnte dir weiterhelfen.

Blondi

Geschrieben

Danke schon mal. Das Doevents werde ich morgen probieren.

Einen Timer oder eine "Warteschleife" wollte ich eigentlich vermeiden, da die Anzahl der Datensätze die die Abfrage liefert sehr stark schwanken kann und ich unnötige Wartezeit, bei nur wenigen Datensätzen vermeiden will.

Geschrieben

Das DoEvents hat leider nichts geholfen.

Ich hab das jetzt aber hinbekommen. Wenn ich nach jedem Schritt das Recordset noch mal mit einer normalen Select-Anweisung öffne und direkt wieder schliesse werden die Schritte richtig ausgeführt.

Ist so zwar nicht sonderlich schön, aber wenigstens funktioniert es.

Geschrieben
Original geschrieben von Wolle

Das DoEvents hat leider nichts geholfen.

DoEvents sind eigentlich auch nur dafür da, Windows mit einem Programm das viel machen muss nicht einzufrieren... z.b. lässt das DoEvent zu das der Taskmanager auf Anweisung ausgeführt wird...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...