Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Alperen15 am 19.04.12 - 14:39:31
-
Hallo alle zusammen,
ich habe vor Monaten einen Upload Agenten in Notes programmiert. Und schon seit Monaten mach ich nichts mehr mit Notes. Jetzt bekomme ich folgende Fehlermeldung, wenn ich den Agenten starte "Object variable not set" im Quellcode habe ich es markiert.
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem, SendRtitem As NotesRichTextItem
Dim itemReaders As NotesItem, itemReaders2 As NotesItem
Dim object As NotesEmbeddedObject
Dim row As Integer, written As Integer ,iWCount As Integer
Dim colsum As Currency, colsum2 As Currency, colval As Currency, colname As Currency
Dim Excel As Variant, xlWorkbook As Variant, xlSheet As Variant, vIntLeser(3) As Variant
Dim One As String, xlFilename As String
Dim cRechname As String, cPathname As String
Dim tmpKundennr As String
Dim vdoc As NotesDocument
Dim i As String
Dim filenum As Integer
Dim pathName As String
Dim cFilename As String
Dim PathFileName As String
pathName$ = "K:\LCU-Sales issue - commercial data\*"
cFilename$ = Dir$(pathName$ & "*.xls", 0)
PathFileName = "K:\LCU-Sales issue - commercial data\" & cFilename$
iWCount = 1
Set db = session.CurrentDatabase
Set Excel = CreateObject( "Excel.Application" )
' *** ---------------------- öffnet Excel File ---------------------------
Excel.Visible = False
Excel.Workbooks.Open PathFileName
Set xlWorkbook = Excel.ActiveWorkbook
'Set xlSheet = xlWorkbook.Worksheets(1)
Set xlSheet = xlWorkbook.ActiveSheet ' *** Nur ein Sheet - wird hier definiert
row = 2
With xlSheet
tmpKundennr = .Cells( row, 1 ).Value
Set view = db.GetView ("vwLogistik")
While tmpKundennr <> ""
'tmpKundennr = .Cells( row, 1 ).Value
Set vdoc = view.GetDocumentByKey(tmpKundennr)
'If Not vdoc Is Nothing Then
If vdoc Is Nothing Then
vdoc.Form = "maLCU" --> Da kommt die Fehlermeldung vdoc.txCustNo = .Cells( row, 2 ).Value
vdoc.txCustName = .Cells( row, 3 ).Value
vdoc.fdMandant = .Cells( row, 4 ).Value
vdoc.fdAnzahlMA = .Cells( row, 5 ).Value
vdoc.fdBranche = .Cells( row, 6 ).Value
vdoc.fdAPKunde = .Cells( row, 7 ).Value
vdoc.fdUmsatzAktiv = .Cells( row, 8 ).Value
vdoc.fdUmsatzPassive = .Cells( row, 9 ).Value
vdoc.fdUmsatzEMechanik = .Cells( row, 10 ).Value
vdoc.fdUmsatzTotal = .Cells( row, 11 ).Value
vdoc.fdMargeAktiv = .Cells( row, 12 ).Value
vdoc.fdMargePassive = .Cells( row, 13 ).Value
vdoc.fdMargeEMechanik = .Cells( row, 14 ).Value
vdoc.fdUmsatzAktiv_1 = .Cells( row, 15).Value
vdoc.fdUmsatzPassive_1 = .Cells( row, 16 ).Value
vdoc.fdUmsatzEMechanik_1 = .Cells( row, 17 ).Value
vdoc.fdUmsatzTotal_1 = .Cells( row, 18 ).Value
vdoc.fdMargeAktiv_1 = .Cells( row, 19 ).Value
vdoc.fdMargePassive_1 = .Cells( row, 20 ).Value
vdoc.fdMargeEMechanik_1 = .Cells( row, 21 ).Value
vdoc.fdUmsatzAktiv_2 = .Cells( row, 22 ).Value
vdoc.fdUmsatzPassive_2 = .Cells( row, 23 ).Value
vdoc.fdUmsatzEMechanik_2 = .Cells( row, 24 ).Value
vdoc.fdUmsatzTotal_2 = .Cells( row, 25 ).Value
vdoc.fdMargeAktiv_2 = .Cells( row, 26 ).Value
vdoc.fdMargePassive_2 = .Cells( row, 27 ).Value
vdoc.fdMargeEMechanik_2 = .Cells( row, 28 ).Value
vdoc.fdAnzahlMA = .Cells( row, 29 ).Value
vdoc.fdAPKunde = .Cells( row, 30 ).Value
vdoc.fdInnendienst = .Cells( row, 31 ).Value
vdoc.fdAussendienst = .Cells( row, 32 ).Value
Call vdoc.save(False,True)
row = row + 1
tmpKundennr = .Cells( row, 1 ).Value
Else
row = row + 1
tmpKundennr = .Cells( row, 1 ).Value
End If
Wend
End With
NextDoc:
' *** Disconnecting from Excel...
xlWorkbook.Close False
Excel.Quit
Set Excel = Nothing
End Sub
-
Ich wäre euch sehr dankbar, wenn ihr mir weiterhelfen könnt. Danke im voraus
-
If vdoc Is Nothing Then
ist natürlich Unsinn, wenn kein
set vdoc = db.CreateDocument
folgt.
Oder muss es doch
If Not vdoc Is Nothing
heissen? Das musst Du beurteilen.
Das kann aber noch nie funktioniert haben.
Andreas
-
Hallo,
Warum Fragst Du ab, ob vdoc Nothing ist, und wenn Nothing, um dann mit dem besagten Objekt weiterzuarbeiten, als ob
es erfolgreich gesetzt ist?
Andreas
-
klar das falsche war auskommentiert
If Not vdoc Is Nothing ist richtig, jetzt wird allerdings kein dokument erstellt obwohl das dokument mit derselben Kundennummer verfügbar ist in der Exceldatei
-
Was soll der Code denn eigentlich machen?
Du sprichst jetzt davon, dass kein Dokument erstellt wird.
Das macht der Code doch auf den ersten Blick nicht.
Nur wenn in der Ansicht bereits ein Dokument gefunden wird, wird dieses mit den Daten aus dem Excel-File
aktualisiert.
Wird nichts in der Ansicht gefunden, wird auch nichts erstellt bzw. aktualisiert.
Andreas
-
genau dass soll auch gemacht werden. Wenn ein Dokument gefunden wird, soll dieses Dokument aktualisiert werden.
Ich habe aber ein Dokument und in der Excelfile die Kundennummer (key) trotzdem wird nichts aktualisiert
-
Kommt die Kd-Nr in der Ansicht vor ?
Ist die Notes-Kd-Nr 100% identisch zu der im Excel-File ?
Was "sagt" der Debugger ?
-
Ich schliesse mich der Frage an, was der Debugger sagt.
Wird die Nummer, auch wenn vorhanden, in der Ansicht ueberhaupt gefunden?
Andreas
-
... wenn du
If Not vdoc Is Nothing Then
verwendest, und die Fehlermeldung in der Zeile kommt mit "Object variable not set", dann hört sich das seltsam an.
Prüfe mal mit vdoc.IsValid - eventuell hast du einen deletion stub erwischt.
Toni