per Button einen Datensatz erzeugen
Hallo zusammen.
Die Überschrift trift meine Frage nicht ganz. Ich erzeige bereits mit einem Button einen neuen Datensatz.
let myAusgaben := 25;
let myAuswertung := this;
let myBemerkung := "BESCHREIBUNGSTEXT";
let NR := (create Einkauf);
NR.(Name := 3);
NR.(Datum := today());
NR.(Ausgaben := myAusgaben);
NR.(Kategorie := 19);
NR.(Auswertung := myAuswertung);
NR.(Bemerkung := myBemerkung)
Ich möchte nun die 25 in myAusgabe aus einer Tabelle entnehmen.
Tabelle heißt "Verträge" dort gibt es ein Feld, sagen wir das heißt "Beitrag". Und es gibt ein Feld "Lieferant", das ist aber mit einer Entsprechenden Tabelle verknüft.
Mein Versuch sah so aus: let myAusgaben := 'Verträge'.Beitrag['Verträge'.Lieferant="VGW"];
Erzeugt aber leider nur die Fehlermeldung:
Expression does not return multiple values.
Mit einer where-Klausel habe ich auch schon rumgespielt. gibt aber auch Fehlermeldungen.
let myAusgaben := 'Verträge'.Beitrag where'Verträge'.Lieferant="VGW";
Fehlermeldung:
Unexpected keyword:where
Vielen Dank schon mal für einen Hinweis!
Viele Grüße
Alex
15 Antworten
-
so vieleicht wenn du nach 25 und VGW als bedingung suchst.
let myAusgaben:= (select 'Verträge' where Beitrag = 25 and 'Verträge'.Lieferant=“VGW'). dein zu übernehmendes feld
-
Hallo Michi,
danke für deine Rückmeldung.
Die 25 ist ja eigentlich das was ich aus der Tabelle Verträge haben will. Wenn dort Änderungen vorgenommen werden, soll die Button Funktion entsprechend auch angepasst sein.
viele Grüße
Alex
-
da must du deine bedingungen so erstellen das es nur eben dieser datensatz ist wer für die erstellung zuständig ist. wenn es mehr werden must du über first() oder last() gehen. oder soll dies nur auf den gerade geöffneten datensatz bei änderung bezogen sein? Was heist du änderst was sodas eine bedingung erfüllt ist und somit ein Datensatz in Einkäufe geschrieben werden soll?
-
Wenn der Beitrag unter Verträge von 25 auf 26 steigt, soll der Button einen Eintrag in Tabelle Einkauf von 26 machen und nicht statisch 25.
-
Du schreibst in den neuen datensatz feste werte. Wann geschieht das? hat jeder in Vertrag angelegte datensatz ein dazugehörigen mit deinen festen werten in einkauf? soll da jedesmal ein neuer datensatz bei änderung hinzukommen oder soll der bestehende in einkauf nur mit anderen werten gefüllt werden?
-
Es wird ein neuer Datensatz in Einkauf angelegt wenn der Button betätigt wird. Der Betrag wird aktuell aus der Tabelle Vertrag genommen. (Zur Zeit steht der wert händisch drin und muss so in Vertrag und in der Button Konfiguration geändert werden)
rückwirkend sollen keine Datensätze in Einkauf geändert werden.
Viele Grüße
Alex
-
...nur mal eine Idee:
let myAusgaben := 'Verträge'.Beitrag['Verträge'.Lieferant="VGW"] liefert (wenn überhaupt) ein Array zurück. Für den letzten Beitrag müßte es aber ungefähr so aussehen:
let myAusgaben := last('Verträge'[Lieferant=3].Beitrag)
Für "3" mußt Du die Datensatznummer des Lieferanten "VGW" einsetzen. Ich nehme an, daß es ein Verknüpfungsfeld ist, sonst bleibt "VGW". Gruß Mirko
-
Hallo Mirko,
ich glaube ich komme hier schon ein ganzes Stück weiter.
Leider stoße ich immer noch auf eine Problem.
Ich versuche über die Nr. ( oder ist das bei NINOX die ID) einen ganze bestimmten Datensatz aus Verträge zu nehmen. Sagen wir Datensatz nummer 31.Darin ist ein Feld Betrag. Diesen möchte ich im Butten nutzen. Leider ist der immer leer.
let myAusgaben := last(Verträge[Verträge = 31].Beitrag);
Eigentlich kann last ja weg, denn es gibt nur einen Datensatz Nr. 31
Was mach ich blos falsch....
Viele Grüße
Alex
-
...aha. Dann vielleicht so:
record('Verträge',31).Beitrag
Du sprichst dadurch das Feld Beitrag im Datensatz Nr. 31 in der Tabelle Verträge an.
-
Hallo Mirko, manchmal ist die Lösung so einfach. Man muss aber erst noch große "Gedanken"- Kreise drumherum drehen. Danke auch noch mal an Michi für den Input.
Ist alles sicherlich Basis-Wissen was ich noch nicht so drauf habe. Record kannte ich jetzt so noch gar nicht.
Einen angenehmen Tag und eine schönen Restwoche.
Viele Grüße -
Hallo Mirko,
ich hätte da doch noch mal eine Frage an dich
Wenn ich jetzt die Summer aus zwei ( drei ...) Verträgen haben möchte, wie muss dass dann aussehen?
So bekomme ich jedenfalls eine Fehlermeldung.
sum('Verträge',31+32).Beitrag
Danke dir und viele Grüße
Alex
-
Hallo Alexander. Entweder einzeln addieren, oder (etwas eleganter) das Ergebnis einer for-Schleife mit range (erster Wert inklusive, zweiter Wert exclusive) summieren. Oder for-Schleife mit select und Bedingungen. Gruß Mirko
1.
record('Verträge',31).Betrag + record('Verträge',32).Betrag + record('Verträge',33).Betrag
2.
sum(for i in range(31,34) do
record('Verträge',i).Betrag
end)
3.
sum(for i in (select 'Verträge')[number(Nr) >= 31 and number(Nr) <= 33] do
i.Betrag
end)
-
Perfekt! Danke dir. Damit kann ich doch schon mal was anfangen.
VG Alex
-
Wenn ich noch eine Frage stellen dürfte...?
Kann ich die Beschriftung des Buttons mit dem Ergebnis aus
record('Verträge',31).Betrag + record('Verträge',32).Betrag + record('Verträge',33).Betrag
füllen oder ist hier nur reiner Text erlaubt?VG Alex
-
Das geht nicht. Hier wäre eventuell ein neben dem Button liegendes Funktionsfeld hilfreich, welches Dir das Ergebnis anzeigt und demzufolge dynamisch ist.
Content aside
- vor 2 JahrenZuletzt aktiv
- 15Antworten
- 427Ansichten