0

Eintrag in einer anderen Tabelle in einen vorhandenen Datensatz

Hallo Forum,

Ich möchte gern über einen "Button" ein "aktuelles Datum plus vorgegebener Zahl(feld zum eintragen)"  in einer anderen Tabelle in einen vorhandenen Datensatz speichern, wo es schon ein Datumsfeld gibt.

aber ich kriege es nur hin, das ich dort ein neuen eintrag erstelle mit dem datum.

leider sind mir die logische verständnisse und zusammenhänge noch nicht ganz klar, wie ich das realisieren kann.

ich hoffe ihr könnt mir nochmal weiterhelfen. eventuell auch mit kurzer erläuterung warum das so ist.

im handbuch habe ich dazu nichts passendes finden können

 

danke :)

14 Antworten

null
    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Michael ,

    Vielleicht so:

    let deinwert:= Feld mit wert;

    let Vergleich:= " Feld oder wert der in der einzufügenden Tabelle einmalig ist. Hier kommt der Wert oder das Feld aus der Tabelle rein wo der Button ist."

    (select 'tabelle wo es hin soll ' where "Feld oder wert " in der zu schreibenden tabelle" = Vergleich (variablen Name von oben ) ). (datum:=today();

    Feld := deinwert)

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    let A := Anlage.'UVV/ TÜV'
    let Vergleich := 'Nächster Prüftermin'
    (select 'Gerät'where'UVV/ TÜV' = Vergleich (A).datum := today();
    Feld:=A)

    Ich habe es nun so geschrieben.

    A = der punkt wo es eingetragen werden soll. (ein Datumsfeld)

    nächster Prüftermin ist ein Datum wo das Datum steht welches bei A eingetragen werden soll.

    Aber ich erhalte den Fehler 

    Die Funktion ist nicht definiert:Vergleich(date) in Zeile 5, Spalte47

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi, Michael. Es ist für die Antwort wichtig, die Namen und die Feldbezeichnungen der Ausgangs- und Zieltabelle zu wissen. Dazu noch, welcher, von den vorhandenen Datensätzen in der Zieltabelle gemeint ist, z.B. der erste, der letzte oder welches Kennzeichen sicher festlegt, welchen Du meinst. Hilfreich wäre auch, ob der Button in dem Datensatz stehen soll, aus dem die Daten entnommen werden, oder ob er ganz woanders, z.B. in einem Dashboard steht. Gruß Mirko

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2021-11-04 um 13.26.58

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2021-11-04 um 13.26.09

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    In dem 2.Bild soll der Punkt UVV/TÜV das Datum übernehmen, welches im ersten Bild (wo auch der (button) ist) unter Datum steht.

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Dann sollte Dir das hier weiterhelfen:

    let datum := this.Datum;
    Wartung.('UVV/TÜV' := datum)

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Wenn ich es in der Weise eintrage, kommt der Fehler

    Expression does not return a record: Wartung in Zeile 4, Spalte 8

     

    Als Frage dazu, trägt er es denn auch bei dem richtigen gerät mit ein?

    WIe schonmal erwähnt, brauche ich noch ein wenig um die Logiken richtig zu verstehen :)

    aber schonmal besten Dank für eure Hilfe

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Mein Fehler. Was mich aber stutzig macht ist die Fehlermeldung: Zeile 4. Der Code wie unten stehend besteht nur aus den zwei Zeilen. Hast Du noch mehr stehen?

    let datum := this.Datum;
    Gerät.('UVV/TÜV' := datum)

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ja hatte die beiden ersten zeilen frei stehen. :)

    Gerät, dort erkennt er das Ä nicht. also habe ich es mal in Anlage umbenannt.

    nun habe ich es deinem code angepasst.

    let datum := this.Datum;
    Anlage.('UVV/TÜV' := datum)

    jetzt kommt der Fehler:

    Die Tabellenspalte ist kein einfaches Datenfeld:UVV/TÜV in Zeile 2, Spalte20

    zumindest findet er jetzt schon mal was :)

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    let A := Anlage.'UVV/ TÜV';
    let B := 'Nächster Prüftermin';
    let datum := this.B;
    B.(A := B))

     

    Ich habe Die beiden Daten (Datumsfelder) jetzt mal in Variablen gesetzt. 

    Jetzt hab ich dort stehen: Expression does not return a record: B in Zeile4, Spalte 2

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Das ist die Fehlermeldung, wenn Du ein Berechnungsfeld ansprichst. Einträge können nur gemacht werden, wenn ein Datenfeld vorliegt. Eventuell ist es die Dopplung der Bezeichnung die in Deiner Tabelle zu sehen ist. Das rote Feld ist sicher ein Berechnungsfeld und heißt wie das Datumfeld - beide UVV/TÜV. Benenne das rote Feld testhalber in "Check" um und prüfe noch einmal.

    • SL Recycling
    • Michael_Lubbehusen
    • vor 3 Jahren
    • Gemeldet - anzeigen

    let 'Nächster Prüftermin' := this.'Nächster Prüftermin';
    Anlage.(Check := 'Nächster Prüftermin')

    so sieht es nun aus und es Funktioniert. ich hatte tatsächlich noch ein Feld, mit der gleichen bezeichnung und ein doofes Leerzeichen saß dazwischen.

    ich habe im Handbuch zwar auch gelesen. aber vielleicht kann man es mir hier drunter kurz erläutern.

    wofür steht 

    - let

    - :=

    - this

    - und zum schluss der der Punkt .

     

    danke vielmals für die Hilfe :)

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    mit let oder var bildest Du einen Container, einen Behälter in dem du Daten ablegst, die Du später noch benutzen willst, eine sogenannte Variable.

    := ist ein Zuweisungsoperator, hiermit weist du dem Element vor dem Zeichen den Wert nach dem Zeichen zu (in Deinem Fall dem Datumfeld den Wert aus dem let-Container)

    this bezeichnet den Datensatz der Tabelle in dem Du Dich gerade aufhältst, damit Ninox weiß, welchen Wert es nehmen soll (hier: Das Datum der Tabelle Wartung)

    die Punktnotation ist nötig um eine genaue Bezeichnung von einem Datenfeld vorzunehmen, wenn es in einer anderen Tabelle liegt, quasi eine Adresse, wohin deine Daten gesendet werden sollen, oder woher Du sie nehmen möchtest (hier: Tabelle Anlage und Feld 'Nächster Prüftermin', damit Ninox weiß in welchen Datensatz nun hineingeschrieben werden soll). Sind die Tabellen nicht verknüpft (was sie in Deinem Fall ja sind), dann benutzt man den Befehl "select" vor dem Tabellennamen.

    Bei allem geht es um die präzise Aussage von: " nimm genau das von genau hier und lege es nach genau dort ab" Gruß Mirko