Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Fehler im VBA Code

Begonnen von langmantl10247, Juli 02, 2015, 08:08:20

⏪ vorheriges - nächstes ⏩

langmantl10247

Hallo, habe folgende Routine aus einer funktionierenden Datenbank kopiert und keinerlei Änderung vorgenommen.
Die Datenbank aus der ich das kopierte ist unter Access 00 entstanden ich arbeite mit 2010


Private Sub btnFeiertageInTabelle_Click()
    If IsNull(Me.cmbBundesland) Then
        MsgBox "Bitte wählen Sie zunächst das gewünschte Bundesland aus."
        Exit Sub
    End If
    If Me.txtVon > Me.txtBis Then
        MsgBox "Die im Feld Von: angegebene Jahreszahl darf nicht größer als die im Feld Bis: angegebene Jahreszahl sein."
        Exit Sub
    End If
    DoCmd.RunSQL "DELETE * FROM Feiertage"
    Dim con As Connection
    Dim rstQuelle As New Recordset
    Dim rstZiel As New Recordset
    Dim Kriterium As String
    Dim Jahr As Long
    Set con = CurrentProject.Connection
    rstQuelle.Open "qryFeiertage", con, adOpenDynamic, adLockOptimistic
    rstZiel.Open "Feiertage", con, adOpenDynamic, adLockOptimistic
    Kriterium = "[BundeslandNr] = " & Me.cmbBundesland
    rstQuelle.Filter = Kriterium
    For Jahr = Me.txtVon To Me.txtBis
        rstQuelle.MoveFirst
        Do While Not rstQuelle.EOF
            rstZiel.AddNew
            rstZiel!Feiertag = rstQuelle!Feiertag
            rstZiel!Datum = DatumErmitteln(rstQuelle!FeiertagNr, rstQuelle!BundeslandNr, Jahr)
            rstZiel.Update
            rstQuelle.MoveNext
        Loop
    Next Jahr
End Sub

Jedes Mal wenn ich das Formular ausführe und den Button klicke, unter dem diese Routine gespeichert ist, zeigt er mir folgende Fehlermeldung an

Fehler beim Kompilieren
Unzulässige Verwendung des Schlüsselworts New

Wenn ich in meinem Access die Herkunftsdatenbank, die in Access 2000 entstanden ist öffne funktioniert die Funktion fehlerfrei,
Woran liegt das, wer kann mir helfen

Wurliwurm

Zitat von: langmantl10247 am Juli 02, 2015, 08:08:20
Woran liegt das, wer kann mir helfen

Das weiß ich auch nicht. Ich würde Dir empfehlen, explizit immer ADODB bei den Connections+Recordsets davor zu schreiben, damit das eindeutig ist.

Ersetze mal
Dim rstQuelle As New Recordset
mit
Dim rstQuelle as Adodb.recordset
Set rstquelle = new Adodb.recordset


markusxy

Wenn du deinen Code kompilieren würdest, dann wäre ja sofort klar in welcher Zeile der Fehler liegt.

Wenn du den Hinweis von Wurliwum umsetzt, dann wird es wahrscheinlich auch funktionieren.

Das Problem liegt an der Reihenfolge der Verweise, da es ADO und DAO Recordsets gibt und der Compiler davon ausgeht, dass es ein DAO Recordset ist - eben aufgrund der Reihenfolge der Verweise -> siehe Extras Verweise. Wenn diese Reihenfolge entsprechend verändert wird, dann funktioniert der Code auch ohne Adaptierung, dafür hast du dann wahrscheinlich wieder andere Probleme.

ebs17

Zur Unterstreichung: In Acc2000 war ADO neu und in den Verweisen priorisiert, sofern man nicht selber Hand angelegt hat. Inzwischen ist wieder DAO erste Wahl, und es wird primär ein DAO-Recordset erstellt, das aber nun mit der Methode New nichts anfangen kann (=> db.OpenRecordset).
Mit freundlichem Glück Auf!

Eberhard