Autor Thema: Felder auf doppelte einträge überprüfen  (Gelesen 5513 mal)

Offline first_andre

  • Frischling
  • *
  • Beiträge: 5
Felder auf doppelte einträge überprüfen
« am: 14.08.06 - 15:31:22 »
Hallo,

ich suche nach einer Funktion bei der ich beim schließen der Maske/des Documents
ein Feld überprüfe. Dieses Feld muss unique sein, einzigartig, d.h. es darf kein Dokument in der DB existieren mit dem gleichen Inhalt. Wie kann ich das am besten angehen.
Ich habe schon bei der Maske in der QuerySave Section auf leere Felder geprüft.
Wie kann ich es anstellen dort auf doppelte Inhalte eines Feldes zu prüfen.
Ich hoffe das war etwas verständlich,

danke im Voraus.

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Felder auf doppelte einträge überprüfen
« Antwort #1 am: 14.08.06 - 15:36:58 »
Herzlich Willkommen im Forum.

Wie prüfst du die Felder ab mit Script oder der Formel-Sprache?

Kann man das Feld nur bearbeiten wenn das Dokument neu angelegt wird?

Hast du eine Ansicht, die nach dem Schlüssel sortiert ist?

Wenn ja kannst in dieser suchen und wenn du kein anderes Dokument gefunden hast ist der Schlüsselwert einzigartug. Wenn du ein weiters Dokument gefunden hast kannst du die Document-Unique-ID vergleichen, wenn sie gleich ist ist der Schlüssel immer noch einzigartig.

Brauchst du noch weitere Hilfe?

Rainer
Rainer Zaske

MCSD - C#

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder auf doppelte einträge überprüfen
« Antwort #2 am: 14.08.06 - 15:47:26 »
Ich habe hierzu schon einmal was gepostet - mit Hilfe der Suchfunktion finden sich aber noch weitere Threads hierzu:

IsValueAmbiguous

HTH,
Bernhard

Offline first_andre

  • Frischling
  • *
  • Beiträge: 5
Re: Felder auf doppelte einträge überprüfen
« Antwort #3 am: 14.08.06 - 17:18:16 »
Ich habe es mit IsValueAmbigous probiert aber leider bin ich nicht zum erfolg gekommen.

Ich würde die Felder mit Scrip oder mit @Formeln prüfen, das ist mir egal, hauptsach ich verstehe es.
Es sollte doch ungefähr so aussehen:
 
das Feld als Variable
dann sollte ich ein View haben in dem das Feld angezeigt wird
beim Speichern, also QuerySave, läuft die der Vergleich:das Feld des aktuellen Dokuments wird mit dem Eintrag X aus der View verglichen, wenn es gleich ist gibts nen Fehler, wenn nicht wird X+1 gesetzt und das Feld aus dem 2. Eintrag der View wird verglichen, bis zum Ende.

Das bräuchte ich als code. :-)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder auf doppelte einträge überprüfen
« Antwort #4 am: 14.08.06 - 17:20:25 »
Obwohl es fertigen Code hier im Forum normalerweise überhaupt nicht gibt, sondern "nur" Hilfe zur Selbsthilfe: Genau diesen fertigen Code habe ich gepostet. Zumindest als Beispiel sollte er genügen.

Besser wäre es also mit konkreten Fragen.

Bernhard

Offline first_andre

  • Frischling
  • *
  • Beiträge: 5
Re: Felder auf doppelte einträge überprüfen
« Antwort #5 am: 14.08.06 - 17:58:13 »
Jap, ich versuchs schon irgendwie zu verstehen,
 als erstes gabs den Fehler: "Not a Sub or Function name: ERRORHANDLER und markiert
diese Zeile rot: "Call ErrorHandler ("IsValueAmbiguous")", obwohl oben doch drin steht "On Error Goto ErrorRoutine"
Wo steckt dieser ErrorHandler?

Dann hab ich diesen ErrorHandler einfach weggelassen.
Jetzt hab ich die Variable szLokkupViewName$="ViewArt"

definiert direkt nach den DIM´s

Es geschieht nichts wenn ich die Variable absichtlich falsch definiere?

Als szValue habe ich den Feldnamen definiert. Ich verstehe die andere Variable noch nicht: docCurrent, szErrorMessage wird ja in der Funktion definiert. Soweit steh ich jetzt. Sorry  befass mich nicht allzu oft mit der Programmierung.




Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder auf doppelte einträge überprüfen
« Antwort #6 am: 14.08.06 - 18:29:21 »
Dass die Routine "ErrorHandler" selbst zu programmieren ist, hatte ich im Ursprungspost ausdrücklich mitgeteilt.
Was Du mit der "absichtlich falschen Definition" meinst, erschliesst sich mir nicht. Auf jeden Fall machst Du da etwas falsch.
szValue und andere Parameter der Function sind im Header beschrieben. Mehr ist dazu eigentlich nicht zu sagen.

Sorry  befass mich nicht allzu oft mit der Programmierung.
Dann kannst Du auch solche Sachen nicht umsetzen. (Wirkliche) Programmierung ist generell nichts für "manchmal" oder "nebenbei". Leider hat sich das noch nicht überall herumgesprochen.

Ich kann Dir jedenfalls so nicht weiterhelfen.

Bernhard

Offline first_andre

  • Frischling
  • *
  • Beiträge: 5
Re: Felder auf doppelte einträge überprüfen
« Antwort #7 am: 15.08.06 - 08:38:56 »
OK, ich möchte es so formulieren, ich programmiere nicht jeden tag lotus script. Ich kam bis jetzt mit der FormelSprache ganz gut zurrecht. Ich bin auch kein Notesentwickler, dazu fehlt mir die Zeit zum einarbeiten. Ab und zu erstelle ich halt ne DB in der man ein paar Zahlen und Buchstaben eingeben kann, mehr ist es einfach nicht. Aus diesem Grund habe ich mich hier angemeldet um Hilfe von Leute zu bekommen die den ganzen Tag damit zu tun haben.

Ich habe den Code den Du geschrieben hast einfach mal in QuerySave reinkopiert, nachdem das mit dem ErrorHandler nicht ging hab ich den einfach auskommentiert. Dann hab ich mir gedacht, woher soll die Funktion wissen welchen View ich meine, und habe
szLokkupViewName$="ViewArt" und als Feldnamen szValue="Nummer" gesetzt.
Aber nach deinem Post muss das völlig daneben sein.




klaussal

  • Gast
Re: Felder auf doppelte einträge überprüfen
« Antwort #8 am: 15.08.06 - 08:46:42 »
Zitat
szLokkupViewName - the name of the view to search in
   '               docCurrent - the NotesDocument the value resides in
   '               szValue - the value which isn't allowed to be ambiguous
   '               szErrorMessage - will keep possible error messages (for server based routines calling this function)

Da ist doch alles beschrieben.....

Glombi

  • Gast
Re: Felder auf doppelte einträge überprüfen
« Antwort #9 am: 15.08.06 - 09:10:25 »
Wenn Du in Script nicht fit bist, dann geht es auch einfacher mit der Formelsprache. ZaLudtske hat es ja bereits skizziert.

Du machst eine View, die nach dem Feld (nennen wir es "Feld1"), welches Du auf Eindeutigkeit prüfen willst, in der 1. Spalte sortierst. In der 2. Spalte trägst Du folgende Formel ein:
@Text(@DocumentUniqueID).

In der Maske programmierst Du in dem Feld folgende Eingabevalidierung:

_View := "Name der Ansicht";
_Key := Feld1;
_Col := 2;
_Lookup := @DbLookup("":"NoCache";"";_View;_Key;_Col);
@If(
 @IsError(_Lookup);
    @Success;
  @Elements(_Lookup ) = 1 & _Lookup  = @Text(@DocumentUniqueID);
    @Success;
 @Failure("Dieser Wert ist bereits in einem anderen Dokument vorhanden!")
)


Andreas

Offline first_andre

  • Frischling
  • *
  • Beiträge: 5
Re: Felder auf doppelte einträge überprüfen
« Antwort #10 am: 15.08.06 - 09:50:24 »
Das sieht gut aus!!
Die Formelsprache ist doch etwas einfach zu verstehen.


Danke euch allen, es stimmt schon das man viel Verständnis mitbringen muss um LotusScipt richtig einzusetzen.

mfg, André!
« Letzte Änderung: 15.08.06 - 15:22:57 von first_andre »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz