0

Datensatz/Feld nach Datum suchen

Hallo Liebe Community,

für das Printlayout benutze ich eine Hilfstabelle die aus meiner Tabelle 'Messmittel' Daten abfragt und in die Hilfstabelle ('Messmittel Validierung' kopiert.

Zu der Tabelle 'Messmittel' gibt es die Untertabelle 'Kalibrierung Messmittel' bei der ein Zeitstempel für die Durchführung der Kalibrierung als Datenfeld enthalten ist 'Kalibrierung Messmittel'.'Datum + Uhrzeit'.

Wie kann ich jetzt per Datum steuern aus welchem Datensatz in 'Kalibrierung Messmittel' das Feld  'Datum + Uhrzeit' abgefragt wird wenn das Datum der Kalibrierung vor dem jetzigen Datum 'Prüfdatum' liegen soll?

Mein Skript gibt mir immer den Zeitstempel des ersten Datensatzes aus.

for i in NM do
        let myMA := record(Messmittel,number(i));
        let new := (create 'Messmittel Validierung');
        new.(Hersteller := myMA.Hersteller.Vollbezeichnung);
        new.(Typ := myMA.text(Typ));
        new.(Seriennummer := myMA.text(Seriennummer));
        new.('Letzte Kalibrierung' := myMA.format(date('Kalibrierung Messmittel'.'Datum + Uhrzeit'), "DD.MM.YYYY"));
        new.('Validierung RDG-E' := my)

Danke für Eure Hilfe

Stefan

3 Antworten

null
    • Stefan_Mann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Nachtrag: Es soll von den Datensätzen die älter als das Prüfdatum sind der jeweils letzte gesucht werden.

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Stefan, ich bin mir nicht sicher, ob ich deine Beschreibung richtig interpretiere (was ist "NM", was ist "my"?), aber falls doch, könnte man es so versuchen (Code für einen Button):

    let myDate := date(today());
    for i in select Messmittel do
        let lastDate := max(i.Kalibrierung[date(Zeitstempel) < myDate].date(Zeitstempel));
        let newVal := (create 'Messmittel Validierung');
        newVal.(
           Hersteller := i.Hersteller.Vollbezeichnung;
           Typ := i..text(Typ));
           Seriennummer := i.text(Seriennummer);
           'Letzte Kalibrierung' := format(lastDate, "DD.MM.YYYY");
           'Validierung RDG-E' := i
        )
    end
    

    Wobei myDate das Vergleichsdatum beinhalten würde. Und das Feld 'Datum + Uhrzeit' habe ich der Einfachheit halber in 'Zeitstempel' umbenannt.
     

      • Stefan_Mann
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro  Hallo planox, danke für die Hilfe, es funktioniert so noch nicht.

      NM ist die Variable die mir die Datensatznummern des Messmittels zurückgibt :

      let NM := numbers('Waage Auswahl'.'Auswahl Messmittel');
      

      D.h. die Datensätze in denen die Kalibrierung gesucht wird ist eingeschränkt über NM.

      Hier mal das vollständige Script:

      let my := this;
      let NM := numbers('Waage Auswahl'.'Auswahl Messmittel');
          for i in NM do
              let myMA := record(Messmittel,number(i));
              let new := (create 'Messmittel Validierung');
              new.(Hersteller := myMA.Hersteller.Vollbezeichnung);
              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.('Validierung RDG-E' := my)
          end
      end;
      

      Deinen Ansatz mit max das höchste Datum im "Zeitstempel" zu suchen verstehe ich, aber die Syntax stimmt wohl im Zusammenspiel mit der Schleife noch nicht.

      Hast Du noch eine Idee? Danke im Voraus!!

      Stefan