Hallo,
habe mich mal mit dem Tipp von HONDO bezüglich Fehler bei Anfüge-Abfragen beschäftigt, und dazu auch im Handbuch "Richtig einsteigen: Access 2010 VBA-Programmierung"
was dazu gelesen. Stichwort Transaktionen.
Nun habe ich mal meinen bisherigen Code:
Private Sub Befehl13_Click()
10 On Error GoTo Befehl13_Click_Error
20 DoCmd.SetWarnings False
30 DoCmd.Hourglass True
40 DoCmd.OpenQuery "ObjectAFL-Löschen", acViewNormal, acEdit
50 DoCmd.OpenQuery "CodesAFL-Löschen", acViewNormal, acEdit
60 DoCmd.OpenQuery "Object-Löschen", acViewNormal, acEdit
70 DoCmd.OpenQuery "Codes-Löschen", acViewNormal, acEdit
80 Forms![Hintergrund]![Datum_Rundholz_von] = Forms![Grundlage Export Navi]![Datum_Rundholz_von]
90 Forms![Hintergrund]![Datum_Rundholz_bis] = Forms![Grundlage Export Navi]![Datum_Rundholz_bis]
100 DoCmd.OpenQuery "Anfügen-Codes", acViewNormal, acEdit
110 DoCmd.OpenQuery "Anfügen-Codes-Rundholz", acViewNormal, acEdit
120 DoCmd.OpenQuery "Object anfügen", acViewNormal, acEdit
130 DoCmd.OpenQuery "Object anfügen-Rundholz", acViewNormal, acEdit
140 DoCmd.Hourglass False
150 MsgBox "Daten wurden an übertragen. ", 64, "Hinweis!"
170 DoEvents
180 DoCmd.Close
190 On Error GoTo 0
200 Exit Sub
Befehl13_Click_Error:
210 MsgBox "Error " & Err.Number & " in Zeile " & Erl & " (" & Err.Description & ") in procedure Befehl13_Click of VBA Dokument Form_Grundlage Export Navi"
End Subdurch diesen ersetzt:
Private Sub Befehl13_Click()
10 On Error GoTo Befehl13_Click_Error
20 DoCmd.Hourglass True
30 BeginTrans
40 CurrentDb.QueryDefs("ObjectAFL-Löschen").Execute
50 CurrentDb.QueryDefs("CodesAFL-Löschen").Execute
60 CurrentDb.QueryDefs("Object-Löschen").Execute
70 CurrentDb.QueryDefs("Codes-Löschen").Execute
80 Forms![Hintergrund]![Datum_Rundholz_von] = Forms![Grundlage Export Navi]![Datum_Rundholz_von]
90 Forms![Hintergrund]![Datum_Rundholz_bis] = Forms![Grundlage Export Navi]![Datum_Rundholz_bis]
100 CurrentDb.QueryDefs("Anfügen-Codes").Execute
110 CurrentDb.QueryDefs("Anfügen-Codes-Rundholz").Execute
120 CurrentDb.QueryDefs("Object anfügen").Execute
130 CurrentDb.QueryDefs("Object anfügen-Rundholz").Execute
140 DoCmd.Hourglass False
150 CommitTrans
160 MsgBox"Daten wurden übertragen.", vbInformation, "Hinweis!"
170 DoCmd.Close acForm, "Grundlage Export Navi"
180 On Error GoTo 0
190 Exit Sub
Befehl13_Click_Error:
200 Rollback
210 MsgBox "Error " & Err.Number & " in Zeile " & Erl & " (" & Err.Description & ") in procedure Befehl13_Click of VBA Dokument Form_Grundlage Export Navi"
220 DoCmd.Hourglass False
End SubNun bekomme ich aber eine Fehlermeldung in der Zeile 130:
Diese Lautet:
ZitatError 3061 in Zeile 130 (2 Parameter wurden erwartet, aber es wurden zu wenig
Parameter übergeben.) in procedure Befehl13_Click of VBA Document
Form_Grundlage Export Navi
Was kann da die Ursache sein, da der alte Code ja funktioniert hat?
Kann man irgenwie feststellen, welche Parameter da fehlen?
gruß
trebuh
So wie meine Recherchen (donkarl) ergeben haben, kann es nur was mir den
Zitat80 Forms![Hintergrund]![Datum_Rundholz_von] = Forms![Grundlage Export Navi]![Datum_Rundholz_von]
90 Forms![Hintergrund]![Datum_Rundholz_bis] = Forms![Grundlage Export Navi]![Datum_Rundholz_bis]
zu tun haben.
Aber mit dem Eval Befehl komme ich auch nicht so recht klar.
In der aufzurufenden Abfrage ist im Ausdruckgenerator in einem Feld unter anderem das Kriterium:
Zwischen [Formulare]![Hintergrund]![Datum_Rundholz_von] Und [Formulare]![Hintergrund]![Datum_Rundholz_bis]Da gibt es ja keinen Eval-Befehl.
Wie muss ich den Code mit dem Eval-Befehl ergänzen?
Hallo,
erkläre mal was Du mit dem Code überhaupt bezweckst.
Ich habe in langen Forumsjahren die Erfahrung gemacht, dass solche Aktionen oft überflüssig oder falsch angegangen werden.
Man öffnet auch keine Aktionsabfragen, sondern führt diese aus.
CurrentDb.Execute "Anfügen-Codes", dbFailOnError
Die DoCmd.SetWarnings False/True entfallen ersatzlos. Das dbFailOnError sorgt für eventuelle Fehlermeldungen. Warnungen werden keine ausgegeben.
Alle Abfragen die etwas machen (=Aktionsabfragen: Löschen, Anfügen, Aktualisieren) sollten so gestartet werden.
Hallo Klaus,
eigentlich dachte ich, das ich den bisherigen Code:
Private Sub Befehl13_Click()
10 On Error GoTo Befehl13_Click_Error
20 DoCmd.SetWarnings False
30 DoCmd.Hourglass True
40 DoCmd.OpenQuery "ObjectAFL-Löschen", acViewNormal, acEdit
50 DoCmd.OpenQuery "CodesAFL-Löschen", acViewNormal, acEdit
60 DoCmd.OpenQuery "Object-Löschen", acViewNormal, acEdit
70 DoCmd.OpenQuery "Codes-Löschen", acViewNormal, acEdit
80 Forms![Hintergrund]![Datum_Rundholz_von] = Forms![Grundlage Export Navi]![Datum_Rundholz_von]
90 Forms![Hintergrund]![Datum_Rundholz_bis] = Forms![Grundlage Export Navi]![Datum_Rundholz_bis]
100 DoCmd.OpenQuery "Anfügen-Codes", acViewNormal, acEdit
110 DoCmd.OpenQuery "Anfügen-Codes-Rundholz", acViewNormal, acEdit
'DoCmd.OpenQuery "Anfügen-Codes-Rundholz-arc", acViewNormal, acEdit
120 DoCmd.OpenQuery "Object anfügen", acViewNormal, acEdit
130 DoCmd.OpenQuery "Object anfügen-Rundholz", acViewNormal, acEdit
'DoCmd.OpenQuery "Object anfügen-Rundholz-arc", acViewNormal, acEdit
140 DoCmd.Hourglass False
150 DoCmd.SetWarnings True
160 MsgBox "Daten wurden übertragen.", 64, "Hinweis!"
170 DoCmd.Close acForm, "Grundlage Export Navi"
180 On Error GoTo 0
190 Exit Sub
Befehl13_Click_Error:
200 MsgBox "Error " & Err.Number & " in Zeile " & Erl & " (" & Err.Description & ") in procedure Befehl13_Click of VBA Dokument Form_Grundlage Export Navi"
End Sub
wegen der deaktivierten Warnmeldungen, und wegen des evtl. eintreten eines Fehlers mit der Transaktion versuche.
Scheinbar gibt es laut den Handbüchern ja mehrere Varianten. Die letzte welche ich jetzt versucht habe ist folgender:
Private Sub Befehl13_Click()
Dim ws As DAO.Workspace
Dim db As DAO.Database
10 On Error GoTo Befehl13_Click_Error
20 DoCmd.Hourglass True
30 Set ws = DBEngine.Workspaces(0)
40 Set db = CurrentDb
50 Forms![Hintergrund]![Datum_Rundholz_von] = Forms![Grundlage Export Navi]![Datum_Rundholz_von]
60 Forms![Hintergrund]![Datum_Rundholz_bis] = Forms![Grundlage Export Navi]![Datum_Rundholz_bis]
70 ws.BeginTrans
80 db.Execute "ObjectAFL-Löschen", dbFailOnError
90 db.Execute "CodesAFL-Löschen", dbFailOnError
100 db.Execute "Object-Löschen", dbFailOnError
110 db.Execute "Codes-Löschen", dbFailOnError
120 db.Execute "Anfügen-Codes", dbFailOnError
130 db.Execute "Anfügen-Codes-Rundholz", dbFailOnError
140 db.Execute "Object anfügen", dbFailOnError
150 db.Execute "Object anfügen-Rundholz", dbFailOnError
160 ws.CommitTrans
170 DoCmd.Hourglass False
180 Call MsgBox("Daten wurden erfolgreich an die TopMaps - Datenbanken übertragen." _
& vbCrLf & "" _
& vbCrLf & " - Aktive Aufträge in die Abfuhrliste" _
& vbCrLf & " - Erledigte Aufträge in die Rundholzliste" _
, vbInformation, "HDSoft - Hinweis!")
190 DoCmd.Close acForm, "Grundlage Export Navi"
Aufraeumen:
200 ws.Close
210 Set db = Nothing
220 Set ws = Nothing
230 On Error GoTo 0
240 Exit Sub
Befehl13_Click_Error:
250 ws.Rollback
260 MsgBox "Error " & Err.Number & " in Zeile " & Erl & " (" & Err.Description & ") in procedure Befehl13_Click of VBA Dokument Form_Grundlage Export Navi"
270 DoCmd.Hourglass False
End Sub
Aber die Fehlermeldung ist immer die gleiche. Mache das ganze jetzt wieder rückgängig, da es mit dem alten Code ja problemlos funktioniert hat.
Trotzdem danke für die Hilfe
Gruß Hubert
Hallo,
leider gehst Du nicht auf die Hintergründe des Vorhabens ein, worum ich gebeten hatte.