1

popupRecord suche nach bestimmtem Datensatz

Hi zusammen,

 

hab noch eine Frage zur popupRecord Funktion. 

Ich würde gerne aus einer anderen Tabelle einen Datensatz aufpoppen lassen der aber nicht die Festgelegte Nummer des Datensatzes ist sondern einen bestimmten Datensatz suchen. Habe 2 Felder: 'Name' und 'Nachname' und den Button 'Datensatz suchen'. Würde dann gerne den Datensatz einer Tabelle öffnen der mit den Feldern übereinstimmt. Oder geht das nicht weil Theoretisch die Datensätze doppelt angelegt sein könnten? Danke vorab für Eure Tipps

9 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Guten Morgen. Doch, das geht, aber es kann natürlich immer nur ein Datensatz geöffnet werden, und da nimmt man in der Regel den ersten gefundenen. Der Code für die Schaltfläche könnte so aussehen (TABELLE durch den tatsächlichen Namen der Tabelle erestzen):

     

    let SuchName := Name;
    let SuchVorname := Vorname;
    let myID := first(select TABELLE where Name = SuchName and Vorname = SuchVorname))
    if myID != null then
        popupRecord(myID)

    else
        alert("Ein Datensatz mit dem Namen " + Vorname + " " + Nachname + " wurde nicht gefunden!")

    end

    • Florian_Wisser
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Klappt! Sogar besser als gewünscht mit der Meldung!! Super, Vielen Dank! 

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    theorethisch kann man  bei Dubletten einen Dialog starten und dem Benutzer die Auswahl geben, was er öffnen möchte. Dafür muss man ein eindeutiges Datenfeld festlegen z.B. Geburtstag. Dann wäre die Formel für einen Button:

    ---

    let SuchName := Name;
    let SuchVorname := Vorname;
    if cnt(select TABELLE where Name = SuchName and Vorname = SuchVorname) > 1 then
    let myD := dialog("Mehrere Datensätze gefunden", "Es wurden mehrere Personen gefunden", (select TABELLE)[Name = SuchName and Vorname = SuchVorname].text(Geburtsdatum));
    popupRecord(first((select TABELLE)[Name = SuchName and Vorname = SuchVorname and text(Geburtsdatum) = myD]))
    else
    if cnt(select TABELLE where Name = SuchName and Vorname = SuchVorname) = 1 then
    popupRecord(first(select TABELLE where Name = SuchName and Vorname = SuchVorname))
    else
    alert("Ein Datensatz mit dem Namen " + Vorname + " " + Name + " wurde nicht gefunden!")
    end
    end

    ---

    So werden bei mehreren gefundenen Personen auch mehrere Buttons mit Geburtsdatums angezeigt.

    Die Anzeige kann man natürlich aufhübsche, muss man aber bedenken, dass die Buttons im Dialog nicht besonders groß sind.

     

    Leo

     

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Leos Variante ist quasi die Luxus-Version! ;)

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Stimmt,

    bei Namen ist es vielleicht nicht so spannend. Ich habe bei uns eine "Artikelschnelleingabe". Die Artikel sind  etwa so aufgebaut : XXXX-YYYY. Die Ersten 4 Zahlen sind eigentliche Artikel und die Letzten - die Gebindevarianten. Der Benutzer tippt  die 4 Zahlen und klick auf OK. Wenn es  nur eine Gebindevariante gibt, wird der Artikel in die Bestellung übernommen, bei mehreren erscheint der Dialog. Sehr praktisch.

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ja, mit Luxus meinte ich auch nicht überflüssigen Schnickschnack, sondern eine gute, absolut sinnvolle Zusatzfunktion. Auf die Idee, das zusätzliche Suchriterium ggf. direkt in den Dialog einzubinden, wäre ich so nicht gekommen. Man lernt halt jeden Tag dazu.

    • Hälg Group
    • Marcel_Wyss
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen

    Der Code funktioniert super 👍

    Kann ich eine solche Abfrage auch über mehrere Tabellen ausführen?

    à la: select TABELLE and TABELLE2 and TABELLE3...

    if cnt(select TABELLE and TABELLE2 and TABELLE3 where Name = SuchName and Vorname = SuchVorname) > 1 then (aber so klappt es nicht :) 

    Oder wie kann ich das sonst lösen wenn ich mit einer Abfrage mehrere Tabellen durchsuchen möchte? 

    Danke & LG

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Marcel,

     

    AFAIK nein, nur so:

     

    if cnt(select TABELLE where Name = SuchName and Vorname = SuchVorname) + cnt(select TABELLE2 where Name = SuchName and Vorname = SuchVorname) + cnt(select TABELLE3 where Name = SuchName and Vorname = SuchVorname) > 1 then

     

    lg, Torsten

    • Hälg Group
    • Marcel_Wyss
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Top, danke! LG