Som Jogii skrev, så kan det kun laves som en "vejledende" kontrolfunktion. Den simple måde er at oprette et view, med tlf (det feltnavn du vil tjekke) som første sorterede kolonne, og så i inputvalidation på feltet lave et opslag: @If(@IsError(@DbLookup("":"Nocache";"":"";"DitViewsNavn";tlf;1));@success;@Failure("Der eksisterer allerede et dokument med dette telefonnummer")); Det er ikke den rigtige måde at gøre det på (at validere på om man får en fejl...), kønt osv. Men det virker :-)
Den kode som mmmtm skriver er helt i orden. Problemet er nok bare at ENHVER fejl i opslaget vil resultere i accept. Dvs. at hvis du har fejl i oversigtsnavnet eller angivet det forkerte felt eller på en eller anden både laver en fejl i kodningen af opslaget så vil det resultere i accept af alle indtastede numre.
Lige en ting vedr. den anden parameter til DBLookup: Jeg ved ikke om "":"" vil virke efter hensigten. Jeg har set problemer med det. Jeg plejer at angive "". Det vil altid betyde "denne database".
Husk at sortere den første kolonne i den oversigt som du kontrollerer imod. Det er en almindelig fejl at glemme det.
Skjul også oversigten ved at navngive den med paranteser, f.eks. "(DitViewsNavn)|DitViewsNavn". Det der står efter | er aliaset og kan efterfølgende bruges til programmering. Det der står foran | er den "synlige" del af navnet.
Virker tilsyneladende efter den hensigt jeg efterspurgte.
Sidder dog med en ny problemstilling ! Da jeg kan se jeg reelt godt vil søge på 2 felter, om Tlf er oprettet hos Selskab, fx. må 99999999 godt være oprettet både hos TDC og Telia, da den ene kan være opsagt og dermed at man har flyttet nummeret.
En anden problemstilling kan være at nogle konglumerat-firmaer bruger samme telefonnummer til forskellige instanser af deres firma. Sjældent, men er set.
Vedr. Opsigelse hos TDC og flytning til Telia, så kan jeg ikke helt forstå problemstillingen, da nummeret jo må tilhøre samme firma, altså er knyttet til samme dokument i Notes ... medmindre du representerer et telefonselskab ...
I dette tilfælde burde det være muligt at angive dette forhold for TDC-dokumentet og så via SELECT-statementet i "DitViewsNavn" at få fravalgt det pågældende dokument via f.eks.
Leif: Hvis du godt vil søge på to felter, kan du på formularen lave et tredie (computed) felt som er selskab + tlf, og så lave dblookup på et view med dette felt som første sorterede kolonne.
"konglomerat" er min øgebetegnelse for "sammensat/skuffeselskab/etellerandetmystisk" Det er nok mit tyske arv der her skinner igennem :-) http://de.wikipedia.org/wiki/Konglomerat
Jeg plejer at skjule systemoversigter, så der ikke lige pludselig dukker brugere op som mener at der skal lavet ændringer i oversigten så de bedre kan bruge den. Normalt bør man aldrig lave opslag til oversigter som brugerne har adgang til.
jogii: Ok, jeg troede det var et hjemmelavet ord :-). Men ang. oversigter - kan brugere ikke få adgang til alle oversigter med ctrl-shift-gå til ? Leif: Kunne du bruge svaret ?
mmmtm> Joda, <Ctrl Shift> virker altid. Det skal bare ikke være sådan at man laver opslag på oversigter som brugerne kigger på til daglig. Lige pludselig er der en avanceret bruger der ønsker at flytte rundt på alting for at få et bedre overblik eller at nogle brugere mener at denne oversigt ikke bruges og derfor kan slettes :-(
leif> Det løser du ved have følgende formel i anden kolonne på din opslagsoversigt: @Text(@DocumentUniqueID).
@If(@IsError(_look); @success; @Elements(_look) > 1; @Failure("Der eksisterer FLERE dokumenter med dette telefonnummer"); _look = _thisunid; @Success; @Failure("Der eksisterer allerede et dokument med dette telefonnummer") )
Ideen er alstå at se om det fundne nummer stammer fra det aktuelle dokument. Hvis ja, så OK.
Leif> så er alt som det skal være !. Har du et dokument i editmode, ligger det jo back-end med samme data. Du skal komme en @isDocBeingEdited omkring din validation (den fra Jogii: @isDocBeingEdited(@If(@IsError(_look); @success; @Elements(_look) > 1; @Failure("Der eksisterer FLERE dokumenter med dette telefonnummer"); _look = _thisunid; @Success; @Failure("Der eksisterer allerede et dokument med dette telefonnummer") );@success); - så skulle den være der.
@if(@isDocBeingEdited(@If(@IsError(_look); @success; @Elements(_look) > 1; @Failure("Der eksisterer FLERE dokumenter med dette telefonnummer"); _look = _thisunid; @Success; @Failure("Der eksisterer allerede et dokument med dette telefonnummer") );@success);
Jogii> vi har primært web-brugere. Og desværre er brugen af (klient) databaser ikke så udbredt som den kunne være. Så hvis en klient-bruger når så langt som at bruge "gå til", vil vedkommende nok ringe til helpdesk i det øjeblik der dukker en oversigt op (uanset hvordan den ser ud :-). Men du har ret i at der nok ikke bør være en så nem adgang til oversigterne. Jeg har det bare sådan, at kan den ikke skjules helt, så kan det være det samme...
Hvis jeg så bruger: _thisunid = @Text(@DocumentUniqueID); _key := TeleNummer; _view := "TeleTjeck"; _column := 2; _look := @DbLookup("":"Nocache";"";_view;_key;_column); REM {bemærk ændring til kolonne 2 istedetfor kolonne 1};
@if(@isDocBeingEdited(@If(@IsError(_look); @success; @Elements(_look) > 1; @Failure("Der eksisterer FLERE dokumenter med dette telefonnummer"); _look = _thisunid; @Success; @Failure("Der eksisterer allerede et dokument med dette telefonnummer") );@success);
Kan jeg ikke gemme formen pga. Passing arguments to a non-@Function or to a @Function that doesn's require arguments: ';'
@If(@IsError(_look); @success; @Elements(_look) > 1; @Failure("Der eksisterer FLERE dokumenter med dette telefonnummer"); _look = _thisunid; @Success; @Failure("Der eksisterer allerede et dokument med dette telefonnummer") )
Prøv dette @Prompt([OK]; "dette dokument"; _thisunid); @Prompt([OK]; "unid fra oversigt"; _look); før den anden @if Så kan du sammenligne de to værdier.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.