Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: OCS am 29.09.03 - 13:17:50
-
hallo,
hätte da mal ne frage:
wie kann ich in einer ansicht herausbekommen, welches dokument grade ausgewählt ist? hab mir nen agenten geschrieben, der aus dem aktuell ausgewählten (nicht offen, nur ausgewählt!) dokument zwei werte kopieren soll, daraus einen schlüssel einen schlüssel erstellt und in einer anderen datenbank nach diesem schlüssel (ausftragsnummer + position) suchen soll. ich bekomme aber egal welches dokument ich auswähle immer nur die schlüssel aus dem selben dokument! kann mir jemmand helfen?
hier der code:
Sub Initialize
'Variablen zum Schlüssel auslesen
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim uiview As NotesUIView
Dim aunritem As notesitem
Dim posiitem As notesitem
Dim aunr As String
Dim posi As String
Dim key As String
'Variablen um auf FridaAktiv zuzugreifen
Dim db_fri As notesdatabase
Dim view_fri As notesview
Dim collect_Fri As notesdocumentcollection
Dim doc_fri As NotesDocument
Set db = session.CurrentDatabase
Set uiview = workspace.Currentview
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument
Call uiview.SelectDocument(doc) ' Soll das aktuell ausgewählte Dokument in den Zugriff nehmen
Set aunritem = doc.GetFirstItem( "KOAUNR" )
Set posiitem = doc.GetFirstItem( "PSPOSI" )
aunr = aunritem.text ' kopiert den Inhalt des items als string in aunr
posi = posiitem.text ' kopiert den Inhalt des items als string in posi
key = aunr + " " + posi ' erstellt eindeutigen schlüssel aus auftragsnummer + position
'---------------------------------------------------------------------------------------------------------------------------------------
' Jetzt auf FridaAktiv zugreifen und passende Tätigkeitsberichte suchen =
'---------------------------------------------------------------------------------------------------------------------------------------
Set db_Fri = session.Getdatabase("OCS02/OCS GmbH", "aktiv\fridaakt.nsf", False)
Set view_Fri = db_Fri.getview ("ViewActionsZeiten")
Set collect_Fri = view_Fri.GetAllDocumentsByKey(key, exact)
Msgbox collect_fri.count
End Sub
würd mich über anregungen freuen!
björn
-
Hallo,
also wenn Du nur ein Dokument markiert hast, dann kannst Du über die Property UnprocessedDocuments das markierte Doc wählen.
...
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
Set aunritem = doc.GetFirstItem( "KOAUNR" )
Set posiitem = doc.GetFirstItem( "PSPOSI" )
...
-
dank dir! funktioniert!!! ;D
-
edit:
jetz hab ich zwar meine dokumente im zugriff, aber wie bekomme ich die jetzt sichtbar gemacht? würde gerne die dokumente, die mit den schlüsselwörtern übereinstimmen entweder in einer temporären ansicht oder einer großen messagebox oder so anzeigen. habs mit ner "PROMPT_OKCANCELLIST" und nem array versucht, der läuft aber immer über!
hat vieleicht nochmal jemmand zeit für mich?
gruß björn
-
Folder machen und Move To Folder
-
und wie sieht das dann aus? hab noch nix mit folder gemacht!
-
Mit Folder wird das so einfach nichts werden - immerhin sollen ja Dokumente aus einer anderen Datenbank dargestellt werden.
Kannst Du uns noch mehr über den Hintergrund Deiner Aufgabe mitteilen ? Was soll mit den "Treffern" weiter geschehen ?
Bernhard
-
also, die datenbank in der ich zuerst bin, zeigt alle aufträge mit dem dazu gehörigem status an (siehe bild)1. in einer anderen db werden die auf die einzelnen aufträge erstellten stundenzettel pro mitarbeiter angezeigt (bild2). die aufgabe des agenten ist jetzt für den aktuell ausgewählten auftrag (mit position) die einzel erfassten zeiten der mitarbeiter anzuzeigen. wie auch immer ob in einer listbox oder einer ansicht ist egal! soll ja eh immer zur laufzeit neu erstellt und dann gelöscht werden... puh! :'(
-
Naja, sowas hatte ich mir schon gedacht - aber was willst Du mit den angezeigten Dokumenten aus DB2 dann machen? Nur bestaunen lassen?
Weitere Frage: Einen Überlauf kriegst Du ja erst bei grossen Datenmengen (> 64k). Ist das denn wirklich der Fall ? Das wird dann ja auch ein Performanceproblem.
Bernhard
-
ja, die sollen nur bestaunt werden! wunsch vom chef! mit dem array hab ich im subscript out of range bekommen! oder so ähnlich!
-
Und was ist mit den Datenmengen und Deinem "Überlauf-Problem" ?
Es gäbe da schon Lösungen, aber x Kilobyte Daten nur anschauen ... tsss ???
Vielleicht hast Du ja aber auch in Wirklichkeit gar kein "Überlauf-Problem". Schau'n wir mal ...
Bernhard
-
erstmal danke, das Du Dich mit meinem Problem befasst!
ich bekomme bei diesem script hier schon "Subscript out of range" obwohl nur 9 einträge in den array gemacht werden!
Sub Initialize
'Variablen zum Schlüssel auslesen
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim uiview As NotesUIView
Dim aunritem As notesitem
Dim posiitem As notesitem
Dim aunr As String
Dim posi As String
Dim key As String
'Variablen um auf FridaAktiv zuzugreifen
Dim db_fri As notesdatabase
Dim view_fri As notesview
Dim collect_Fri As notesdocumentcollection
Dim doc_fri As NotesDocument
Dim temp As Variant
Dim adoc As Variant
Dim anzeige() As String
Set db = session.CurrentDatabase
Set uiview = workspace.Currentview
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
Call uiview.SelectDocument(doc) ' Soll das aktuell ausgewählte Dokument in den Zugriff nehmen
Set aunritem = doc.GetFirstItem( "KOAUNR" )
Set posiitem = doc.GetFirstItem( "PSPOSI" )
aunr = aunritem.text ' kopiert den Inhalt des items als string in aunr
posi = posiitem.text ' kopiert den Inhalt des items als string in posi
key = aunr + " " + posi ' erstellt eindeutigen schlüssel aus auftragsnummer + position
'---------------------------------------------------------------------------------------------------------------------------------------
' Jetzt auf FridaAktiv zugreifen und passende Tätigkeitsberichte suchen =
'---------------------------------------------------------------------------------------------------------------------------------------
Set db_Fri = session.Getdatabase("OCS02/OCS GmbH", "aktiv\fridaakt.nsf", False)
Set view_Fri = db_Fri.getview ("ViewActionsZeiten")
Set collect_Fri = view_Fri.GetAllDocumentsByKey(key, exact)
For i = 1 To collect_fri.Count ' Array aufbauen (Sätze)
Set aDoc = collect_fri.GetNthDocument(i)
anzeige(i) = adoc.CommonUser(0)
Redim Preserve anzeige(i) As String
Next
'Auswahl aus der Box ins Feld schreiben
temp = workspace.prompt(PROMPT_OKCANCELLIST, "Stundenzettel", "Stundenzettel für Auftrag " + aunr + "Position " + posi, Anzeige(1), Anzeige())
End Sub
-
WO bekommst Du "subscript out of range" - welche Zeile ?
Was bedeutet Anzeige () ?
Bernhard
-
anzeige() ist der array den ich fülle! den subscript out of range bekomme ich gleich beim ersten füllen des array's.
obwohl da blos name und vorname eines mitarbeiter drin steht!
-
hab den fehler grade gefunden! muss schon redimensionieren bevor ich das erste mla befülle! danke trotzdem für die hilfe!!! das mit dem "in welcher zeile" von dir hat mich drauf gebracht!!!! danke danke danke!!!
gruß björn