Tabellen automatisiert verknüpfen
ich habe zwei Tabellen:
1. RECHNUNG mit diveren Feldern u.a. dem Feld JAHR, das das Jahr der ausgestellen Rechnung angibt (Berechnungsfeld vom Type year('Datum Rechnung') und
2. AUSWERTUNG in der ich ein Dashboard aufbaue. Daher hat sie nur wenige Felder u.a. das Feld JAHR (Datenfeld vom Typ Zahl) mit den aktuellen Einträgen 2018, 2019 und 2020
Ich möchte nun
1. mit einer Befehlsschaltfläche alle bestehenden Rechnungen mit den gleichen Jahren in der Tabelle AUSWERTUNGEN verknüpfen
2. Beim Anlegen eines neuen Datensatzes in RECHNUNG diesen automatisch mit dem Datensatz in AUSWERTUNG des entsprechenden Jahres verknüpfen
Probiert habe ich es entspreched eines Hilfe Beitrags vom letzten Jahr damit in RECHNUNG ein Verknüpfungsfeld AUSWERTUNGSJAHR (Datenfeld vom Typ Zahl) anzulegen und diese mit Hilfe den folgenden Code zu verknüpfen:
for ii in select Rechnung do
let JR := ii.Jahr;
let AJ := first((select Auswertung)[Jahr = JR]);
ii.(Auswertungsjahr := AJ)
end
Was ist der Denkfehler? Wie muss der Code in beiden Anwendungsfällen richtig heißen?
4 Antworten
-
Hallo ASi,
ich für meinen Teil denke, das Dein Ansatz an sich unter Umständen zu kompliziert ist. Warum die Rechnungen mit der Auswertungstabelle verknüpfen? Ich würde in der Tabelle AUSWERTUNG das Gestaltungselement "Ansicht" verwenden und dort folgenden Code hinterlegen:
let myJahr := JAHR;
select RECHNUNG where JAHR = myJahr
lg, Torsten
-
Hallo ASi,
Hallo Torsten,Grundsätzlich würde ich auch, wie Torsten vorschlägt, über eine Ansicht arbeiten. Es sei den, ich möchte später auch die Auswertungen ausdrucken. Deinen Code würde ich dann so abändern:
---
for i in select Auswertung do
select Rechnung [Jahr=i.Auswertungsjahr].(Auswertung:=i)
end
---
Der Skript für umgekerte Verknüpfung würde ich bei dem Feld Rechnungsdatum der Tabelle Rechnung platzieren:
---let myY:=year(Rechnungsdatum);
if cnt(select Auswertungen[Auswertungsjahr=myY])=0 then
(let newA:=create Auswertungen;
newA.Auswertungsjahr:=myY;
Auswertungen:=newA)
else
(let myA:=first(select Auswertungen[Auswertungsjahr=myY]);
Auswertungen:=myA)
end---
Leo
-
Hallo Leo,
ich stehe jetzt vor einem ähnlichen Problem:
Ich möchte aus Auftragsbestätigungen der Kunden, denen ein Vertriebspartner zugeordnet ist, die Abrechnung für die Vertriebspartner erstellen. In der Auswertung der Ansicht funktioniert das schon, auch die Summen des Abrechnungszeitraumes kann ich berechnen. Der script für die Ansicht in der Tabelle ‚Abrechnung Vertrieb’ sieht so aus:
let vp := 'Vertriebspartner Abrechnung'.'Kurzname Vertrieb';
let start := 'Zeitraum Beginn';
let ende := 'Zeitraum Ende';
do as server
(select 'Auftragsbestätigungen')[Vertriebspartner = vp and Auftragsdatum > start and Auftragsdatum < ende]
end(ähnlich bei Summe). Für die Druckansicht benötige ich aber die tatsächliche Abrechnungstabelle. Ich weiß, dass es richtiger wäre über einen Untertabelle z.B. ‚Abrechnung Vertrieb‘ die Ansicht zu generieren und die Tabelle dann für die Ansicht zu nutzen. Wie könnte ich das machen?
Ich hab da schon viel probiert, komme aber nicht zum richtigen Ansatz. Vermutlich mit einer for in Schleife in einem Button?
Für die Hilfe schon mal herzlichen Dank
-
Hallo,
ich konnte das Problem selbst lösen. Das Video „Auswertungen“ hat mir dabei geholfen. Über einen Button kann ich somit eine Auswertungstabelle erzeugen, die entsprechend zusammenfasst und filtert. Wen es interessiert - hier der code dafür:
let myID := this;
delete myID.'Auswahl Vertrieb';
let vp := 'Vertriebspartner Abrechnung'.'Kurzname Vertrieb';
let Anf := 'Zeitraum Beginn';
let Ende := 'Zeitraum Ende';
for a in select 'Auftragsbestätigungen' where contains(Vertriebspartner, vp) and Auftragsdatum > Anf and Auftragsdatum < Ende do
let cre := (create 'Auswahl Vertrieb');
cre.(
'Abrechnung Vertrieb' := myID;
'Auftragsbestätigungen' := a
)
endGrüße Tobias
Content aside
- vor 5 MonatenZuletzt aktiv
- 4Antworten
- 1021Ansichten
-
1
Folge bereits