0

Duplizieren von Datensatz mit Untertabelle die 2.

Hallo,

ich kriege es einfach nicht hin. Es gibt hier ja schon ein Thema diesbezüglich. Ich versteh ja den eigentlichen Ablauf der Funktion, bekomme es aber nicht hin.

Ich habe eine Tabelle "DropPP" mit zum testen einem Textfeld "Text".
Hierin eine Untertabelle "Testtab" mit einem Textfeld "Testfeld".

let ND := number(Nr);
let tText := Text;
let neuDok := (create DropPP);
neuDok.(Text := tText);
let neuPosDok := neuDok.Nr;
for p in select Testtab where number(DropPP.Nr) = ND do
let tTestfeld := p.Testfeld;
let neuPos := (create Testtab);
neuPos.(DropPP.Nr := neuPosDok);
neuPos.(Testfeld := tTestfeld)
end

Eine neuer Datensatz wird auch angelegt. Das Feld "Text" wird auch gefüllt.
Aber in der Untertabelle erscheint nix. Im Ursprungsdatensatz sind aber 2 Positionen angelegt.

??????

Schon mal vielen Dank für die Hilfe.

Frauke

15 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Frauke,
    versuch mal so:
    ---
    let ND := number(Nr);
    let tText := Text;
    let neuDok := (create DropPP);
    neuDok.(Text := tText);
    let neuPosDok := neuDok.Nr;
    for p in Testtab do
    let tTestfeld := p.Testfeld;
    let neuPos := (create Testtab);
    neuPos.DropPP := neuPosDok;
    neuPos.Testfeld := tTestfeld
    end

    ---

    Da Testtab eine Untertabelle ist, kannst du diese ohne select ansprechen, dann wird Ninox nur die verknüpften Datensätze in der Schleife durchlaufen.
    • fherroeder
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ich bin begeistert :-)
    Funktioniert.
    Herzlichen Dank!
    • Holzi
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Frauke, Hallo Leo,
    da ich Ninox "verstehen" möchte, habe ich das o.a. Beispiel 1:1 nachvollzogen.
    Bei mir ist das Ergebnis:
    Der Datensatz in DropPP wird dort kopiert, in der Untertabelle "Testtab" passiert nichts.

    Habe ich wieder mal was nicht verstanden?
    Woran könnte das liegen?
    • Holzi
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Meine Frage kann natürlich so keiner beantworten, darum die DB bei Dropbox:
    https://www.dropbox.com/s/ryin819qiem3rhl/DroPP.ninox?dl=0
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Du hast auch keine Datensätze in Testlab. Die Idee ist hier, dass Ninox die Datensätze aus der verknüpften Tabelle (Testtab) übernimmt.
    • fherroeder
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Funxt auch nicht wirklich. Hab mal nen Screenshot der Tabelle gemacht.
    Ich brauche: Ware zu Ware, dann Farbe zu Farbe, dann erst Größe.

    https://www.dropbox.com/s/yn861gcjtfedr6d/Bildschirmfoto%202018-02-23%20um%2012.59.02.png?dl=0
    • fherroeder
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ups, falsches Thema. Gehört in Sortierung für PDF-Druck.
    • Holzi
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    erstmal Danke für die Antwort.
    Verstehe ich aber immer noch nicht. Auch wenn ich Datensätze in Testtab habe, passiert nichts, außer, dass in der Haupttabelle ein neuer, leerer Datensatz angelegt wird.
    Ist da nicht doch irgendein Fehler im script?
    Ich will nicht nerven, würde es aber gerne verstehen.
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    • Holzi
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Vielen Dank für den link, jetzt habe ich es begriffen.
    • tobiasehn
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Zusammen,
    habs geschafft mich zu registrieren.. ;-)

    ich arbeite gerade daran dieses Thema weiter zu entwickeln und komme derzeit nicht weiter.

    Ich möchte auf Knopfdruck einen Datensatz inkl. Untertabelle in eine andere Tabelle kopieren

    das ist der aktuelle Code:

    let ND := number(Nr);
    let tText := Text;
    let neuDok := (create DropPP2);
    neuDok.(select DropPP2).('Text 2' := tText);
    let neuPosDok := neuDok.Nr;
    for p in (select DropPP2).Testtab2 do
    let NP := p.number(Nr);
    let tTestfeld := p.(select DropPP).Testtab.Testfeld;
    let neuPos := (create DropPP2).Testtab2;
    neuPos.DropPP2.(Testtab2 := neuPosDok)
    end


    Ich bekomme die Meldung
    Die Tabellenspalte ist kein einfaches Datenfeld: Testtab2 in Zeile 10, Spalte 28
    Anbei das erweiterte Beispiel zum Download .

    Könnt ihr mir helfen?
    Vielen Dank im Voraus
    Tobias
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Tobias,
    kannst du bitte den Link zum Download als Text einfügen.
    Die Tags für Link scheinen fehlerhaft zu sein

    Grüße
    Leo
    • tobiasehn
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hey Leo,
    danke für die schnelle Antwort..
    Hier noch mal der Link als Text, hoffe der Download funktioniert nun.

    https://www.dropbox.com/s/hmqsjs79vx6atu9/DroPP2.ninox?dl=0

    VG
    Tobias
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Tobias,

    Die Formel wäre:

    let ND := Nr;
    let tText := Text;
    let neuDok := (create DropPP2);
    neuDok.(DropPP := ND);
    neuDok.('Text 2' := tText);
    let neuPosDok := neuDok.Nr;
    for p in Testtab do
    let NP := p.Nr;
    let tTestfeld := p.Testfeld;
    let neuPos := (create Testtab2);
    neuPos.(Testfeld2 := tTestfeld);
    neuPos.(DropPP2 := neuPosDok)
    end


    Ich habe noch die Verknüpfung von DropPP2 zu DropPP eingebaut.

    grüße
    Leo
    • tobiasehn
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hey Leo,
    vielen Dank für die schnelle Hilfe. Ich glaube ich habe verstanden, was der Fehler war.

    Jetzt mal sehen ob ich es auf meine Anwendung umsetzten kann.
    Grüße
    Tobias

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 15Antworten
  • 6017Ansichten