Okay, anbei mal der Code von getProfileFieldValue()
Function getProfileFieldValue(person As String, jahr As String, feld As String) As Variant
...
Set ansicht = db.GetView("(AdminAllPersonsClaimByMA)")
Set ansichtPersonCol = ansicht.GetAllEntriesByKey(person, True)
If ansichtPersonCol.Count =0 Then
getProfileFieldValue = "es existiert kein Personenprofil"
Else
Set ansichtPerson = ansichtPersonCol.GetFirstEntry()
Do While Not (ansichtPerson Is Nothing)
If ansichtPerson.IsDocument() Then
Set personProfil = ansichtPerson.Document
jahrItem = personProfil.GetItemValue("VacYear")
If jahr = Cstr(jahrItem(0)) Then
stateItem = personProfil.GetItemValue(feld)
'getProfileFieldValue = Cstr(stateItem(0))
getProfileFieldValue = stateItem
found = True
Exit Do
End If
End If
Set ansichtPerson = ansichtPersonCol.GetNextEntry(ansichtPerson)
Loop
End If
Der Funktion übergebe ich den Personennamen, das Jahr und das Feld, dessen Wert ich haben möchte.
Wenn das Jahr nun 2003 ist, findet die Funktion kein Profil (also found = false) und eine entsprechende Fehlermeldung kommt. Aber das Jahresprofil für 2003 existiert für die jeweilige Person.
Die Funktion getProfileFieldValue() wird wie folgt aufgerufen:
Dim totalClaim As Variant
'Summe Jahresurlaub aus Profil holen
stringJahr = "2003"
stringPerson = "Mustermann, Max"
totalClaim = getProfileFieldValue(stringPerson, stringJahr, "VacTotalClaim1")
Function getProfileFieldValue(person As String, jahr As String, feld As String) As Variant
Dim ansicht As NotesView
Dim ansichtPersonCol As NotesViewEntryCollection
Dim ansichtPerson As NotesViewEntry
Dim personProfil As NotesDocument
Dim db As NotesDatabase
Dim session As New NotesSession
Dim found As Boolean
Dim jahrItem As Variant
Dim stateItem As Variant
found = False
Set db = session.CurrentDatabase
Set ansicht = db.GetView("(AdminAllPersonsClaimByMA)")
Set ansichtPersonCol = ansicht.GetAllEntriesByKey(person, True)
If ansichtPersonCol.Count =0 Then
getProfileFieldValue = "es existiert kein Personenprofil"
Else
Set ansichtPerson = ansichtPersonCol.GetFirstEntry()
Do While Not (ansichtPerson Is Nothing)
If ansichtPerson.IsDocument() Then
Set personProfil = ansichtPerson.Document
jahrItem = personProfil.GetItemValue("VacYear")
If jahr = Cstr(jahrItem(0)) Then
stateItem = personProfil.GetItemValue(feld)
getProfileFieldValue = stateItem
found = True
Exit Do
End If
End If
Set ansichtPerson = ansichtPersonCol.GetNextEntry(ansichtPerson)
Loop
End If
If Not found Then
Messagebox("Kein Profil gefunden")
End If
End Function
Die Ansicht "(AdminAllPersonsClaimByMA)" ist wie folgt aufgebaut:
Mustermann, Max
2004
Januar
Februar
...
Dezember
2003
Januar
Februar
...
Dezember
Die Monate in der Ansicht gehören alle zu dem jeweiligen Jahresprofil, ist also ein Dokument.
Die Parameter werden alle richtig übergeben, aber zum Jahr 2003 wird einfach kein Profil gefunden, obwohl es existiert und auch in der Ansicht im NotesClient zu finden ist. Findet ihr einen Fehler?
Danke schon mal.
Gruß Katja