feldabfrage 2 aus 5

  • hallo zusammen,


    sitze vor dem problem, dass ich ein feld habe in dem eine beliebige 5 stellige zahl steht.
    der user soll nun ein dokument auswählen können und dort für diese in dem dokument stehende 5 stellige zahl,
    per aktionsbutton eine zufällige abfrage zweier zahlen von den 5 bekommen.


    mit dem Ergebnis ob die eingabe richtig oder falsch ist.


    ich hab keine idee, wie ich sowas abfragen könnte.
    vlt könnt ihr mir ja helfen auf den richtigen weg zu kommen.


    vielen dank im voraus.

  • Hääää???? Bahnhof...


    Also ich habe ein Dokument, da steht


    37859


    Und der Benutzer wählt in einem anderen Dokument dieses aus und kriegt die Abfrage:
    "Gib mir mal die dritte und vierte Stelle"
    und wenn er dann 78 eingibt ist das richtig?


    Sag mal lieber, was Du damit bezwecken willst... und vor allem: Sag mal an, was Du schon "kannst" und in welcher Sprache Du das erledigen willst / musst...
    und dann liest Du Dir das hier in aller Ruhe durch und nimmst Dir Zeit, Deine Frage zu formulieren (so wie Du von uns erwartest, dass wir uns Zeit nehmen, eine Antwort zu formulieren)...


    Denn sonst lautet meine Antwort: nimm zweimal @Random und @Prompt, damit gehts...

  • hallo Thorsten,


    vielen dank für deine Nachricht. ich versuch mich besser auszudrücken.


    zu deinen fragen:
    würde das ganze gerne in der notes Formelsprache realisieren.


    es soll eine pin abfrage geben


    in einem kundendokument gibt es die zahl 37859, welche aber der normale user nicht sieht
    der normale user wählt das kundendokument aus, und über einen aktionsbutton kommt die abfrage
    "gib mir mal die dritte und vierte stelle"
    und wenn der user dann 78 eingibt, wäre das falsch.
    wenn er 85 eingibt wäre das richtig

  • So stellt man eine Frage richtig...


    Anmerkung1: dass du das nicht "sicher" hinbekommst, ist Dir hoffentlich klar... Denn der Benutzer muss ja nur in die Dokumenteigenschaften schauen, um die Pin auszulesen... Wenn Du das verhindern willst, musst Du das Feld verschlüsseln, und dann kann es nur jemand mit dem korrekten Schlüssel lesen (und damit auch mit der Usereingabe vergleichen)...


    Aber gut, wenn wir Security mal völlig außer Acht lassen, geht es so:
    Du würfelst Mitteln @Random (siehe Designer Hilfe) 2mal (beim 2. mal so lange, bis das Ergebnis anders ist als das erste, per @While).


    Dann wandelst Du diese gewürfelte Zahl per @Replace(@Text(Zahl);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") in eine schöner lesbare Zahl um.


    Und schließlich holst Du Dir per @Middle(DiePin;Zahl1;1) + @Middle(DiePin;Zahl2;1) die echte Pin und vergleichst sie mit dem, was Du vom User per @Prompt bekommen hast.


    Fertig

  • hallo thorsten


    ich hab mal gebastelt und einen aktionsbutton gemacht.


    Zahl1:= @Round(4*@Random+1);
    Zahl2:= @Round(4*@Random+1);
    Abfrage1:= @Replace(@Text(Zahl1);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ;
    Abfrage2:= @Replace(@Text(Zahl2);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ;
    @Prompt([Ok];"1. Zufallszahl";@Text(Zahl1));
    @Prompt([Ok];"2. Zufallszahl";@Text(Zahl2));
    @Prompt([Ok];"1. Stelle";@Text(Abfrage1));
    @Prompt([Ok];"2. Stelle";@Text(Abfrage2));
    @Prompt([OkCancelEditCombo];
    "PIN-Abfrage";"Bitte Nennen Sie uns die "+ Abfrage1 + " und die "+ Abfrage2 + " Stelle ihrer PIN.";"PIN"; "1. Stelle":"2. Stelle");
    @Prompt([Ok];"Die richtige PIN";@Text (@Middle(PIN;Zahl1;1) " + " @Middle(PIN;Zahl2;1)))


    hab mal ein paar prompt mehr rein gemacht um mein tun zu kontrollieren.
    bis zu dem prompt der Abfrage2 soweit ok
    ich bekomme mit prompt kein fenster hin, bei dem ich 2 werte eingeben könnte
    und wie mache ich dann den vergleich richtig mit der ausgabe des vergleiches richtig oder falsch?


    hoffe du kannst mir helfen,


    gruß thomas

  • Drück doch mal F1, wenn Du auf @Prompt mit dem Cursor stehst.. Es gibt z.B. Auch noch ein @Prompt([OkCancelEdit]...)
    Aber wie bereits im anderen thead geschrieben: wenn Dich bereits diese einfachsten Basics überfordern, solltest Du jemanden fragen, der sich auskennt. Vergleichen würde man übrigens mit @If( (@Text(Zahl1) + @Text(Zahl2)= EingabeZahl; @Prompt([Ok]; "Yupp"; "Richtig"); @Prompt([Ok];"Nope";"Falsch")), vorausgesetzt, der user soll ich einem Prompt beide Ziffern hintereinander eingeben...

  • hallo Thorsten,


    bin schon ein ganzes Stück weiter gekommen.
    die vielen prompt sind nur mal für mich.
    hab noch das Problem, dass bei den "okcanceledit" mir immer der letzte wert schon als vorbelegt rein kommt.
    wie bekomme ich das Feld vorher leer ?


    gruß thomas


    Zahl1:= @Round(4*@Random+1);
    Zahl2:= @Round(4*@Random+1);
    Abfrage1:= @Replace(@Text(Zahl1);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ;
    Abfrage2:= @Replace(@Text(Zahl2);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ;
    @Prompt([Ok];"1. Zufallszahl";@Text(Zahl1));
    @Prompt([Ok];"2. Zufallszahl";@Text(Zahl2));
    @Prompt([Ok];"1. Stelle";@Text(Abfrage1));
    @Prompt([Ok];"2. Stelle";@Text(Abfrage2));
    KundenPIN:= @Prompt([OkCancelEdit];"PIN-Abfrage";"Bitte Nennen Sie uns die "+ Abfrage1 + " und die "+ Abfrage2 + " Stelle ihrer PIN.";Eingabe);
    FIELD Eingabe := KundenPIN;
    @Prompt([Ok];"Eingegebene Pin";@Text(Eingabe));
    @Prompt([Ok];"Die richtige PIN";@Middle(PIN;Zahl1;-1)+@Middle(PIN;Zahl2;-1));
    @If(
    @Text(
    @Middle(PIN;Zahl1;-1)+@Middle(PIN;Zahl2;-1))= @Text(Eingabe);
    @Prompt([Ok]; "PIN"; "ist Richtig");
    @Prompt([Ok];"PIN";"ist leider Falsch"))

  • ok, Problem gefunden und gelöst.
    einfach noch ein Field davor mit @Text("") und schon klappts.


    bin schon ein bischen stolz *grins


    jetzt muß ich nur noch das mit dem @while für die zweite zufallszahl hinbekommen.

  • hallo Thorsten,


    hab es geschafft und es funktioniert. *happy


    welche Möglichkeiten habe ich dass ich in der Abfrage der PIN immer von der Nummerierung her mit der kleinsten angefangen wird.
    also nicht die 5. und 3. stelle
    sondern die 3. und 5. stelle abgefragt wird.


    gruß thomas


    hier nochmal die Prog:


    Zahl1:= @Round(4*@Random+1);
    Zahl2:= @Round(4*@Random+1);
    @While(Zahl1 = Zahl2 ; Zahl2:=@Round(4*@Random+1);Zahl2);
    Abfrage1:= @Replace(@Text(Zahl1);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ;
    Abfrage2:= @Replace(@Text(Zahl2);"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ;
    @Prompt([Ok];"1. Zufallszahl";@Text(Zahl1));
    @Prompt([Ok];"2. Zufallszahl";@Text(Zahl2));
    @Prompt([Ok];"1. Stelle";@Text(Abfrage1));
    @Prompt([Ok];"2. Stelle";@Text(Abfrage2));
    Field Eingabe:=@Text("");
    KundenPIN:= @Prompt([OkCancelEdit];"PIN-Abfrage";"Bitte Nennen Sie uns die "+ Abfrage1 + " und die "+ Abfrage2 + " Stelle ihrer PIN.";Eingabe);
    FIELD Eingabe := KundenPIN;
    @Prompt([Ok];"Eingegebene Pin";@Text(Eingabe));
    @Prompt([Ok];"Die richtige PIN";@Middle(PIN;Zahl1;-1)+@Middle(PIN;Zahl2;-1));
    @If(
    @Text(
    @Middle(PIN;Zahl1;-1)+@Middle(PIN;Zahl2;-1))= @Text(Eingabe);
    @Prompt([Ok]; "PIN"; "ist Richtig");
    @Prompt([Ok];"PIN";"ist leider Falsch"))

  • hallo Thorsten,
    vielen dank, das hat geholfen.


    da ich beim vergleich die richtige pin ja dann auch sortieren muß hab ich mal folgendes gemacht:


    AbfragenPIN := @Replace(@Text( @Sort( Zahl1 : Zahl2 ) );"erste":"zweite":"dritte":"vierte":"fünfte";"1":"2":"3":"4":"5") ;
    AbfragePIN1 := AbfragenPIN[1];
    AbfragePIN2 := AbfragenPIN[2];
    @Prompt([Ok];"Die richtige PIN";@Middle(PIN;AbfragePIN1;-1)+@Middle(PIN;AbfragePIN2;-1));


    jetzt bekomm ich aber nicht mehr die richtige PIN angezeigt, sondern genau um eine stelle zu weit links die werte.
    egal wie ich an dem @middle drehe, entweder kommt nur eine zahl raus, oder eben um eine versetzt.

  • ok torsten


    nachgedacht habe ich


    mit @middle hole ich mir die PIN , gib mit der AbfragePIN1 die startposition an und mit -1 hole ich mir ein zeichen nach links her.


    es hat ja vorher auch funktioniert.


    habe mir mit Prompt auch die AbfragePIN1 und 2 zeigen lassen, und da kommen noch die richtigen Zahlen.


    ist ja nicht so, dass ich mich nicht damit beschäftigen will oder kann, auch wenn es vlt. für dich so rüber kommt.


    auch wenn für dich hier wirklich "Ende" ist, vlt gibt es jemanden der mir weiterhelfen kann.
    ich such nicht die Lösung, ein Denkanstoß in die richtige Richtung könnte vlt schon helfen.


    Trotzdem danke ich dir für deine bisherige Hilfe.


    Gruß thomas

  • natürlich,


    gruß thomas


    hier der code


    Zahl1:= @Round(4*@Random+1); REM {Zufallszahl Nr. 1};
    Zahl2:= @Round(4*@Random+1); REM {Zufallszahl Nr. 2};
    @While(Zahl1 = Zahl2 ; Zahl2:=@Round(4*@Random+1);Zahl2); REM {Schleife wenn Zufallszahl Nr. 1 = Nr. 2};
    Abfragen := @Replace(@Text( @Sort( Zahl1 : Zahl2 ) );"1":"2":"3":"4":"5";"erste":"zweite":"dritte":"vierte":"fünfte") ; REM {Sortierung der Zahl 1 u. 2, da bei der späteren Abfrage die kleinste als erstes kommen soll};
    Abfrage1 := Abfragen[1]; REM {Zuweisung kleinste Zahl};
    Abfrage2 := Abfragen[2]; REM {Zuweisung größte Zahl};
    ZahlenSortieren := @Sort(Zahl1 : Zahl2);
    Zahl3 := ZahlenSortieren[1];
    Zahl4 := ZahlenSortieren[2];
    FIELD Eingabe:=@Text(""); REM {Feld Eingabe leeren};
    KundenPIN:= @Prompt([OkCancelEdit];"PIN-Abfrage";"Bitte Nennen Sie uns die "+ Abfrage1 + " und die "+ Abfrage2 + " Stelle ihrer PIN.";Eingabe); REM {Anzeige mit Bitte um Eingabe der richtigen Zahlen};
    FIELD Eingabe := KundenPIN; REM {Feld Eingabe die genannten Zahlen zuweisen};
    @If(
    @Text(
    @Middle(PIN;Zahl3;-1)+@Middle(PIN;Zahl4;-1))= @Text(Eingabe);
    @Prompt([Ok]; "PIN"; "ist Richtig");
    @Prompt([Ok];"PIN";"ist leider Falsch"))