Hallo zusammen,
ich habe mir eine ODB Abfrage gebaut die mir jetzt auf einen Fehler läuft siehe oben. Ich hoffe das mir jemand einen hinweis geben kann.
Zum Problem.
Ich will einen Datensatz der mehere gleiche Datums einträge enthält entsprechend von Links nach rechts in Excel einlesen.
Das klappt soweit auch gut, jedoch kommt am ende immer der Laufzeitfehler. Mir ist klar das dieser kommt weil das Feld nicht mehr gefüllt ist.
Aber ich weiß gerade nicht dies zu lösen.
Hier der Code:
Private Sub Worksheet_Activate()
Set condb = New ADODB.Connection
condb.Open "Provider=MSDASQL.1;DATA SOURCE=ALMADAT;Uid=hinluk;Pwd=geheim;"
Dim indexedm As String
Dim rec As ADODB.Recordset
Dim jahr As Date
KW_input = ActiveSheet.Name
jahr_input = Year(Date)
Dim vDate As Date
vDate = Datum_KW(KW_input, jahr_input)
Dim datum_von As String
datum_von = vDate
Dim datum_bis As String
datum_bis = DateAdd("d", 4, vDate)
Set rec = New ADODB.Recordset
rec.CursorLocation = adUseClient
rec.Open "SELECT ABSKPF.LITMAKISO, ABSKPF.BLNRAK, ABSKPF.COMMAK, ABSKPF.POLZAK, ABSKPF.AUNRAK, ABSKPF.AARTAK, ABSKPF.MX01AK, " _
& "ABSKPF.MX02AK, ABSKPF.MX07AK, ABSKPF.KUCHAK, ABSKPF.KORPAK, ABSKPF.NEWWAK, ABSKPF.KUN1AK, ABSKPF.TOURAK, ABSKPF.KUN2AK " _
& "FROM S2171AEV.ALMADAT.ABSKPF ABSKPF " _
& "WHERE ABSKPF.CLASAK='1' AND ABSKPF.LITMAKISO>={d '" & datum_von & "'} AND ABSKPF.LITMAKISO<={d '" & datum_bis & "'} " _
& "AND (ABSKPF.AARTAK='KL' OR ABSKPF.AARTAK='KD' OR ABSKPF.AARTAK='K1' OR ABSKPF.AARTAK='UM' OR ABSKPF.AARTAK='01' OR ABSKPF.AARTAK='NM' OR ABSKPF.AARTAK='GL' OR ABSKPF.AARTAK='MC' OR ABSKPF.AARTAK='OG' OR ABSKPF.AARTAK='AT') " _
& "ORDER BY ABSKPF.LITMAKISO, ABSKPF.KUN1AK, ABSKPF.POLZAK ASC", condb, adOpenForwardOnly, adLockReadOnly
Dim zaehler As Long 'Zähler
Dim sp As Long 'Spaltennummer
Dim ze As Long 'Zeilennummer
Range("A7:BR999").ClearContents
Range("A4:A4").ClearContents
Range("O4:O4").ClearContents
Range("AC4:AC4").ClearContents
Range("AQ4:AQ4").ClearContents
Range("BE4:BE4").ClearContents
For sp = 1 To 70 'Innerhalb jeder Zeile Spalten von 1 bis 5 (A bis E) abarbeiten
Cells(4, sp).FormulaLocal = rec!LITMAKISO
ze = 7
Do Until LITMAKISO_ALT <> rec!LITMAKISO
Cells(ze, sp).FormulaLocal = rec!BLNRAK
sp2 = sp + 1
Cells(ze, sp2).FormulaLocal = rec!COMMAK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!POLZAK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!AUNRAK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!AARTAK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!MX01AK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!MX02AK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!MX07AK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!KUCHAK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!KORPAK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!NEWWAK / 100
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!KUN1AK
sp2 = sp2 + 1
Cells(ze, sp2).FormulaLocal = rec!TOURAK
sp2 = sp2 + 1
If (rec!KUN2AK <= 99) Then
KUN2AK = CInt(rec!KUN2AK)
Else
KUN2AK = rec!KUN2AK
End If
Cells(ze, sp2).FormulaLocal = KUN2AK
ze = ze + 1
rec.MoveNext
Loop
LITMAKISO_ALT = rec!LITMAKISO
sp = sp2
rec.MoveNext
Next 'Nächste Spalte
condb.Close
Unload Kalenderwoche_Anzeigen
End Sub
rec!LITMAKISO ist nicht mehr gefüllt.
MfG Niels
|