automatisches verbinden zweier Datensätze
Ich bin ein Neuling und habe gleich noch eine Frage:
Ich habe das Formular für SEPA - Mandat - Eingaben.
Desweiteren habe ich eine Tabelle mit Kreditinstituten (Name, BIC und Bankleitzahl).
Wenn jetzt ein Sepamandat angelegt werden soll, möchte ich die Iban eingeben und daraufhin automatisch die passende Bank verknüpfen.
Ich habe mir vorgestellt, dass ich nach Änderung des IBAN Feldes ein Skript ausführen lasse. Es müsste von der IBAN Zeichen 5-13 verwendet werden. Es wird wohl irgendwie "substring(IBAN, 5, 13)" funktionieren? Nur wie sieht der Rest dazu aus? Muss ich die Tabellen vorher bereits verbinden, oder geht das auch ohne?
Ich bin wirklich Anfänger und hoffe auf Hilfe.
6 Antworten
-
Leider klappt es noch nicht. Hier mal mein bisheriger Versuch:
Die Haupttabelle heißt SEPA
Die Untertabelle heißt Kreditinstitute
Das Feld in der Haupttabelle, um den Datensatz der Untertabelle zu finden und zu verknüpfen, heißt Kreditinstitut.
Ich habe aus einem anderen Hilfethema folgenden Codeschnipsel entnommen und angepasst. Das genaue Feld am Ende habe ich ausgelassen, da ich den ganzen Datensatz wollte.let me := this;
me.(Kreditinstitut := first(select Kreditinstitute where Bankleitzahl = me.substring(IBAN, 5, 12))) -
Hallo Raphael,
für diese Formel benötigst du einen Button, oder fügst sie in das Funktionsfeld zum Einfügen der Leerzeichen bei "Beim Anklicken" ein. Achte darauf, das "substring" auf das IBAN-Feld ohne Leerzeichen hinweist. Dann hat Deine Formel noch einen kleinen Fehler. Es heißt: substring(IBAN,4,12), da die erste Ziffer exklusiv, also davor liegt.
Mir ist noch eingefallen, ob du vielleicht dein IBAN Eingabefeld mit Leerzeichen führst, es also so eintippst, wie Du es sehen willst und dann im Hintergrund ein Funktionsfeld IBAN zu weiteren Benutzung ohne Lehrzeichen hast. Der Code zur Tilgung der Leerfelder dafür wäre:
replace(IBANEINGABEFELD," ","")
Mirko
-
Kleine Korrektur: Der zweite Parameter beim substr() gibt die Länge des zu extrahierenden Strings an. Also: substr(IBAN, 4, 9).
-
@Copytexter: danke, das habe ich mir dann falsch eingeprägt und nun gelernt.
-
Kommt wahrscheinlich von dem slice() im anderen Thread. ;)
Ich habe hier aber auch noch mal genauer hingeschaut. Die BLZ besteht aus 8 Zeichen und steht an den Positionen 5 bis 12 der IBAN.
Was die automatische Verknüpfung angeht: Ist 'Kreditinstitute' tatsächlich eine Untertabelle(!) von 'SEPA'? Das würde m. E. eigentlich keinen Sinn ergeben, denn das wäre eine 1:N-Verknüpfung. Wir brauchen aber eine N:1-Verbindung. Dazu in die Tabelle 'SEPA' gehen, im Adminstrator-Modus unten in der Werkzeugleiste auf "Verknüpfung" klicken (nicht "Rückverknüpfung") und 'Kreditinstitute' auswählen. Damit ist die N:1-Verknüpfung der Tabellen eingerichtet.
Um nun den einzelnen SEPA-Datensatz automatisch mit dem betreffenden Kreditinstitut zu verknüpfen, würde ich im Feld 'IBAN' einen Trigger "Nach Änderung ..." mit folgendem Code einrichten:
let myBLZ := substr(replace(IBAN, " ", ""), 4, 8);
Kreditinstitut := first(select Kreditinstitute where Bankleitzahl = myBLZ)
Damit müsste bei jeder Eingabe bzw. Änderung einer gültigen IBAN (mit oder ohne Leerzeichen) automatisch das dazugehötige Kreditinstitut gesucht und verknüpft werden.
-
Ihr seid echt der Hammer, herzlichen Dank! Ich war am verweifeln. Diese Art von Funktionen werde ich noch öfter benötigen. Es funktioniert.
Content aside
- vor 4 JahrenZuletzt aktiv
- 6Antworten
- 585Ansichten