Autor Thema: Zugriff auf DB-Profile über Agent  (Gelesen 2073 mal)

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Zugriff auf DB-Profile über Agent
« am: 10.07.03 - 14:15:45 »
Hallo,
kaum ist das eine Problem gepostet hab ich auch schon das nächste...

Zum Problem:
In meiner BM-DB kann der AL seine Urlaubsvertretung bestimmen,
für diesen Zeitraum soll die Vertretung über zwei Agenten in der ACL
eingetragen werden und nach Ablauf der Zeit wieder aus der ACL gelöscht werden.
Hat soweit auch funktioniert, die Informationen werden in drei versteckte Felder
mit Mehrfachwerten geschrieben.

Ich habe das setzen und entfernen der ACL-Einträge "nur" mit Schaltflächen
direkt auf der Maske getestet.  :-[

Das Dokument in dem die Informationen hinterlegt sind soll es nur einmal in der
Datenbank geben.
Das wollte ich mit @Command([EditProfileDocument]) erreichen, wenn ich jetzt meinen Agent aus der Agent-List starte bekomme ich Object Variable not Set.

-> Set doc = ws.CurrentDocument.Document hier bleibt der Debuger stehen.
ws = Dim ws as new NotesUIWorkspace

Die Document Selection für den Agent habe ich auf die Maske gesetzt.

Meine Frage:
Wie komme ich mit meinem Agent auf dieses Dokument?

Für jede Hilfe dankbar.....

Gruß
Christian

Glombi

  • Gast
Re:Zugriff auf DB-Profile über Agent
« Antwort #1 am: 10.07.03 - 14:21:31 »
Hi,
Du musst erst den ws setzen dann das doc. Ausserdem das ws = ...weglassen.

Dim ws as new NotesUIWorkspace
Set doc = ws.CurrentDocument.Document

Andreas

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re:Zugriff auf DB-Profile über Agent
« Antwort #2 am: 10.07.03 - 14:41:48 »
@Glombi
Ich hab da mal wieder "Mist" geschrieben den keiner verstehen kann...

Auch auf die Gefahr hin das jeder hier über die umständliche Umsetzung
lacht, ist hier der Code....

Der - Agent

Options-Bereich:
  Option Public
  Option Explicit
  Use "ScriptLib"

Initialize-Bereich:
Call setNewACLEntry

Die Sub in der ScriptLib:

Sub setNewACLEntry
Dim session As New NotesSession   
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim strCurrentdate As String
Dim counter As Integer
   
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim strACLEntry As String
   
Set db = session.CurrentDatabase
Set acl = db.ACL
   
counter = -1
   
Set doc = ws.CurrentDocument.Document
strCurrentDate = Today()
   
Forall b In doc.ApproverDateFrom
counter = counter + 1
If strCurrentDate = b Then
strACLEntry = doc.ApproverName(counter)
Set entry = acl.GetEntry(strACLEntry)
If ( entry Is Nothing ) Then
Call acl.CreateACLEntry(strACLEntry,ACLLEVEL_AUTHOR)
Set entry = acl.GetEntry(strACLEntry)
If ( entry Is Nothing ) Then
End If

entry.UserType = ACLTYPE_PERSON
entry.EnableRole("AL")
End If         
End If                
End Forall
Call acl.Save
Call currentLog.Close   
End Sub

In der Maske befinden sich drei versteckte Felder(mit Mehrfachwerten) wo ich die
Informationen zur Urlaubsvertretung gespeichert habe.

Im Agent selbst ist eigentlich nur ein Call auf eine Sub in der ScriptLib.

Ich habe den Code aber auch schon direkt in den Initialize Bereich kopiert
und da hab ich die Fehlermeldung auch bekommen.

Danke & Gruß
Christian

Glombi

  • Gast
Re:Zugriff auf DB-Profile über Agent
« Antwort #3 am: 10.07.03 - 14:53:54 »
Hi,
wenn ich das richtig  verstanden habe, gibt's hier das Problem:

Set doc = ws.CurrentDocument.Document

Offenbar hat der ws kein CurrentDocument.

Wenn der Agent über gewählte Dokumente läuft, musst Du eine NotesDocumentCollection deklarieren und diese mit

set dc = db.UnprocessedDocuments

setzen. Dann weiter
set doc = dc.GetFirstDocument

Andreas

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re:Zugriff auf DB-Profile über Agent
« Antwort #4 am: 10.07.03 - 15:11:40 »
....stimmt, da bleibt er stehen.
Ich hab mir halt gedacht, da es dieses Dokument "nur" einmal in
der Datenbank geben darf, brauche ich keine DocumentCollection...

Wenn ich  .unprocessedDocuments verwende, muss ich da nicht manuell
ein Dokument in der aktuellen View markiert haben?

Mit @Command([EditProfileDocument]) wollte ich sicherstellen
das es dieses Dokument nur einmal in der Datenbank gibt.
Soweit ich weis werden ProfileDocumente in keiner Ansicht angezeigt....

Aber es muss dennoch eine Möglichkeit geben das ich mit meinem Agent auf
das eine Dokument komme..


Danke & Gruß
Christian

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re:Zugriff auf DB-Profile über Agent
« Antwort #5 am: 10.07.03 - 15:28:23 »
Hallo Chris!

Mit der Hilfe hast du es nicht so, oder ;-)

hier ein kleiner Auszug daraus:

Beispiel
Retrieves or creates a Profile document.
Defined in
NotesDatabase
Syntax
Set notesDocument = notesDatabase.GetProfileDocument( profilename$ [, uniqueKey$ ] )
Parameters
profilename$
String. The name or an alias of the Profile document.
uniqueKey$
String. Optional. The unique key associated with the Profile document.
Return value
notesDocument
NotesDocument. The Profile document that matches the given name.
Language cross-reference
getProfileDocument method in Java Database class
EditProfile @command in formula language
EditProfileDocument @command in formula language
Beispiel
Siehe auch:
Profilmasken

Du bekommst also dein Profildokument mit

set doc=db.getProfileDocument("Name des Dokuments")

Wobei dur für Name des Dokuments den Profildokumentnamen einsetzen musst. (Maskennamen)

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re:Zugriff auf DB-Profile über Agent
« Antwort #6 am: 11.07.03 - 09:55:41 »
Hallo,
wie immer DANKE ! @All für die Unterstützung !

Special Thanks @Ralf
dem ich nicht widersprechen möchte  ;D
Ich sollte wirklich erst in der Hilfe nachlesen
bevor ich hier poste  :-[  Sorry!

Gruß
Christian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz