db.CreateQueryDef bringt Laufzeitfehler 91

  • Access

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von DoSchwob.

    db.CreateQueryDef bringt Laufzeitfehler 91

    Hallo, :(

    ich sitze schon seit Tagen an diesem Problem und bin am verzweifeln. Ich habe ein Access(XP)-Projekt u greife somit auf den SQL-Server zu, wo die Datenbank liegt.

    Mit diesem Code stimmt was nicht....beim Ausführen bleibt er an der Stelle db.CreateQueryDef stehen und sagt "Objektvariable nicht definiert". Ich brauche die Zwischenabfrage jedoch..., weil eine andere Sicht darauf aufbaut. ich möchte auch gern zusätzlich den Parameter "Datum" übergeben.. Aber nicht mal das simpelste funktioniert. Ein Update auf die Tabelle KFZ funktioniert wiederum...Was mache ich falsch?? (siehe unten)!

    Visual Basic-Quellcode

    1. Dim stSQL As String
    2. Dim qdfNew As QueryDef
    3. Dim stAbfrage As String
    4. Dim db As Database
    5. stAbfrage = "Test"
    6. stSQL = "SELECT * from KFZ "
    7. Set db = CurrentDb
    8. Set qdfNew = db.CreateQueryDef(stAbfrage, stSQL)


    Edit by Mad Andy:
    VB-Tag eingefügt. In Zukunft bitte selbst machen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    *Topic verschoben* - handelt sich hierbei um Access, somit VBA

    Hi!

    Ich hab nicht viel Ahnung von Access, ich tippe im Moment aber auf die Variable db. Wenn ich mich nicht irre, kommt die Fehlermeldung meistens, wenn eine Variable zwar deklariert ist, jedoch auf keine Instanz verweist. Bei den beiden Strings ist das auszuschließen und alles, was links vom = steht, kannst auch nicht sein.
    Sicher, dass CurrentDb stimmt? Guck mal beim Debuggen (Single Step, Variablen-Inhalte überprüfen), ob dir irgendetwas auffällt.
    Warst nah dran

    Visual Basic-Quellcode

    1. Dim db As Database
    2. Dim qdfNew As QueryDef
    3. Dim rs As Recordset
    4. Dim stAbfrage As String
    5. stAbfrage = "Test"
    6. Set db = CurrentDb
    7. Set qdfNew = db.QueryDef(stAbfrage)
    8. Set rs = qdfNew.OpenRecordset
    9. If rs.AbsolutePosition = -1 Then
    10. Exit Sub 'Keine Daten
    11. Else
    12. While rs.EOF = False
    13. 'Tu irgendwas z.B. rs![Feldname].Value ...
    14. rs.MoveNext
    15. Wend
    16. End If
    17. rs.Close
    18. Set rs = Nothing
    19. Set qdfNew = Nothing
    20. Set db = Nothing

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DoSchwob“ ()

    Mit Datumsübergabe als Paramter, wobei deine Abfrage folgenden SQL Code hat:
    "PARAMETERS [DATUM] DateTime; SELECT KFZ.* FROM KFZ WHERE (((KFZ.Feld)=[DATUM]));"

    sonst wie oben

    Visual Basic-Quellcode

    1. ...
    2. Dim dtDatum As Date
    3. stAbfrage = "Test"
    4. dtdate = "1.1.2008"
    5. Set db = CurrentDb
    6. Set qdfNew = db.QueryDef(stAbfrage)
    7. qdfNew.Parameters![DATUM] = dtdate
    8. Set rs = qdfNew.OpenRecordset
    9. ...


    Warum willst du eine Query erstellen statt einer bestehenden Parameter zu übergeben?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DoSchwob“ ()

    Es kommt immer wieder der selbe Fehler.....

    bei Set qdfNew = db.QueryDefs(stAbfrage)

    an der Stelle db.QueryDefs kommt ein Laufzeitfehler--> Objektvariable oder With Blockvariable niht festgelegt... ;(

    Ist echt schlimm...an was kann das liegen??? Den DAO-verweis habe ich richtig gesetzt....

    vg kathe