0

Suchergebnis in Formular laden

Hallo,

 

ich habe ein Formular, in dem Kundendaten erfasst werden. Ich möchte gerne in dem Formular eine Art Suchfeld integrieren, wo ich alle Kundendatensätze durchsuchen kann und einen bestimmten Datensatz durch anklicken zur weiteren Bearbeitung in das Formular laden kann.

Ich habe eine Verknüpfung mit der Tabelle selbst integriert. Damit habe ich zumindest schon mal die Suchfunktion. 

Wie kann ich nun Daten eines bestimmten Datensatz in das Formular laden?

Danke vorab.

10 Antworten

null
    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    relativ einfach geht das, wenn Du in einem bestimmten Feld suchen willst. Füge eine Ansicht mit z.B. der Funktion

     

    let mySuche := Suchfeld;
    select Tabelle where contains(lower(Zielfeld), lower(mySuche))

     

    "Tabelle", "Suchfeld" und "Zielfeld" musst Du natürlich anpassen.

     

    lg, Torsten

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

    Hallo nochmal,

     

    okay, ich habe nicht zu Ende gelesen, sorry. Mein Vorpost enthält also lediglich eine alternative "Suchfunktion".

     

    Du hast also in Deiner Tabelle 'Kunden' eine Verknüpfung auf sich selbst, in der Du einen Datensatz eines anderen Kunden verknüpfst. Aus diesem Datensatz möchtest Du bestimmte Felder in den aktuellen übernehmen?

    Nehmen wir an, Dein Verknüpfung hast Du "Vorlage" genannt, dann bewirkt eine Befehlsschaltfläche mit folgender Funktion, dass die Inhalte von 'Feld1', 'Feld2' usw. übernommen werden.

     

    let my := Vorlage;
    'Feld1' := my.'Feld1';
    'Feld2' := my.'Feld2';
    usw.

     

    War es das, was Du gesucht hast?

     

    lg, Torsten

    • Skydive_Leipzig_Manife
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    nicht so ganz, lag aber an meiner unvollständigen Beschreibung. Trotzdem schon mal meinen Dank.

    Mit den Pfeiltasten oben rechts über jedem Formular kann man ja zwischen dem vorherigen und dem nachfolgenden Datensatz im Formular "springen".

    Was ich suche ist eine Funktion, dass ich in einer Auswahl per Schlüsselbegriff nach einem Datensatz suchen kann, diesen anklicke und das Formular dann zu diesem Datensatz springt.

    Wenn ich halt bei Datensatz "Müller" bin (ID 1) und zu Datensatz "Schulze" (ID 598) möchte, wäre es halt schön wenn ich im Formular nur nach "Schulze" suche, draufklicke und im Datensatz bin. Die Tabelle kann so etwas ähnlich bereits, ich weiß. Da  geht es aber nur, wenn ich einen statischen Filter im Kopf setze und das finde ich unkomfortabel.

    VG

    Ralf

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

    Man könnte ein einfaches Textfeld namens "Suchfeld" (o. ä.) im Formular platzieren und dort als Trigger "Nach Änderung" folgenden Code hinterlegen:

    if Suchfeld then
        let Suchtext := lower(Suchfeld);
        let Suchsatz := first(select TABELLE where contains(lower(DATENFELD), Suchtext));
        if Suchsatz != null then
            Suchfeld := null;
            openRecord(Suchsatz)
        else
            alert("Suchtext " + Suchfeld + " nicht gefunden!")
        end
    end

    Ist aber eine sehr simple Lösung. Wenn es mehrere Schulzes gibt, wird halt immer nur der erste angesprungen. Und das alert() funktioniert als Trigger auch nicht auf allen Plattformen.

    • Skydive_Leipzig_Manife
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Vielen Dank. 

    Den Code habe ich verstanden und Test ergaben auch, dass "Suchsatz" den richtigen Identifier eines gesuchten Datensatz ergibt. Dennoch reagiert openRecord nicht und springt nicht zum gesuchten Datensatz. Ich versteh es nicht.

    • Team Lead Customer Service
    • joerg
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Ralf,

    wenn ich das richtig sehe, wurde alles in eine If-Schleife gepackt (bzw. es gibt ein if zuviel) und wenn das erste If ein "ja" ergibt werden die nachfolgenden (else-) Befehle nicht mehr ausgeführt.

    Versuche doch bitte einmal damit: 

    if Suchfeld then
        let Suchtext := lower(Suchfeld);
        let Suchsatz := first(select TABELLE where contains(lower(DATENFELD), Suchtext));
        Suchfeld := null;
        openRecord(Suchsatz)
        else
            alert("Suchtext " + Suchfeld + " nicht gefunden!")
        end
    end

     

    Gruß, Jörg

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

    Hallo Jörg,

     

    das zweite if prüft, ob ein zum Suchfeld passender Datensatz überhaupt vorhanden ist, hat also durchaus seine Berechtigung.

     

    lg, Torsten

    • Support
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, 

    du hast recht, ich hatte fälschlicherweise noch einmal Suchfeld statt Suchsatz gelesen...

    Der Einfachheit halber könnte man dort dann auch nur:

     

    ...;

    if Suchsatz then... 

    schreiben, aber das nur am Rande.

     

    Hast du es schon einmal mit:

     

    popupRecord(recordId) 

    z. B.:

      popupRecord(record(Invoices, 1))

    versucht?

    Gruß, Jörg

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

    Ich habe den Verdacht, dass die Variable 'Suchsatz' ein falsches Format hat, mit dem openRecord() nichts anfangen kann. Das oben stehende Ausgangs-Script funktioniert zwar, aber möglicherweise wurde der Code irgendwie abgeändert. Vielleicht mal so versuchen:

    openRecord(record(TABELLE, number(Suchsatz)))

    • Skydive_Leipzig_Manife
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Habs hinbekommen. Vielen Dank.

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 10Antworten
  • 3576Ansichten