0

Mit DMFA Auswahlfeld werte wählen

Grüßt euch,

bin am verzweifeln. Wie kann ich denn bei nicht Auswahl im DMFA das JA / Nein auf false setzen?? 

So klappt es glaube ich mit auf true setzen bei Auswahl.

for i in numbers('Mahnstop für') do
    if record(Rechnungsstellung,i).number(Nr) > 0 then
        let id := record(Rechnungsstellung,i).Nr;
        let suchen := (select Rechnungsstellung);
        suchen[Nr = id].(Mahnstop := true)
    end
end;

15 Antworten

null
    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Michi,

    du kannst die relevanten Records aus Rechnungsstellung durch iterieren und überprüfen, ob sie in numbers('Mahnstop für') enthalten sind und abhängig davon true or false setzen.

    Oder, wie ich es auch öfter mache: Zuerst alle Records auf false setzen und danach die ausgewählten wieder auf true.

    Deinen Code kannst du etwas reduzieren. Die Suche ist nicht notwendig, da du mir record(Rechnungsstellunf, i) ja ohnehin schon den gesuchten Record bekommst und gleich auf true setzen kannst. i entspricht außerdem bereits number(Nr) des Records.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph so geht es nicht 🙁

      das script sitzt im Trigger nach Änderung im Dmulti

      for i in numbers('Mahnstop für') do
          let tabelle := (select Rechnungsstellung);
          let id := record(Rechnungsstellung,i).Nr;
          tabelle[Nr = id].(Mahnstop := true);
          let me := this;
          (select Rechnungsstellung where Rechnungsstatus = 4 and Kunde.text('Kunden-Nr.') = me.text('Kunden-Nr.') and Nr != id).(Mahnstop := false)
      end
      

      Auf true setzen klappt, zurück auf false geht nicht. Alles auf false setzen geht auch nicht, da ja die schon definierten Datensätze nicht verloren gehen sollen. 'Mahnstop für' wird über einen Butten befüllt.

      let me := this;
      let auswahl := (select Rechnungsstellung where Mahnstop = true).number(Nr);
      'Mahnstop für' := auswahl
      
    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ok, dann hab ich deinen Struktur wohl falsch verstanden. 'Mahnstop für' ist aber das DMFA? Wie meinst du das mit befüllt durch Button? Kanns du die Tabellen und Verknüpfungen kurz beschreiben?

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph 'Mahnstop für' ist das Dmulti

      Das ganze ist in der Tabelle Kunden welche mit Rechnungstellung verknüpft ist.

      Mahnstop ist ein Ja/ Nein in der Tabelle Rechnungsstellung.

      Über eine Button Aktualisieren hole ich mir die auf true gesetzten Nr der Datensätze um sie an das Dmulti zu übergeben.

    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Dem Kunden hat also eine Rückverknüpfung zu Rechnungsstellung, welche 'Mahnstop' true oder false haben.

    Die dynamische Auswahl in 'Mahnstop für' ist also

    let me := this;
    me.Rechnungsstellungen
    

    Lieg ich hier noch immer falsch? :)

    Trigger bei Änderung sollte aus meiner Sicht so aussehen:

    let me := this;
    let selectionList := "#" + join(numbers(me.'Mahnstop für', "#") + "#";
    for r in me.Rechnungsstellungen do
        if contains(selectionList, "#" + r.number(Nr) + "#") then
            r.Mahnstop := true
        else
            r.Mahnstop := false
        end
    end
    

    Die "#" sind zur sicheren Abfrage Number enthalten in Number Array. 

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph Ja

      aber das will er auch nicht. Kann doch nicht so schwer sein was ab zu wählen.

    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hab mal die Vorlage Rechnungen genommen und das reingebaut. Ist bei Kunden / Kartenreiter Dmulti

    wie kann ich das Ja / Nein feld Mahnstop in Rechnungstellung je nach auswahl in dem Dmulti Mahnstop für auf true oder false setzen. (true geht)

    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hatte da einen Fehler in der Aufbereitung selectionList. Hab das jetzt in deiner Bsp.-Datenbank ausprobiert und eingebaut. Angepasste DB im Anhang. So sollte es funktionieren.

    let me := this;
    let selectionList := "#" + replace(concat(numbers(Mahnstop)), ", ", "#") + "#";
    for r in me.Rechnungen do
        if contains(selectionList, "#" + r.number(Nr) + "#") then
            r.(Mahnstop := true)
        else
            r.(Mahnstop := false)
        end
    end
    
      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph du bist nen schatz. Danke.

      Kannst mir das eventuell erklären, damit ich das auch verstehe

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ein herzliches hallo zusammen,

    sorry, dass ich mich hier einklinke, aber ich habe eine zwar nicht ganz ähnliche Situation, jedoch kann ich diese Lösung sehr gut bei mir einsetzen. Vielen Dank dafür, das ist ganz große Klasse.

    Nun kommen bei mir doch einige Fragen auf, vllt hat ja jemand eine Idee, wie ich das gelöst bekomme. Ich komme einfach nicht von alleine darauf. Ich habe hierzu eine kleine BeispielDB  angefügt.

    1. Wie bekomme ich es hin, dass in Tabelle Kunde B im Formelfeld die Summe angezeigt wird, je nachdem welche Auswahl ich im DMAF anklicke. Bisher habe ich mit

    let me := this;
    sum('Kunden C2'.Zahl)

    nur die Gesamtsumme aus der Tabelle.

    2. Desweiteren brauche ich ebefalls die Summe, je nachdem welche Auswahl im DMAF steht und ob ES/DS (ES = 1, DS = 2). ZB wenn ich im ersten Datensatz der Tabelle Kunde B Auswahl 1 und 2 anklicke, dann sollte das Ergebnis 3 sein.

    3. Wie kann ich im Drucklayout die Auswahl des DMAF anzeigen lassen? Wäre es möglich, dass die Auswahl nebeneinander quasi als Auflistung angezeigt wird?  Wenn möglich auch noch in FettSchrift (eventuell mit html)? Ich habe es soweit über ein einfaches Auswahlfeld hinbekommen, Filter und Auflisten (ist dann aber nicht in FettSchrift), aber eigentlich sollte es idealerweise über das DMAF funktionieren.

    EDIT: Ich sehe gerade, dass es der BeispielDB Rschnungen(1) ein Formelfeld mit selectionList gibt. Könnte man das irgendwie mit einbinden?

    Für jegliche Hilfe bin ich seeehr dankbar. 🙂

     

    Gruß Kruna

      • Fox Concepts
      • Christoph.2
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Deine Fragen beziehen sich auf diese Frage, richtig?

      https://forum.ninox.de/t/p8hs6fj/hilfe-bei-daf-feld-zahl-summieren

      Würde vorschlagen, dass wir die Lösungsmöglichkeiten dort weiterdiskutieren.

      Kannst du die Details, die du hier beschrieben hast dort rüber kopieren.

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph ja, sehr gerne! Vielen Dank!

      Entschuldigung, wenn ich hier für Verwirrung gesorgt habe. Seit dem Post gestern, bin ich heute morgen auf diesen Post gestossen und habe dementsprechend auch die testDB verändert.

      Ich gehe dann mal 'rüber' :-)

       

      Gruß Kruna

      • Fox Concepts
      • Christoph.2
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Kein Problem, alles gut.

    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Michi,

    Ist im Grunde so, wie ich es ganz oben beschrieben habe.

    Ich iteriere durch alle dem Kunden zugeordneten Rechnungen und überprüfe, ob die ID im Array der DMFA Selektion enthalten ist. Wenn ja, dann true, wenn Nein ist es abgewählt und false.

    Leider ist die contains() Funktion in Ninox auf Text beschränkt, daher die aufwändige Formatierung. Gebe es eine Funktion die überprüft, ob ein Element in einem Array enthalten ist, würde das ganze so aussehen: 

    containsArray(numbers(DMFA), r.number(Nr))

    Der Hash dient beim Text-Konkatenieren als eindeutiges Trennsymbol. Würde ich das nicht machen würde die Record Nr. 1 als enthalten in 11, oder 14,... anschlagen:

    contains("2,11,14", "1") --> true
    contains("#2#11#14#", "#1#") --> false

    Hoffe das hilft dir weiter. Wenn du noch Fragen hast können wir auch gern mal einen kurzen Zoom Call aufsetzen.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph Danke dir