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
-
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.
-
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?
-
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.
-
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)
-
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
-
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
-
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.
Content aside
- vor 2 JahrenZuletzt aktiv
- 15Antworten
- 109Ansichten
-
3
Folge bereits