Domino 9 und frühere Versionen > ND6: Entwicklung

Überprüfen auf eindeutiger Feldname

(1/2) > >>

heidiweber:
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

koehlerbv:
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

DerAndre:
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é

heidiweber:
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

Glombi:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln