Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: heidiweber am 04.04.06 - 11:38:42
-
Hallo
ich möchte eine Art "Primary Key" realisieren.
Auf einem Dokument ist ein Feld, in dem man einen Dokumentnamen vergeben kann. Dieser Name soll eindeutig sein. In der Notes-Hilfe habe ich @dblookup gefunden. Ich müsste das aber mit Lotusscript realisieren.
Vom Prinzip habe ich mir das folgendermasen vorgestellt:
Entweder beim verlassen des Feldes oder beim Abspeichern des Dokumentes soll in einer Ansicht in einer Spalte nach dem Namen gesucht werden. Falls der gleiche Name vorhanden ist, Fehlermeldung, falls noch nicht vorhanden --> kann Speicherung erfolgen.
Wie kann man dies realisieren?
Vielen Dank
cu
Heidi
-
Hierfür bietet sich NotesView.GetAllDocumentsByKey (suchstring, True) an. Aber Obacht - wird das Dokument erneut abgespeichert, darf der Begriff in der Ansicht sehr wohl auftauchen, muss dann aber auf dem Dokument selber basieren (gleiche UniversalID).
Bernhard
-
Jepp, das geht.
Ansicht mit allen Dokumenten
set lookupdoc = view.GetDocumentByKey( InhaltAusFeld )
If lookupdoc is nothing then
den Namen gibt es nicht
end if
oder
If not lookupdoc is nothing then
den Namen gibt es
Nachtrag zu Bernhard:
ist es das gleiche Doc oder nicht?end if
Ist jetzt etwas rudimentär, sollte aber reichen.
André
-
Hallo
ich habe das jetzt so gemacht:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim ws As New NotesUIWorkspace
Set doc = ws.CurrentDocument.Document
Set db = session.CurrentDatabase
Set view = db.GetView( "viewPrimKeySort" )
Set dc = view.GetAllDocumentsByKey(doc.drv_identifier, True)
If dc.Count > 0 Then
Messagebox( "hat doc gefunden" )
If dc.GetFirstDocument(UniversalID) = doc.UniversalID Then
ist das selbe dokument --> dann trotzdem speichern
End If
Else
Messagebox( "nichts gefunden" )
End If
Ich bekomme das nicht gebacken bzgl. der UniversalID des selben Dokuments. Das funktioniert leider nicht: dc.GetFirstDocument(UniversalID). Wie kann man auf die UniversalID von einem gefundenen Dokument zugreifen?
Kann mir da bitte jemand helfen?
Vielen Dank
cu
Heidi
-
So müsste das aussehen:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim checkdoc As NotesDocument
Dim ws As New NotesUIWorkspace
Set doc = ws.CurrentDocument.Document
Set db = session.CurrentDatabase
Set view = db.GetView( "viewPrimKeySort" )
Set dc = view.GetAllDocumentsByKey(doc.drv_identifier, True)
If dc.Count > 0 Then
set checkdoc = dc.GetFirstDocument
do while not (checkdoc is nothing)
if checkdoc.UniversalID <> doc.UniversalID then
msgbox "Es gibt bereits ein Dokument mit diesem Feld!",0+16,"Abbruch"
exit do
End if
set checkdoc = dc.GetNextDocument(checkdoc)
Loop
End If
Andreas
-
if checkdoc.UniversalID <> doc.UniversalID then
muss wohl :
if checkdoc.UniversalID = doc.UniversalID then
heissen..
-
Nein - wenn die IDs gleich sind, sind checkdoc und doc identisch und alles ist in Ordnung. Sind sie ungleich, gibt es neben doc bereits ein anderes checkdoc, was ja nicht sein darf.
Bernhard
-
Nö, es soll ja nur dann zuschlagen, wenn es bereits ein anderes Dok. gibt, also <>
Andreas
-
Hallo
vielen Dank an euch allen. Habs hinbekommen.
Spitzen Service hier im Forum. Kompetent und extrem schnell:))
Wünsche euch noch einen schönen Tag
cu
Heidi
-
T'schuldigung, Asche auf mein Haupt....