Domino 9 und frühere Versionen > Entwicklung
Spalten aus Ansicht auslesen
ata:
... dann würde ich das aktuelle Dokument initialisieren und über ViewEntryCollection was versuchen. Da gibt es eine Eigenschaft, die mir die zugehörigen Kategorie des Dokumentes zurückgibt - müsste ich aber auch tiefer eintauchen...
Toni
MKnost:
Ich hab den Tipp von Axel umgesetzt, hier mal der vollständigkeit halber mein Code (ein bisschen verworren, verbesserungen immer gern gesehen ;) )
--- Code: ---Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim tmpName As String
Dim tmpMonat As String
Dim tmpStunden As String
Dim tmpGesamt As Integer
Dim tAStd As Variant
Dim tAMin As Variant
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
If collection.count = 0 Then
Messagebox "Sie müssen EINEN Eintrag auswählen, um den Nutzer sowie den Monat zu bestimmen!", MBOK, "Fehler: keine Auswahl!"
Exit Sub
End If
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Set item = doc.GetFirstItem( "ProgName" )
tmpName=item.values(0)
Set item = doc.GetFirstItem( "ProgDatum" )
tmpMonat=Month(item.values(0))
Set doc = collection.GetNextDocument(doc)
Wend
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim keys (1 To 2) As String
keys(1)=tmpName
Select Case tmpMonat
Case 1: keys(2)="Januar"
Case 2: keys(2)="Februar"
Case 3: keys(2)="März"
Case 4: keys(2)="April"
Case 5: keys(2)="Mai"
Case 6: keys(2)="Juni"
Case 7: keys(2)="Juli"
Case 8: keys(2)="August"
Case 9: keys(2)="September"
Case 10: keys(2)="Oktober"
Case 11: keys(2)="November"
Case 12: keys(2)="Dezember"
End Select
Set view = db.GetView( "vProgname" )
Set collection = view.GetAllDocumentsByKey(keys, False)
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Set item = doc.GetFirstItem( "Stunden" )
tmpStunden=item.values(0)
tmpGesamt=tmpGesamt + Cint(tmpStunden)
Set doc = collection.GetNextDocument(doc)
Wend
tAMin = tmpGesamt Mod 60
tAStd = tmpgesamt \ 60
Messagebox tAStd & " Stunden und " & tAMin & " Minuten", MBOK, "Ausgleich für " & tmpName & " im Monat: " & keys(2)
End Sub
--- Ende Code ---
Axel:
Soweit sieht's ganz vernüftig aus. Zwei Anmerkungen habe ich allerdings.
1. Die Ecke ist nicht ganz konsequent zu Ende programmiert und kann in bestimmen Fällen zu unerwünschten Seiteneffekten führen. Es wird zwar abgefangen wenn kein Eintrag gewählt ist, aber nicht bei mehr als einem Eintrag.
--- Code: ---...
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
If collection.count = 0 Then
Messagebox "Sie müssen EINEN Eintrag auswählen, um den Nutzer sowie den Monat zu bestimmen!", MBOK, "Fehler: keine Auswahl!"
Exit Sub
End If
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Set item = doc.GetFirstItem( "ProgName" )
tmpName=item.values(0)
Set item = doc.GetFirstItem( "ProgDatum" )
tmpMonat=Month(item.values(0))
Set doc = collection.GetNextDocument(doc)
Wend
...
--- Ende Code ---
Besser ist es so:
--- Code: ---Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
If collection.count <> 1 Then
Messagebox "Sie müssen EINEN Eintrag auswählen, um den Nutzer sowie den Monat zu bestimmen!", MBOK, "Fehler: keine Auswahl!"
Exit Sub
End If
Set doc = collection.GetFirstDocument()
If Not(doc Is Nothing) Then
Set item = doc.GetFirstItem( "ProgName" )
tmpName=item.values(0)
Set item = doc.GetFirstItem( "ProgDatum" )
tmpMonat=Month(item.values(0))
Set doc = collection.GetNextDocument(doc)
End If
...
--- Ende Code ---
2. Diese Zeile kann entfallen
--- Code: ---...
Dim dc As NotesDocumentCollection
...
--- Ende Code ---
Außerdem fehlt mir noch eine Fehlerbehandlung. Grundlagen hierzu findest du hier:
Best Practices: Error Handling in Lotus Script
Axel
MKnost:
:) Danke für die Hinweise!!!
Werd mich mal gleich daransetzen, vielleicht wird ja doch noch ein anständiger Programmierer aus mir ;)
Grüsse Micha
Axel:
--- Zitat von: MKnost am 07.03.06 - 08:28:42 ---Werd mich mal gleich daransetzen, vielleicht wird ja doch noch ein anständiger Programmierer aus mir ;)
--- Ende Zitat ---
Mit Sicherheit. Es ist noch kein Meister vom Himmel gefallen. ;)
Axel
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln