Autor Thema: Überprüfen auf eindeutiger Feldname  (Gelesen 1639 mal)

Offline heidiweber

  • Aktives Mitglied
  • ***
  • Beiträge: 162
Überprüfen auf eindeutiger Feldname
« 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Überprüfen auf eindeutiger Feldname
« Antwort #1 am: 04.04.06 - 11:43:52 »
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

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Überprüfen auf eindeutiger Feldname
« Antwort #2 am: 04.04.06 - 11:48:50 »
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é
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline heidiweber

  • Aktives Mitglied
  • ***
  • Beiträge: 162
Re: Überprüfen auf eindeutiger Feldname
« Antwort #3 am: 04.04.06 - 12:40:20 »
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

  • Gast
Re: Überprüfen auf eindeutiger Feldname
« Antwort #4 am: 04.04.06 - 13:16:42 »
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

klaussal

  • Gast
Re: Überprüfen auf eindeutiger Feldname
« Antwort #5 am: 04.04.06 - 13:20:20 »
Zitat
if checkdoc.UniversalID <> doc.UniversalID then

muss wohl :
if checkdoc.UniversalID = doc.UniversalID then
heissen..

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Überprüfen auf eindeutiger Feldname
« Antwort #6 am: 04.04.06 - 13:26:33 »
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

Glombi

  • Gast
Re: �berpr�fen auf eindeutiger Feldname
« Antwort #7 am: 04.04.06 - 13:27:15 »
Nö, es soll ja nur dann zuschlagen, wenn es bereits ein anderes Dok. gibt, also <>

Andreas

Offline heidiweber

  • Aktives Mitglied
  • ***
  • Beiträge: 162
Re: Überprüfen auf eindeutiger Feldname
« Antwort #8 am: 04.04.06 - 15:09:42 »
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

klaussal

  • Gast
Re: Überprüfen auf eindeutiger Feldname
« Antwort #9 am: 04.04.06 - 15:12:34 »
T'schuldigung, Asche auf mein Haupt....

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz