Domino 9 und frühere Versionen > Entwicklung

Spalten aus Ansicht auslesen

<< < (2/2)

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