0

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

null
    • Raphael.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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)))

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

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

    Kleine Korrektur: Der zweite Parameter beim substr() gibt die Länge des zu extrahierenden Strings an. Also: substr(IBAN, 4, 9).

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    @Copytexter: danke, das habe ich mir dann falsch eingeprägt und nun gelernt. 

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

    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.

    • Raphael.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ihr seid echt der Hammer, herzlichen Dank! Ich war am verweifeln. Diese Art von Funktionen werde ich noch öfter benötigen. Es funktioniert.