Im selben Datensatz Feldinhalt aus Import-Feld entweder in Feld einer verknüpften Tabelle schreiben oder nur Verknüpfung mit vorhandenem Inhalt herstellen

Ninox Profile

Beispiel:

Der Datensatz besteht aus den Feldern:

Nr | Feld_A_importiert | Feld_A_verknüpft | Feld_B_iportiert | Feld_B_verknüpft

1  |  Inhalt_Feld_A    | noch leer und unverknüpft

=> Im Feld_A_verknüpft (bzw. auch B_verknüpft) soll jeder Wert nur einmal vorkommen

 

Wie muss ich die Massendatenänderung machen?

Ninox Profile

Hallo,

kannst du das bitte mal etwas genauer beschreiben oder - noch besser - die Frage in unserem Webinar zur Sprache bringen?

Vielen Dank.

Für das Webinar, das wöchentlich mittwochs stattfindet, können Sie sich über den folgenden Link anmelden: 

https://zoom.us/webinar/register/WN_Asq34-biQxGS93h03BmyfQ

Gruß, Jörg

Ninox Profile

Das hatte ich mir vorgenommen, schaffe es aber nicht. Darum versuch ich eine weitere Erklärung des Ziels.

Nach dem Import Tabelle 1:

Nr | Feld_A_importiert | Tab_2/Feld_A_verknüpft | Feld_B_importiert | Tab_3/Feld_B_verknüpft

1  |  Inhalt_Feld_A    | unverknüpft            |   Inhalt_Feld_B   | unverknüpft

Nach der Massendatenänderung:

Nr | Feld_A_importiert | Tab_2/Feld_A_verknüpft | Feld_B_importiert | Tab_3/Feld_B_verknüpft

1  |  Inhalt_Feld_A    | verknüpft_zu_Tab_2_    |   Inhalt_Feld_B   | verknüpft_zu_Tab_3_

                       | wie_Inhalt_Feld_A      |                   | wie_Inhalt_Feld_B

=> In Tabelle 2 Feld_A_verknüpft (bzw. Tabelle 3 Feld_B_verknüpft) soll jeder Wert nur einmal vorkommen

=> Falls der Wert wie Inhalt_Feld_A (bzw. wie_Inhalt_Feld_B) in Tabelle 2 bzw. 3 nicht vorhanden ist, dann soll in der verknüpften Tabelle ein neuer Datensatz mit dem Wert so erstellt werden, dass alle weiteren Felder des Datensatzes leer bleiben.

 

 

Ninox Profile

Buchen Sie doch einen Termin für eine Screensharing-Session mit mir unter diesem Link:
https://calendly.com/birger-hansen/15min

Birger

C

Ich versuche mich nochmal an einer besseren Erklärung:


Stell dir vor, ich habe als Ergebnis 2 Arten von Tabellen, deren Datensätze entweder nur:


a) aus dem Feld/Spalte "Datensatznummer" und einem Feld/Spalte "Value" oder
b) aus dem Feld/Spalte "Datensatznummer" und Feldern/Spalten verknüpfter Tabellen wie a) besteht


In Tabellen nach a) kommt kein Wert doppelt vor.


(Bitte lasst das mal so ohne Kommentar stehen.)


Ich habe eine Import-Tabelle mit den Spalten "A_imp" und "B_imp" und "C_imp".


Daher lege ich in Ninox die Tabellen nach a) "Tabelle_A" und "Tabelle_B" und "Tabelle_C" mit je einem Feld/Spalte in der Art "Tab_A_Value", "Tab_B_Value" und "Tab_C_Value" an.


Für die zukünftige Tabelle nach b) lege ich die Tabelle_ABC an mit den Feldern/Spalten A_imp, B_imp, C_imp an und füge Verknüpfungsfelder zu den o.g. Tabellen nach a) "Tabelle_A" und "Tabelle_B" und "Tabelle_C" hinzu.


Ich importiere die Import-Tabelle in die zukünftige Tabelle nach b) und ordne die Spalten A_imp:A_imp, B_imp:B_imp und C_imp:C_imp zu.

 

In jedem Datensatz der zukünftigen Tabelle nach b) Tabelle_ABC sind die Verknüpfungsfelder zu den eingebundenen o.g. Tabellen nach a) mit ihren Felder/Spalten "Tab_A_Value", "Tab_B_Value" und "Tab_C_Value" nun noch unverknüpft.


Die von mir angefragte Funktion sucht für den abzuarbeitenden Datensatz der Tabelle_ABC ob der Wert des Feldes/Spalte A_imp in der verknüpften Tabelle Tabelle_A im Feld/Spalte "Tab_A_Value" generell vorhanden ist. Wenn JA, dann legt die Funktion eine Verknüpfung mit diesem Datensatz an und wenn NEIN, dann erzeugt die Funktion einen neuen Datensatz in der verknüpften Tabelle Tabelle_A mit diesem Wert und legt anschließend die Verknüpfung mit dem neuen Datensatz an. Und dann so weiter mit Feld/Spalte B_imp und der verknüpften Tabelle Tabelle_B und weiter mit Feld/Spalte C_imp und der verknüpften Tabelle Tabelle_C. Dann folgt der nächste abzuarbeitende Datensatz.


Danke sehr fürs bis hierher lesen ;-)

Ninox Profile

Ich würde folgendes vorschlagen:

---

for i in select Tabelle_ABC where not Tabelle_A or not Tabelle_B or not Tabelle_C do
if i.A_imp then
let myA := i.A_imp;
let myLink_A := first(select Tabelle_A where Value = myA);
if myLink_A then
i.(Tabelle_A := myLink_A)
else
let new_A := (create Tabelle_A);
new_A.(Value := myA);
i.(Tabelle_A := new_A)
end
end;
if i.B_imp then
let myB := i.B_imp;
let myLink_B := first(select Tabelle_B where Value = myB);
if myLink_B then
i.(Tabelle_B := myLink_B)
else
let new_B := (create Tabelle_B);
new_B.(Value := myB);
i.(Tabelle_B := new_B)
end
end;
if i.C_imp then
let myC := i.C_imp;
let myLink_C := first(select Tabelle_C where Value = myC);
if myLink_C then
i.(Tabelle_C := myLink_C)
else
let new_C := (create Tabelle_C);
new_C.(Value := myC);
i.(Tabelle_C := new_C)
end
end
end

---

Dabei nimmt die Funktion  nur die nicht verknüpften Datensätze und wenn in dem Datensatz das jweilige Feld ..._imp nicht leer ist dann wird es geprüft und gemacht.

Ich glaube es ist wichtig, damit du die Werte einfach per Massendatenänderung zu der Tabelle_ABC einfügst. Die Formel kannst du in einem Button  schreiben oder in der Console.

 

Leo

Antworten