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