Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[VB6] Programm anhalten bis DB-Zugriff beendet ist

Empfohlene Antworten

Veröffentlicht

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?

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

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.

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.

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...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.