0

Kurzzeitig mehrere Verknüpfungen zu Untertabelle per Script

Hallo liebe Comunity,

ich benötige für die Erstellung eines Reports kurzzeitig mehrere Verknüpfungen zu einer Tabelle die für diesen Zweck als Untertabelle 'Messungen Messmittel' arrangiert ist.

Ich führe bei Kunden Messungen durch und dokumentiere in meiner Tabelle 'Messungen' die Ergebnisse.

Dafür verwende ich Messmittel die in der Tabelle 'Messmittel' verwaltet werden. Für jedes Messmittel gibt es eine Datei 'Kalibrierprotokoll' die ich als Anlage für die Reports 'Messungen' benötige.

Die Kalibrierprotokolle möchte ich in jeder Messung verwenden können, deshalb fällt eine dauerhafte Verknüpfung aus.

Daher wähle ich die 'Messmittel' die ich für die Messung verwende über ein dynamisches Auswahlfeld 'Auswahl Messmittel' aus, um die Datensatznummern die benötige festzulegen.

Über welchen Befehl kann ich denn jetzt in der Rückverknüpfung die passenden Datensätze in 'Messmittel' verknüpfen?

Eine Neuanlage mit den Inhalten der selectierten Datensätze über create funktioniert ohne Probleme:

let my := this;
let MM := numbers('Auswahl Messmittel');
do as server
    for i in MM do
        let myMA := record(Messmittel,number(i));
        let new := (create 'Messungen Messmittel');
        new.(Hersteller := myMA.Hersteller);
        new.(Typ := myMA.text(Typ));
        new.(Seriennummer := myMA.text(Seriennummer));
        new.('Letzte Kalibrierung' := myMA.format(date(last('Kalibrierung Messmittel'.'Datum + Uhrzeit')), "DD.MM.YYYY"));
        new.('Messungen' := my)
    end
end;

 Aber ich will ja nur die vorhanden Datensätze verknüpfen und nach dem Print wieder entknüpfen.

Das hier klappt nicht:

let my := this;
let MMV := 'Messungen Messmittel';
let MM := numbers('Auswahl Messmittel');
do as server
    for i in MM do
        let myMA := record(Messmittel,number(i));
        MMV.('Messungen Messmittel' := myMA.my)
    end
end

Danke im Voraus für die Hilfe!

 

Stefan

4 Antworten

null
    • Stefan_Mann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hab schon einen Fehler gefunden. Die Schleife muss natürlich in der Untertabelle 'Messungen Messmittel' laufen.

    Wenn ich nicht einschränke werden mir schon mal alle Datensätze verknüpft:

    do as server
        for i in select Messmittel do
            let my := this;
            i.('Messungen Messmittel' := my)
        end
    end
    

    Wenn ich aber versuche auf die ausgewählten Datensatznummern zu beschränken passiert nichts:

    let NM := numbers('thermologger Auswahl'.'Auswahl Messmittel');
    do as server
        for i in select Messmittel where Nr = NM do
            let my := this;
            i.('Validierung RDG-E16' := my)
        end
    end
    

    Hat jemand eine Idee?

    • Stefan_Mann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Entschuldigung, falscher Verweis. Korrekt:

    let NM := numbers('thermologger Auswahl'.'Auswahl Messmittel');
    do as server
        for i in select Messmittel where Nr = NM do
            let my := this;
            i.('Messungen Messmittel' := my)
        end
    end
    
    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Stefan, ehrlich gesagt blicke ich angesichts der verschiedenen Code-Fragmente und Tabellen nicht so recht durch, was da nun genau auf welche Weise womit verknüpft ist bzw. werden soll. Grundsätzlich gilt: Eine Verknüpfung erfolgt immer auf der N-Seite. Unter diese Prämisse wage ich mal einen Schuss ins Blaue:

    let my := this
    let NM := numbers('thermologger Auswahl'.'Auswahl Messmittel');
    for i in NM do
       record('Messmittel', number(i)).'Messungen Messmittel' := my
    end
    

    Falls das nicht weiterhilft, solltest du vielleicht noch mal das Datenmodell und die Aufgabenstellung etwas genauer beschreiben. Oder gleich die DB mit Demodaten zur Verfügung stellen.
     

    • Stefan_Mann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo planox,

    ich hatte zwischenzeitlich so aufgelöst:

    let my := this;
    let NM := numbers('thermologger Auswahl'.'Auswahl Messmitel');
    do as server
        for i in NM do
            let myMA := record('Messmittel',number(i));
            myMA.('Messungen Messmittel' := my)
        end
    end
    

    Ist dann letztlich wohl diesele Lösung geworden mit Umweg über die Variable.

    Vielen Dank noch für die Mühe!