Supportnet / Forum / Datenbanken
Runtime Error 3421
Frage
Hi, bei folgendem Code bekomme ich immer "Datentyp-Konvertierungsfehler..."
Field 1 ist als Text mit Primaryschlüssel und Field 2 als Datum angelegt
Kann mir jemand helfen?
On Error GoTo Err_Befehl39_Click
DoCmd.SetWarnings False
Dim objAppXL As Object '// Excel.Application
Dim objWkbXL As Object '// Excel.Workbook
Dim objWksXL As Object '// Excel.Worksheet
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim lCount As Long '// Zaehler fuer die Treffer
Dim Z As Long
Dim Y As Long
Z = 1
Y = 2
'// Zugriff auf Excel-Instanz
On Error Resume Next
Set objAppXL = GetObject(, "Excel.Application")
If err.Number = 429 Then Set objAppXL = CreateObject("Excel.Application")
On Error GoTo 0
'// Arbeitsmappe oeffnen
Set objWkbXL = objAppXL.Workbooks.Open("C:\ps.xls", , True)
Set objWksXL = objWkbXL.Sheets(1)
'// Recordset zum Schreiben oeffnen
Set db = DBEngine(0)(0)
Set rst = db.OpenRecordset("MyTickets")
For Y = 2 To 100
If objWksXL.Cells(1, Y) = "Created Date/Time" Then GoTo weiter
Next
Exit Sub
weiter:
objWksXL.Visible = True
'-- ab zeile 2 soll eingelesen werden
objWksXL.Application.Cells(2, 1).Activate
'// Schleife (gleichzeitiges Schreiben und Zaehlen)
'-- bis zur ersten leeren zeile lesen
Do Until Z > 100 'Or objWksXL.Cells.Value = ""
Z = Z + 1
If Not IsEmpty(objWksXL.Cells(Z, 1).Value) Then
'// Zaehlen
lCount = lCount + 1
'// Schreiben
With rst
.AddNew
.Fields(1) = objWksXL.Cells(Z, 1).Value
.Fields(2) = objWksXL.Cells(Z, Y).Value
.Update
End With
End If
Debug.Print Z
Loop
DoCmd.OpenForm "form_order_eigene_cases"
DoCmd.SetWarnings True
Exit_Befehl39_Click:
Exit Sub
Err_Befehl39_Click:
MsgBox err.Description
Resume Exit_Befehl39_Click
Antwort 1 von Marie
Keine Ahnung, Du schreibst nicht wirklich wo es die Fehlermeldung gibt. Aber eigentlich kann es ja gar keine ordentliche Fehlermeldung geben:
ist völlig überflüssig, weil es keinen einzigen Prozedurschritt gibt, wo diese Zeile wirksam ist, denn direkt nach den Dim-Anweisungen schreibst Du:
Ferner schreibst Du:
Kommentier doch mal "DoCmd.SetWarnings False" und "on error resume next" aus und geh dann mal mit F8 im Einzelschritt den Code durch, dann siehst Du doch an welcher Zeile Dein Code hängenbleibt. Dann schreibste das nochmal hier, dann muss doch keiner jetzt Deinen ganzen Code durchsuchen wo da was kleben bleiben könnte.
Gruß Marie
Zitat:
On Error GoTo Err_Befehl39_Click
On Error GoTo Err_Befehl39_Click
ist völlig überflüssig, weil es keinen einzigen Prozedurschritt gibt, wo diese Zeile wirksam ist, denn direkt nach den Dim-Anweisungen schreibst Du:
Zitat:
On Error Resume Next
, was die Zeile oben ausser Kraft setzt.On Error Resume Next
Ferner schreibst Du:
Zitat:
DoCmd.SetWarnings False
, so dass Dir auch keine Meldungen angezeigt werden.DoCmd.SetWarnings False
Kommentier doch mal "DoCmd.SetWarnings False" und "on error resume next" aus und geh dann mal mit F8 im Einzelschritt den Code durch, dann siehst Du doch an welcher Zeile Dein Code hängenbleibt. Dann schreibste das nochmal hier, dann muss doch keiner jetzt Deinen ganzen Code durchsuchen wo da was kleben bleiben könnte.
Gruß Marie
Antwort 2 von babypeet
Erledigt.
Es lag dann letztendlich an der Exceltabelle.
Vielen Dank für Eure Mühe und die schnellen Antworten
Gruß
Babypet
Es lag dann letztendlich an der Exceltabelle.
Vielen Dank für Eure Mühe und die schnellen Antworten
Gruß
Babypet