Domino 9 und frühere Versionen > ND8: Entwicklung

Änderungen in names.nsf als Protokoll?

(1/2) > >>

emadowo:
Hallo Notes-Gemeinde,
in der Firma gibt es Kolleg/inn/en (z.B. Personalabteilung), die sollten davon wissen, wenn sich an den Kontaktdaten (Telefon-Nummer, Adresse in der names.nsf) eines Mitarbeiters etwas ändert.

Habt ihr Ideen, wie man so etwas realisieren kann?

In einer separaten Mitarbeiter-Datenbank ziehe ich "live" diverse Felder zur Anzeige mit @NameLookup( [Exhaustive] ; Name ; <Feld in names.nsf> ) raus. Nur bekomme ich die Änderung ja nicht mit. Kann ich da ansetzen?

Vielen Dank für eure Hilfe!

Grüße aus Bayern
Erwin

klaussal:
Wenn's etwas kosten darf: http://www.qkom.de/ibmdomino/securtrac

koehlerbv:
Wenn Du schon eine separate DB hast, die Daten aus dem DD zieht, dann hast Du doch schon eigentlich fast alles. Beim Auslesen brauchst Du doch nur zu vergleichen, ob es Unterschiede zwischen dem DD und Deiner DB gibt und das entsprechend loggen und / oder Mails dazu verschicken.
Mit @functions wirst Du dabei allerdings nicht glücklich.

Ich habe auch mehrere Anwendungen entwicklet, die derartige Abgleiche durchführt. Eine Anwendung als Self-Service-AddOn zum DD, die wohl Eurer "Mitarbeiter-DB" entsprechen dürfte, protokolliert / informiert auch entsprechend:
- Schau im Setup nach, welche DD-Items wohin in die DB übernommen werden sollen (oder vice versa)
- Vergleiche diese Items. Unterschiede? Melden und übernehmen.
Eigentlich kein Hexenwerk.

Bernhard

emadowo:
Bernhard, was meinst du mit "schau im Setup nach", was hast du da definiert?

Ich hätte nun das jeweilige Feld in der Mitarbeiter-DB genommen, das entsprechende Feld aus der names.nsf ausgelesen und bei Differenz ins Feld changelog "Feld xy hat sich geändert" reingeschrieben.

emadowo:
Um das Rausziehen von Werten aus der names.nsf voranzubringen, habe ich mich ATA's Sync-Beispiels bedient:
http://atnotes.de/index.php/topic,3630.0.html   (Vielen Dank, ATA!)
Das Übernehmen der Adressen funzt fantastisch. Nur die Synchronisation streikt. Fehlermeldung: "Invalid Universal ID. Der Debugger stellt fest, dass das Feld ParDocID nicht in die Variable sUNID geschrieben wird. Was mache ich falsch? Hier der Code:

--- Code: ---Dim session As New NotesSession
Dim dbThis As NotesDatabase
Dim dbNAB As NotesDatabase
Dim dc As NotesDocumentCollection
Dim docNAB As NotesDocument
Dim doc As NotesDocument
Dim sUNID As String
Dim LogText As String
Dim LogName As String
Dim i As Integer

Set dbThis = session.CurrentDatabase
Set dbNAB = session.GetDatabase("Serverli","names.nsf") ' # öff. Adressbuch
Set dc = dbThis.AllDocuments ' # alle Personendokumente in eine Collection holen...
If dc.Count > 0 Then
' # Personendokumente gefunden
Set doc = dc.GetFirstDocument
For i = 1 To dc.Count
sUNID = doc.parDocID(0) ' # die UNID des Adressdokumentes lesen
Set docNAB = dbNAB.GetDocumentByUNID(sUNID)
If Not docNAB Is Nothing Then
LogName = docNab.Fullname
LogText = LogName + " hat sich geändert."
doc.OfficePhoneNumber = docNAB.OfficePhoneNumber  ' # Synchronisation der Büro-Telefonnummer
doc.GetCity = docNAB.City  ' # Synchronisation Wohnort (privat)
'# ...
End If
Set doc = dc.GetNextDocument(doc)
Next
Else
' # Keine Personen-Dokumente gefunden
End If
--- Ende Code ---

Vielen Dank für Eure Hilfe!

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln