Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Notes-Creater am 17.06.05 - 12:57:28

Titel: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 12:57:28
Hallo!
möchte einen manuellen Code in einer Form eingeben und dann überprüfen ob er wirklich eindeutig ist...
hatte mir überlegt das ich alle ID´s dieser Dokumente in einem View auflisten lasse und dann mit folgender Schleife vergleiche:

liste := @DBColumn("Notes":"NoCache";"":"";View;1);
@For(n := 1;n <= @Elements(liste); n := n + 1;
y:=@Subset(liste;x); @If(@ThisValue=y;@Prompt("ID bereits vorhanden, bitte ändern!";@Success))

Wie würdet ihr das machen?
Könnte es so klappen?
freu mich über hilfe!
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Axel am 17.06.05 - 12:59:44
Hi,

das mit der View ist schon der richtige Weg. Aber warum DBColum? Mach's doch mit DBLookup und nimmals Key den neuen Code. Bekommst du kein Dokument zurück, ist er eindeutig.


Axel
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 13:05:05
kenne mich mit @DBLookup nicht aus und da ich nicht ganz schlau aus meiner hilfe werde, weiß ich net genau was @dblookup tut?
könnt ihr mir es sagen?    :-\
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Axel am 17.06.05 - 13:21:50
Hi,

@DBLookup sucht anhand eines Schlüssels in einer angegeben Ansicht und liefert den Wert der angegebenen Ansichtenspalte oder des angegebenen Feldes zurück.

Damit das funktioniert, muß die ansicht in der ersten Spalte sortiert oder kategorisiert sein.

Eigentlich ist das aber in der Hilfe sehr einfach und klar beschrieben. In den Beispielen findest du auch nochmal die Funktionsweise erklärt.


Axel
 
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Linus am 17.06.05 - 13:22:54
_id := @DBLookup("Notes":"NoCache";"":"";View; key; 1);
@If(@IsError(_id);@Success;@Prompt("ID bereits vorhanden, bitte ändern!"))

Der DBLookup funktioniert ähnlich wie DBColumn. Du gibst hier nur noch den key mit, das heißt den Wert nach dem Du suchst. Dafür ist es wichtig, dass Deine Ansicht in der ersten Spalte diesen key (also bei Dir die ID) enthält. Diese Spalte muss sortiert sein!

Allerdings habe ich die Erfahrung gemacht, dass es gelegentlich vorkommen kann, dass die Funktion meint, die ID wäre noch nicht vergeben, obwohl sie gerade erst vergeben wurde. Das liegt dann daran, dass der Ansichtsindex noch nicht akualisiert ist.

Sauberer lässt sich das Problem mit LS lösen.
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 14:12:58
y := @DBLookup("Notes":"NoCache";"":"";AircraftID; @ThisValue; 1);
@If(@IsError(y);@Success;@Prompt("ID bereits vorhanden, bitte ändern!"))

geht nicht... hab vorher die ganzen Überprüfungen bzgl. des Formates und wenn ich dann eine angebe, die schon vorhanden ist, zeigt er mir an:
*Insufficient Arguments for @function*
?????
was bedeutet das?
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: koehlerbv am 17.06.05 - 14:17:25
Die Syntax von @Prompt ist falsch.
Ausserdem scheint die Logik nicht zu stimmen - wenn @IsError dann @Success
@Success ist für Eingabevalidierung vorgesehen. Wenn Du dort bist, dann ist @Prompt falsch - statt dessen muss es @Failure heissen.

Liest Du eigentlich die DesignerHelp ?

Bernhard
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: max.power am 17.06.05 - 14:18:33
Hi,

die View muss dem @dblookup als String übergeben werden, also als "AircraftID".

LG,
Max
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 14:24:51
y := @DBLookup("Notes":"NoCache";"":"";"viewID"; @ThisValue; 1);
@If(@IsError(y);@Success;@Prompt([OK];"Fehler";"ID bereits vorhanden, bitte ändern!"))

ah, so klappts..
vielen Dank!

Ob ich die help lese...
ja, aber ich hab die Englische Version und da ist die help manchmal schwer verständlich  (Zumindest für mich)  ;)
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 14:27:35
aber noch eine frage:
wenn ich mehrere If schleifen hab, dann darf ich erst in der letzten @Success schreiben oder?
ansonsten würd er mir ja irgendwo ggf speichern was nicht soll oder?
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: max.power am 17.06.05 - 14:34:57
Sehr gut, jetzt muss nur noch das @prompt durch ein @failure ersetzt werden - wie Bernhard schon erwähnt hat ;)

Was genau meinst du mit mehreren if-Schleifen? Meinst du mehrere Eingabevalidierungen für andere Felder? Dann ist das kein Problem, das @Failure bezieht sich immer nur auf das jeweilige Feld und der Speichervorgang wird abgebrochen - so lange, bis alle Validierungen @Success liefern.
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 14:37:42
wieso kann ich nicht @Prompt verwenden?
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: koehlerbv am 17.06.05 - 14:39:09
Weil in der Eingabevalidierung dafür extra @Failure vorgesehen ist. Siehe DesignerHelp.

Bernhard
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: max.power am 17.06.05 - 14:40:57
@Prompt gibt zwar die Meldung aus, dass da was nicht OK ist, der Speichervorgang wird aber nicht abgebrochen - das musst du eben mit @Failure machen.
Der Code steht doch in der Eingabevalidierung, oder?
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 14:48:28
a := @Matches(@ThisValue;"{A-Z}{A-Z}{{A-Z}");
y := @DBLookup("Notes":"NoCache";"":"";"ID"; @ThisValue; 1);
@If(@Length(@ThisValue)!=3;@Failure("Fehler - Die ID muss genau 3 Zeichen beinhalten- Bitte korrigieren");
   a=0;@Failure("Fehler - Die 3 Zeichen müssen Buchstaben im Format A-Z sein!- Bitte korrigieren!");
   @IsError(y);@Failure("Fehler - ID bereits vorhanden, bitte ändern!");
   @Success)

es geht nicht!!!?   :-[
eine frage zu @failure.. wie zeigt @failure den fehler an? auch in einem extra fenster? sonst ist die fehlererkunng schwer oder wenn mehrere Kriterien nicht stimmen
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Daenu am 17.06.05 - 14:52:22
Ja das gibt ein Fenster raus wie beim Prompt. Was geht den jetzt nicht? Lässt es Fehler durch?


ähh und da ist ein {zuviel
a := @Matches(@ThisValue;"{A-Z}{A-Z}{{A-Z}");
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 14:55:57
es lässt gleiche ID´s zu...
 :-[
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Daenu am 17.06.05 - 15:11:12
dann lass mal alles weg ausser dem lookup den aber sauber aufsetzen:

die View ID enthält:
1. Col: ID Feld
2. Col: @Uppercase(@Text(@DocumentUniqueID))

_thisDoc := @Uppercase(@Text(@DocumentUniqueID));
_newID := DEIN ID FELD; oder @ThisValue
_LookupDB := "";
_LookupView := "ID";
_LookupKey := _newID;
_LookupCol := 2;
_test := @DbLookup("":"NoCache";_LookupDB;_LookupView;_LookupKey;_LookupCol);

@If(@IsError(_test);@Success;@Failure("Diese ID ist schon vergeben"))

Vorteil: wenn Du die ID später modifizierst, geht das. Da sich die Formel nur auf ID's anderer  Doks konzentriert.
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: Notes-Creater am 17.06.05 - 15:14:15
ahhhhhhhhh, hab den Fehler.. musste !@Error(y)
viiiiiiiiiiiiiiiiiiiiiiiiiiiieeelne DAnk    :)
Titel: Re: eindeutig- Werte überprüfen?
Beitrag von: koehlerbv am 17.06.05 - 15:41:31
Genau das hatte ich heute schon um 14:17 Uhr geschrieben. Wenn wir uns hier Mühe mit Deinen Problemen geben, solltest Du unsere Anmerkungen auch ernster nehmen und gründlicher über sie nachdenken.

Bernhard