PDA

Vollständige Version anzeigen : Laufzeitfehler 13: Typen unverträglich


Robin Hood
14.06.2012, 12:59
Hallo zusammen,

ich schon wieder.

Jetzt kann ich die Datenbank öffnen und nach einen Klick auf einen Button erscheint die Meldung "Laufzeitfehler 13: Typen unverträglich".

Dieser Fehler tritt nur unter Access 2010, in 2003 klappt alles.

Das geschieht bei folgendem Code:

Private Sub Excel_Export_Click()

Dim xlsobj As excel.Application
Dim rec_tmp As Recordset
Dim erlk_tmp As String
Dim i As Long

Set xlsobj = New excel.Application

Set rec_tmp = CurrentDb.OpenRecordset(Anwendername() & "_tmp")
If IsNull(Me.Detailliste) Or Me.Detailliste = "" Then
MsgBox "Excelexport konnte nicht durchgeführt werden, Verkäufer wurde nicht eindeutig identifiziert"
GoTo ende
End If

If Me.erlk_feld = "Ja" Then
erlk_tmp = "Erlöskunden"
Else
erlk_tmp = "Bestandskunden"
End If


With xlsobj
.Visible = True
.Workbooks.Add
.Workbooks.Add.Sheets(1).Activate
.Columns("A:e").Select
.Selection.ColumnWidth = 14
.Columns("b").Select
.Selection.ColumnWidth = 56
.Columns("e").Select
.Selection.ColumnWidth = 20
.Cells(1, 1).Value = "Nicht durchgeführte Soll Kontakte der " & erlk_tmp & ", für VK " & Me.Detailliste & " von Woche " & Me.von_Woche & " bis Woche " & Me.bis_Woche
.Cells(3, 1).Value = "KMBR-Nr"
.Cells(3, 2).Value = "Kundenname"
.Cells(3, 3).Value = "Anzahl Soll-Kontakte"
.Cells(3, 4).Value = "Anzahl Ist-Kontakte"
.Cells(3, 5).Value = "Anzahl nicht durchgeführter Soll_kontakte"
.Range("A3:e3").Select
.Selection.WrapText = True
.Selection.Characters.Font.Bold = True
.Selection.Interior.ColorIndex = 15
.Selection.HorizontalAlignment = xlCenter

rec_tmp.MoveLast
rec_tmp.MoveFirst

For i = 4 To rec_tmp.RecordCount + 3

.Cells(i, 1).Value = rec_tmp("KMBR")
.Cells(i, 2).Value = rec_tmp("Kundenname")
.Cells(i, 3).Value = rec_tmp("Soll_Kontakte")
.Cells(i, 4).Value = rec_tmp("Ist_kontakte")
.Cells(i, 5).Value = rec_tmp("Nicht_durchgef_kont")

rec_tmp.MoveNext

Next i
.Range("A1:E2").Select
.Selection.Interior.ColorIndex = 2
.Selection.Interior.Pattern = xlSolid

.Selection.Font.Size = 14


.Range("A4:e" & i).Select
.Selection.WrapText = True
.Selection.HorizontalAlignment = xlCenter
.Range("A1").Select


With .ActiveSheet.PageSetup
.PrintGridlines = True
.Orientation = xlLandscape
.Order = xlDownThenOver
.PrintTitleRows = "$1:$3"
.CenterFooter = "Seite &P von &N"
.RightFooter = "&D"
End With

End With

Exit Sub

ende:


End Sub

Könntet ihr mir einen Tipp geben wie ich diesen Laufzeitfehler beseitige?

DANKE!

Viele Grüße

Atrus2711
14.06.2012, 13:09
Zum wiederholten Male: mach bitte Codetags drumrum. Und wo genau taucht der Fehler auf?

Storch
14.06.2012, 13:18
Hi,

ich bin auch mal sehr dafür, Code mit der entsprechenden Funktion einzufügen und Markierungen nicht in einer Farbe vorzunehmen, die man auf weißem Hintergrund nicht lesen kann (wie hier die gelbe Zeile)

Ich nehme mal an, das diese Zeile die Fehlerzeile ist?

Set rec_tmp = CurrentDb.OpenRecordset(Anwendername() & "_tmp")

Fakt ist , das schon Access07 Dinge bemängelt. die Access 03 durch gehen lässt. Meisten sind es Nichtigkeiten.

