0

2 つのデータベースがあります。1 つは従業員の概要情報を保持し、もう 1 つは従業員のシリアル番号を保持します。database1 には、従業員の更新されたレコードを含むテキスト ファイルをインポートできるエージェントがあります。ただし、このエージェントがテキスト ファイル レコードを正常にインポートするには、インポートするテキスト ファイルにデータベースと同じシリアル番号レコードが必要です2。ちなみに動作していますが、インポート時にログを作成する必要がありますが、これを解決する方法はまだわかりません。ログ (インポートされた日付、インポートされた成功および失敗ファイル) は、フィールドで表示する必要があります。あなたは私を助けることができます?これが私のコードです:

LoadAPMSAWDdoc

Sub LoadAPMSAWDdoc(Rname As Variant, directory As Variant, Datef As Variant)
Dim session As New NotesSession
Dim Tdoc As NotesDocumentCollection
Dim dateTime As New NotesDateTime ("01/01/2000")
'12/20/2005
Dim LocView As notesview
Dim LocDoc As NotesDocument
Dim subsidiary As String
Print "Loading APMSAWD - Award Information"

Set cdb = Session.CurrentDatabase
'12/20/2005
'StaffServerName = cdb.Server 
Set LocView = cdb.GetView("LsvLocationProfile")
'02/07/2006
'Set LocDoc = LocView.getdocumentbykey(cdb.Server)
Set LocDoc = LocView.getfirstdocument
StaffServerName = LocDoc.z_ExtServer(0)

 'SearchFormula$ = "Select Form = ""dfAward""  & @Date(s_Created) != @Date(@Today) "


If (ibmmy = True) And (ibmgdc = True) Then
SearchFormula$ = "Select Form = ""dfAward""  "
ElseIf  (ibmmy = True) Then 
SearchFormula$ = "Select Form = ""dfAward"" & I_GDCEmployee = ""IBM MY""" 
Else 
SearchFormula$ = "Select Form = ""dfAward"" & I_GDCEmployee = ""IBM GDC""" 
End If

Set Tdoc = cdb.Search( SearchFormula$, DateTime, 0 )  

If Tdoc.Count <> 0 Then
    Call Tdoc.RemoveAll(True)          
End If

 'Get an unused file number
file_no% = Freefile()
Open (Trim(directory + "apmsawd.txt")) For Input As file_no%      

Set db = Session.CurrentDatabase

Select Case Datef
Case "DMY" : Cdatf = "dd/mm/yyyy"
Case "MDY" : Cdatf = "mm/dd/yyyy"
Case "YMD" : Cdatf = "yyyy/mm/dd"
Case Else : 
    Print "LoadAPMSAWDdoc - Unknown system date format"          
    Exit Sub
End Select

Do While Not Eof(file_no%)
    Line Input #file_no%, tmp

    SerialNo = Trim$(Mid$(tmp,1,6))

    AB = 0
    For i = 29 To 0 Step -1               
        x1 = 8 + (i * 50)
        x2 = 11 + (i * 50)
        x3 = 41 + (i * 50)
        x4 = 49 + (i * 50)

        temp = Strconv(Trim$(Mid$(tmp,x2,30)),3)
        If temp <> "" Then
            Redim Preserve ACode(AB)
            Redim Preserve ADes(AB)
            Redim Preserve ADate(AB)
            Redim Preserve AAmt(AB)
            Acode(AB) = Trim$(Mid$(tmp,x1,3))
            ADes(AB) = temp
            If Trim$(Mid$(tmp,x3,8)) <> "" Then
                AD1 = Setdate(Trim$(Mid$(tmp,x3,8)), "mm/dd/yy", Datef)               
                ADate(AB) = Cdat(Format(AD1, Cdatf))
                     'Datenumber ( Val(Trim$(Mid$(tmp,x3+6,2))) , Val(Trim$(Mid$(tmp,x3+3,2))) , Val(Trim$(Mid$(tmp,x3,2))) )
            Else
                ADate(AB) = Null
            End If
            AAmt(AB) = Val(Trim$(Mid$(tmp,x4,9)))
            AB = AB + 1
        Else 
            Exit For
        End If
    Next

    subsidiary = Filter(CStr(SerialNo))
    If (subsidiary = "AMY" And ammmy = True) Or (subsidiary  = "ADC" And aaadc = True) Then

    Set doc = New NotesDocument(db)
    doc.Form = "dfAward"
    doc.E_StaffSerialNo = SerialNo
    doc.I_GDCEmployee = subsidiary
    If AB = 0 And Trim$(Mid$(tmp,1461,30))  = "" Then
        Redim Preserve ACode(AB)
        Redim Preserve ADes(AB)
        Redim Preserve ADate(AB)
        Redim Preserve AAmt(AB)
        ACode(0) = ""
        ADes(0) = ""
        ADate(0) = Null
        AAmt(0) = Null
    End If
    doc.E_AwardType = ADes
    doc.E_AwardDate = ADate
    doc.E_AwardAmt = AAmt
    doc.G_AuthorDisp = Rname
    doc.s_created = Now
    Call doc.Save (True, True)

    End If
Loop

Close file_no% 
Print "Award information imported"

End Sub

コードが長すぎてここに収まらないため、一部の関数のみを投稿した場合は申し訳ありません。

4

1 に答える 1