Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Selin am 04.06.04 - 15:15:22
-
Hallo Zusammen,
ich habe zwei Masken, beides Hauptdokumente
In der einen Maske "Dokument" stehen Felder drin wie "Start" "Datum_Start" "Ziel" "Datum_Ziel"
in der anderen Maske "Anfrage" stehen die felder "Start_a" "Datum_Start_A" "Ziel_A" "Datum_Ziel_A"
Nun möchte ich mittels einen Agenten prüfen, ob es übereinstimmende Werte von diesen zwei Masken gibt.
Hintergrund: Die Leute sollen die Möglichkeit haben eine Anfrage zu stellen und wenn die Werte aus dem Anfragenformular mit den Werten aus einem der Dokumente (Maske "Dokument" )übereinstimmen eine Mail bekommen sollen mit einem Dokumentenlink auf das Dokument in der Makse "Dokument"
Ist sowas möglich?
Wenn ja, wie?
danke Euch
Grüsse
Selin
-
Hallo Selin,
die Masken haben diese Felder. Aber Du möchtest wohl 2 Dokumente miteinander vergleichen, die jeweils mit einem der beiden Masken erstellt wurden. Natürlich ist das möglich. mit Script geht ziemlich alles. :-)
Wenn ich es richtig verstanden habe, dann geben die User z.B. ein Datum ein und Du willst in den Dokumenten nach dem Datum suchen. Du holst Dir einfach alle Dokumente in eine NotesDocumentCollection und läufst in einer Schleife über die Dokumente. Bei jedem Doc fragst Du ab, mit welcher Maske es erstellt wurde und dann prüfst Du davon abhängig die Felder ab.
Es gibt mit Sicherheit eine elegantere Lösung, etwa eine NotesDatabase.Search, aber da könnte die Syntax für die Suche knifflig werden, je nachdem wieviele Felder Du abfragen möchtest.
Gruß und schönes WE
Markus
-
Hi,
danke erstmal für deine Antwort
Es sind 4 Felder die ich abfrage
Mit Script kenne ich mich nicht so gut aus.
Ist das viel Code?
Kannst Du mir behilflich sein?
Danke + Gruß
-
Mit Script kenne ich mich nicht so gut aus.
Ich denke das wäre auch in Formelsprache lösbar.
Du bastelst Dir eine Ansicht, 1 Spalte, in der Spalte die Formel
Feld1 + Feld2 + Feld3 + Feld4
Dann holst Du Dir über @DBColumn die Spalteninhalte und siehst mit @IsMember nach ob Dein String
_AktuellesDok := Feld1 + Feld2 + Feld3 + Feld4
da enthalten ist.
Script wäre zwar sicherlich eleganter ::)
Sag an ob Dir das reicht, sonst kann ich gerne Tipps geben für eine Script-Umsetzung.
-
Also 4 Felder kann man wirklich mit Formelsprache abfragen. Ich hab gedacht es wären viel mehr. :-)
Markus
-
Hi,
habe es jetzt mal so versucht im Agenten
Liste:= @DbColumn( "":"" ; "" : "" ; Anfragen ; 1 );
_AktuellesDok := @Text(von_D_A) + @Text(bis_D_A) + @Text(von_A) + @Text(nach_A);
@IsMember(_AktuellesDok;Liste);
@mail Send(...)
Hat aber nicht geklappt
Was mach ich falsch?
-
habe mal versucht die Liste auszugeben.
Habe 3 Einträge in der Ansicht
mein Prompt gibt dreimal den ersten Wert aus.
Liste := @DbColumn("":"No Cache"; ""; "Anfragen"; 1);
@Prompt([OK];"test";Liste);
Hat jemand ne Idee?
Danke + Gruß
-
Hi,
habe es jetzt mal so versucht im Agenten
Liste:= @DbColumn( "":"" ; "" : "" ; Anfragen ; 1 );
_AktuellesDok := @Text(von_D_A) + @Text(bis_D_A) + @Text(von_A) + @Text(nach_A);
@IsMember(_AktuellesDok;Liste);
@mail Send(...)
Hat aber nicht geklappt
Was mach ich falsch?
Da dürfte auch was fehlen. Es wird geprüft und dann direkt ne Mail versendet, ohne daß das Ergebnis der Prüfung berücksichtigt wird.
-
und wie würde das richtig aussehen?
-
hier geht er alle 3 Einträge in _aktellesDok durch
aber die Liste gibt immer nur den ersten Eintrag aus
und obwohl die erste Prüfungd er Werte in _aktuellesDok und Liste nicht übereinstimmen gibt er am ende ein ja aus
_AktuellesDok := @Text(von_D_A) + @Text(bis_D_A) + @Text(von_A) + @Text(nach_A);
@Prompt([OK];"aktuellesdok";_AktuellesDok );
Liste := @DbColumn( "":"No Cache" ; "" : "" ;" Anfragen_Pruef" ; 1 );
@Prompt([OK];"liste";Liste );
@If(@IsMember(_AktuellesDok;Liste) = 1;
@Prompt([OK];"ja";"ja" );
@Prompt([OK];"nein";"nein" ))
Bitte um Eure Hilfe
-
Hmm...also bei mir funktioniert das ohne Probleme. Ich hab zum Testen jetzt allerdings nur Textfelder benutzt, aber da Du ja @Text verwendest, sollte das auch klappen.
Was mir aufgefallen ist, im @DBColumn ist vor dem Viewnamen ein Leerzeichen.
Hast Du in der View die Werte auch mit @Text(xyz) verkettet ?
-
Du solltest anstelle von
@Prompt([OK];"liste";Liste );
besser folgendes benutzen, um alle Elemente anzuzeigen:
@Prompt([OKCancelList];"liste";"";"";Liste );
Der einfache OK Prompt zeigt immer nur den 1. Eintrag an.
Andreas
-
@Driri
Hmm...also bei mir funktioniert das ohne Probleme. Ich hab zum Testen jetzt allerdings nur Textfelder benutzt, aber da Du ja @Text verwendest, sollte das auch klappen.
Was mir aufgefallen ist, im @DBColumn ist vor dem Viewnamen ein Leerzeichen.
Hast Du in der View die Werte auch mit @Text(xyz) verkettet ?
ja, habe die Ansicht "Anfragen_Pruef" und "Anfragen" mit @Text() verkettet
@Glombi
Du solltest anstelle von
@Prompt([OK];"liste";Liste );
besser folgendes benutzen, um alle Elemente anzuzeigen:
@Prompt([OKCancelList];"liste";"";"";Liste );
Der einfache OK Prompt zeigt immer nur den 1. Eintrag an.
habe ich jetzt gemacht aber die Liste bleibt leer.
Habe folgendes
Liste := @DbColumn( "":"No Cache" ; "" : "" ;"Anfragen_Pruef" ; 1 );
@Prompt([OKCANCELLIST];"liste";"";"";_Liste );
_AktuellesDok := @Text(von_D_A) + @Text(bis_D_A) + @Text(von_A) + @Text(nach_A);
@Prompt([OKCANCELLIST];"aktuellesdok";"";"";_AktuellesDok );
Den Agenten führe ich auf der Ansicht "Anfragen_Pruef" aus
"liste" bleibt leer
aktuellesdok wird aber richtig angeziegt
-
Du benutzt einmal Liste und einmal _Liste.
Und warum führst Du den Agenten aus der gleichen Ansicht aus, auf die das @DBColumn zugreift ? Ich versteh den Sinn da noch nicht so ganz.
-
ou, das mit _Liste hab ich total übersehen und den Agenten führe ich natürlich auf der Ansicht "Anfragen" aus.
War ein Schreibfehler, sorry
Werde es mal ausprobieren
-
ok die Listen werden richtig ausgegeben.
Wie kann ich jetzt diese Listen miteinander vergleichen.
Habe @ismember(_Liste;_AktuellesDok)
ausprobiert mit einer if Abfrage
@if(@ismember(_Liste;_AktuellesDok);
@prompt([OK];"ja";"ja");
@prompt([OK];"nein";"nein"))
es gibt werte die in beiden Listen vorkommen aber trotzdem kommt immer nein als Ergebnis raus
-
Schau' Dir mal die Syntax von @IsMember an.
Und seit wann ist _AktuellesDok eine Liste ?
-
Vertausch mal in der @IsMember die Werte. So prüfst Du, ob _Liste in _AktuellesDok enthalten ist, da muß dann wohl auch "nein" bei rauskommen.
-
Schau' Dir mal die Syntax von @IsMember an.
Aus der Designer Hilfe
@IsMember( Text ; Textliste )
@IsMember( Textliste1 ; Textliste2 )
und meine beiden Variablen sind Textlisten
Und seit wann ist _AktuellesDok eine Liste ?
Liste := @DbColumn( "":"No Cache" ; "" : "" ;"Anfragen_Pruef" ; 1 );
@Prompt([OKCANCELLIST];"liste";"";"";_Liste );
_AktuellesDok := @Text(von_D_A) + @Text(bis_D_A) + @Text(von_A) + @Text(nach_A);
@Prompt([OKCANCELLIST];"aktuellesdok";"";"";_AktuellesDok );
-
@Driri
hatte ich vorhin auch schon gemacht und es hatte nicht funktioniert.
Lag aber an der falschen Variable mit _Liste
also nach dem Tauschen der Werte in @ismember klappt es nun
danke Euch für Eure Mühen
Ganz liebe Grüße
Selin
-
_AktuellesDok := @Text(von_D_A) + @Text(bis_D_A) + @Text(von_A) + @Text(nach_A);
ist definitiv keine Liste, sondern Text. Also
@IsMember( Text ; Textliste )
d.h. Du musst
@if(@ismember(_AktuellesDok;Liste);
schreiben!
Andreas
P.S.: Da haben wir wohl zeitgleich gepostet.
P.S.S: Ich habe schon von weitem einen Countdown gehört ;D