1

weitere where-Bedingung

Hallo zusammen,

 

ich habe nachfolgendes Skript, welches auch wunderbar funktioniert:

 

let my := this;
let myADR := text(Adressbuch.'Adress-Nr.:');
first((select Adressbuch where 'Adress-Nr.:' = myADR).Bankverbindung.IBAN)

 

Dieses Skript gibt die Korrekte Bankverbindung für einen Vertrag, der mit einer Adressverwaltung verknüpft ist aus. Es spielt auch keine Rolle, wie viele Bankverbindungen hinterlegt sind, die erste wird immer genommen!

 

Wenn ich dieses Verhalten ändern möchte und nicht die erste Bankverbindung nehmen will, sondern eine aktive, die mit einer Checkbox Aktive = 1 ausgeprägt ist, funktioniert mein Skript nicht mehr. Hat einer von Euch eine Idee?

 

Gruß

Michael

7 Antworten

null
    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Die Abfrage muss erweitert werden.
    Je nachdem wo sich die Checkbox befindet muss es angepasst werden.
    Befindet sich die Checkbox neben der IBAN im gleichen Record, lautet die Bedingung:

    let my := this;
    let myADR := text(Adressbuch.'Adress-Nr.:');
    first((select Adressbuchm['Adress-Nr.:' = myADR and .Bankverbindung.'Checkbox Aktive' = 1]).Bankverbindung.IBAN)

    Wenn 'Checkbox Aktive' sich woanders befindet den entsprechenden Weg dorthin anpassen.

    Damit bekommst du wieder nur aufgrund von first() den ersten Record, der dem Kriterium entspricht. Sollten mehrere Records vorhanden sein, die dem Suchkriterium entsprechen, muss first() entfernt werden und das zurückgegebene Array mit item() ausgewertet werden.

    • Michael.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ich habe es ausprobiert aber es funktioniert nicht:

     

    let my := this;
    let myADR := text(Adressbuch.'Adress-Nr.:');
    first((select Adressbuch where 'Adress-Nr.:' = myADR and text(Bankverbindung.Aktiv) = "Ja").Bankverbindung.IBAN)

     

    die zweite Bedingung wird nicht berücksichtigt (es wird nach wie vor die erste Bankverbindung ausgegeben, die inaktiv ist), nehme ich first vor dem select weg, bekomme ich als ergebnis beide Bankverbindungen.

     

    Woran kann das liegen?

     

    Michael

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Dann probieren wir es mal anders, wenn ich den Aufbau und die Verknüpfungen deiner Tabellen richtig interpretiere.

    let my := this;
    let myADR := text(Adressbuch.'Adress-Nr.:');
    (select Bankverbindung where Adressbuch.'Adress-Nr.:' = myADR and Aktiv).IBAN

    Wobei ich nicht verstehe, wozu das 'let my:=this' im Script vorhanden ist, wenn es nicht genutzt wird.

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG Oder du kannst auch mal folgendes als Script ausprobieren:

      Adressbuch.Bankverbindung[Aktiv].IBAN

      Wie gesagt, ich rate nur deinen Tabellenaufbau und die Verknüpfungen.

    • Michael.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    super Danke, hat nun funktioniert. Du sagtest let my := this; wird nicht benutzt. Ich bin kein Entwickler, sondern mache das als Hobby. Wozu wird let my := this; benutztP

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michael "let my := this" bedeutet, dass die Kennung des aktuellen Datensatzes (Schlüsselwort "this") in eine Variable namens "my" übernommen wird. Die Zeile steht oft am Anfang eines Skriptes, hat aber keinen Selbstzweck und ist auch kein Standard oder so. Man braucht sie nur, wenn man im weiteren Verlauf des Skriptes wieder auf Informationen dieses Datensatzes zugreifen will, bspw. mit "my.Feldname". Da die Variable "my" in deinem Skript dann aber gar nicht genutzt wird, kann man sich die Zuweisung auch sparen. 

    • Michael.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    vielem Dank

Content aside

  • Status Answered
  • 1 „Gefällt mir“ Klicks
  • vor 1 JahrZuletzt aktiv
  • 7Antworten
  • 93Ansichten
  • 4 Folge bereits