Ich nehme an, das Anwendername() eine Funktion ist?
Versuche mal folgendes:
Stringvariable deklarieren, den Anwendernamen und die Erweiterung '"_tmp" erst der Stringvariable zuweisen und nur die Variable selbst im Parameter von OpenRecordset verwenden. Da IMHO Openrecordset an der Stelle einen Stringparamter erwartet könnte es sein, das die Funktion innerhalb der Klammer bemeckert wird. Und ist der Rückgabewert der Funktion auch tatsächlich vom Typ String?

Robin Hood
14.06.2012, 13:42
Hallo nochmals,

ENTSCHULDIGUNG!!

Ich hoffe mal das ist jetzt so korrekt.

Dim xlsobj As excel.Application
Dim rec_tmp As Recordset
Dim erlk_tmp As String
Dim i As Long

Set xlsobj = New excel.Application

Set rec_tmp = CurrentDb.OpenRecordset(Anwendername() & "_tmp")If IsNull(Me.Detailliste) Or Me.Detailliste = "" Then
MsgBox "Excelexport konnte nicht durchgeführt werden, Verkäufer wurde nicht eindeutig identifiziert"
GoTo ende
End If

If Me.erlk_feld = "Ja" Then
erlk_tmp = "Erlöskunden"
Else
erlk_tmp = "Bestandskunden"
End If


With xlsobj
.Visible = True
.Workbooks.Add
.Workbooks.Add.Sheets(1).Activate
.Columns("A:e").Select
.Selection.ColumnWidth = 14
.Columns("b").Select
.Selection.ColumnWidth = 56
.Columns("e").Select
.Selection.ColumnWidth = 20
.Cells(1, 1).Value = "Nicht durchgeführte Soll Kontakte der " & erlk_tmp & ", für VK " & Me.Detailliste & " von Woche " & Me.von_Woche & " bis Woche " & Me.bis_Woche
.Cells(3, 1).Value = "KMBR-Nr"
.Cells(3, 2).Value = "Kundenname"
.Cells(3, 3).Value = "Anzahl Soll-Kontakte"
.Cells(3, 4).Value = "Anzahl Ist-Kontakte"
.Cells(3, 5).Value = "Anzahl nicht durchgeführter Soll_kontakte"
.Range("A3:e3").Select
.Selection.WrapText = True
.Selection.Characters.Font.Bold = True
.Selection.Interior.ColorIndex = 15
.Selection.HorizontalAlignment = xlCenter

rec_tmp.MoveLast
rec_tmp.MoveFirst

For i = 4 To rec_tmp.RecordCount + 3

.Cells(i, 1).Value = rec_tmp("KMBR")
.Cells(i, 2).Value = rec_tmp("Kundenname")
.Cells(i, 3).Value = rec_tmp("Soll_Kontakte")
.Cells(i, 4).Value = rec_tmp("Ist_kontakte")
.Cells(i, 5).Value = rec_tmp("Nicht_durchgef_kont")

rec_tmp.MoveNext

Next i
.Range("A1:E2").Select
.Selection.Interior.ColorIndex = 2
.Selection.Interior.Pattern = xlSolid

.Selection.Font.Size = 14


.Range("A4:e" & i).Select
.Selection.WrapText = True
.Selection.HorizontalAlignment = xlCenter
.Range("A1").Select


With .ActiveSheet.PageSetup
.PrintGridlines = True
.Orientation = xlLandscape
.Order = xlDownThenOver
.PrintTitleRows = "$1:$3"
.CenterFooter = "Seite &P von &N"
.RightFooter = "&D"
End With

End With

Exit Sub

ende:


End Sub



@Storch: Ja, es war der gelb markierte Code. Ich werde deinen Hinweis einmal ausprobieren.

DANKE!!

Robin Hood
14.06.2012, 13:47
Hallo zusammen,

ich schätze mal, dass ich den Code wieder falsch habe.

Ich habe jetzt den Button Code einfügen benutzt, aber anscheinend reicht das nicht.

Was muss ich noch machen, um es in Zukunft korrekt zu senden ?



Viele Grüße

Arne Dieckmann
14.06.2012, 13:57
Abgesehen davon, dass es beim neuen Posting wohl ein Problem mit dem Zeilenumbruch gab, deklariere das recordset mal so:

Dim rec_tmp As DAO.Recordset
und achte darauf, dass der Verweis auf DAO aktiviert ist.

Robin Hood
14.06.2012, 15:13
Hallo Arne,

BESTEN DANK für deinen Tipp.

Es hat funktioniert. Ich musste in den Verweisen das DAO Objekt noch anklicken und in der Priorität hochsetzen.

Jetzt funktioniert es!!

Danke auch an die anderen.
Ich werde mich sehr bemühen, meinen nächsten Code richtig zu mailen.


Viele Grüße