vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
copyFromRecordSet wartet nicht auf die Abfrage. Alternative zu Wait? 
Autor: rahan
Datum: 02.07.10 11:51

Hallo Leute,

ich bekomme eine Fehlermeldung, wenn ich Werte von einer Abfrage in Excel kopieren möchte. Nur mit Hilfe des Wait Befehls erscheint er nicht. Oder anderst ausgedrückt. Im schrittweisen Durchlauf funtkioniert der Code wunderbar, nur wenn ich ihn durchlaufen lasse funktioniert es nicht.

Gibt es da keine bessere Lösung? Und warum wartet er nicht auf den RecordSet?

'Ausführen
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
 
    'Ins Excel kopieren
    appExcel.Sheets("Datengrundlage").Range("A11").CopyFromRecordset rst
Die Abfrage dauert so ca 6 Sekunden und greift auf einen MS Sql Server zu.
Beim Kopieren kommt dann immer ein Fehler. Wartet man oder sagt im Debug Modus weiter funktioniert alles prima. Auch ein rst.MoveLast und ein rst.MoveFirst haben nix geholfen.

Behelfsweise habe ich es so gelöst, allerdings verstehen tue ich das immer noch nicht. Es muss doch eine bessere Methode geben.




'Ausführen
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
 
On Error GoTo Abfrage_noch_nicht_bereit
 
'Ins Excel kopieren
appExcel.Sheets("Datengrundlage").Range("A11").CopyFromRecordset rst
 
'Error wieder aufheben
On Error GoTo 0
 
Abfrage_noch_nicht_bereit:
'Wird höchsten 3 mal ausgeführt
Wait 1500
Resume Next
PS. Mit diesem Wait Befehl
'Rahan
'01.07.2010
'Api aus dem kernel32 für wait
Private Declare Function WaitForSingleObject Lib "kernel32" _
    (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
 
'Rahan
'01.07.2010
'Ewartet wird die Zeitangabe in Millisekunden
'z.B. 1000 für 1 Sekunde
Public Function Wait(ByVal mSek As Long)
    WaitForSingleObject -1, mSek
End Function
Vielleicht kann mir jemand das merkwürdige Verhalten erklären und hat ein Lösungsvorschlag.

Danke im Voraus
Rahan
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
copyFromRecordSet wartet nicht auf die Abfrage. Alternative ...2.169rahan02.07.10 11:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel