0

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

null
    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Inhaber COX3D
    • COX3D
    • vor 5 Monaten
    • Gemeldet - anzeigen

    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

    • Inhaber COX3D
    • COX3D
    • vor 5 Monaten
    • Gemeldet - anzeigen

    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
        )
    end

    Grüße Tobias

Content aside

  • vor 5 MonatenZuletzt aktiv
  • 4Antworten
  • 1021Ansichten
  • 1 Folge bereits