0

myID:= this geht nicht?

Hallo Zusammen,

ich habe das Beispiel von Uwe verwendet, um eine CSV zu importieren. Ich habe zwei Tabellen, 1xLeistungsverzeichnis und 1x Positionen.

 

Ich stehe vor dem Problem das wenn ich die Positionen importiere, es nicht dem Leistungsverzeichnis zugeordnet wir. (myID:=this)

was mach ich falsch? :-(

do as server
    "// Datum in Textform DD.MM.YYYY in Ninox-Datum umwandeln";
    function fx_TextToDate(vDate : text) do
        let vDay := number(substr(vDate, 0, 2));
        let vMonth := number(substr(vDate, 3, 2));
        let vYear := number(substr(vDate, 6, 4));
        date(vYear, vMonth, vDay)
end;
    "// Zahl in Textform in Zahl umwandeln";
    function fx_Zahl(vZahl : text) do
        number(replacex(vZahl, "[\,\.]", "."))
end;
    "// Hier startet die eigentliche Verarbeitung des CSV-Files";
    let myShareUrl := shareFile(CSV);
    let response := http("get", myShareUrl);
    'Import csv Text' := formatJSON(response);
    let myArray := split(text(response.result), "
");
    'Array mit Spaltennamen aus csv' := formatJSON(myArray);
    let CntmyArray := cnt(myArray);
    myArray := slice(myArray, 1, CntmyArray);
    'Array ohne Spaltennamen aus csv' := formatJSON(myArray);
    "// Aus dem bereinigtem Array werden die Daten ausgelesen und als neue Records in der Zieltabelle erstellt ";
    for i in myArray do
        let new := (create 'LV-Positionen');
        let mynewArray := split(i, ";");
        new.(Oz := item(mynewArray, 1));
        new.(Kurztext := item(mynewArray, 2));
        new.(Langtext := item(mynewArray, 3));
        new.(Menge := fx_Zahl(item(mynewArray, 4)));
        new.(Einheit := item(mynewArray, 5))
    end
end

Über eine Hilfestellung würde ich mich freuen

Lieben Dank

VG Stefan

4 Antworten

null
    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Sollen denn die importierten Positionen immer dem Datensatz zugeordnet werden von wo aus du das Script aufrufst bzw. in welchen du die CSV hinein lädst?

    In der obigen for-Schleife erzeugst Du zwar für jedes Objekt im Array einen neuen Datensatz in der Tabelle LV-Positionen, du holst Dir aber vorher nicht die ID ( Nr) des Datensatzes aus dem heraus du das script ausführst und du gibst der Verknüpfung auf eben diesen im neu erzeugten Eintrag in der Tabelle LV-Positionen diese ID auch nicht mit. 

    D.h. Vor der for-Schleife muss noch ein let myID := number(this());

    und innerhalb der for-Schleife muss noch die ID and die Verknüpfte Tabelle übergeben werden:

    new.(DEINEVERKNÜPFTETABELLE := myID);

    • Stefan_Gutekunst
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo vielen Dank, ich habe es mal versucht aber ich glaub ich mach was falsch ...

    do as server

        "// Datum in Textform DD.MM.YYYY in Ninox-Datum umwandeln";
        function fx_TextToDate(vDate : text) do
            let vDay := number(substr(vDate, 0, 2));
            let vMonth := number(substr(vDate, 3, 2));
            let vYear := number(substr(vDate, 6, 4));
            date(vYear, vMonth, vDay)
    end;
        "// Zahl in Textform in Zahl umwandeln";
        function fx_Zahl(vZahl : text) do
            number(replacex(vZahl, "[\,\.]", "."))
    end;
        "// dynAuswahlfeld RecID ermitteln";
        function fx_LV(Nr : text) do
            first((select LV)[upper(Bezeichnung) like upper(Bezeichnung)]).number(Nr)
    end;
        "// Hier startet die eigentliche Verarbeitung des CSV-Files";
        let myShareUrl := shareFile(CSV);
        let response := http("get", myShareUrl);
        'Import csv Text' := formatJSON(response);
        let myArray := split(text(response.result), "

    ");
        'Array mit Spaltennamen aus csv' := formatJSON(myArray);
        let CntmyArray := cnt(myArray);
        myArray := slice(myArray, 1, CntmyArray);
        'Array ohne Spaltennamen aus csv' := formatJSON(myArray);
            let myID :=  number(this()); zeigt es als Fehler an
        "// Aus dem bereinigtem Array werden die Daten ausgelesen und als neue Records in der Zieltabelle erstellt ";
        for i in myArray do
            let new := (create 'LV-Positionen');
            let mynewArray := split(i, ";");
            new.('LV-Positionen':=myID);
            new.(Oz := item(mynewArray, 1));
            new.(Kurztext := item(mynewArray, 2));
            new.(Langtext := item(mynewArray, 3));
            new.(Menge := fx_Zahl(item(mynewArray, 4)));
            new.(Einheit := item(mynewArray, 5))
        end
    end 

      • T_Bartzsch
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Stefan Gutekunst  ja klar, nur this ohne doppelte klammer 

      let myID := number(this);

      sorry

    • Stefan_Gutekunst
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo,

     

    Danke hat nicht und auch doch funktioniert.

    Der Fehler, bei der Verknüpften Tabelle zeigt es mir nichts an.

    Als alleinige Tabelle zeigt es mir alles an und ich möchte aber das es mir nur die Positionen aus Leistungsverzeichnis 1 oder 2 usw. anzeigt.

    wie kann ich das automatisch filtern?

    Sorry bin neu hier :-(

    Liebe Grüße und besten Dank Stefan

Content aside

  • vor 1 JahrZuletzt aktiv
  • 4Antworten
  • 106Ansichten
  • 2 Folge bereits