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
-
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
-
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
-
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
-
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.
-
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.
-
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
-
Hallo Jörg,
das zweite if prüft, ob ein zum Suchfeld passender Datensatz überhaupt vorhanden ist, hat also durchaus seine Berechtigung.
lg, Torsten
-
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
-
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)))
-
Habs hinbekommen. Vielen Dank.
Content aside
- vor 5 JahrenZuletzt aktiv
- 10Antworten
- 3576Ansichten