Zugriff auf mehrere Tabellen aus Dashboard Workaround
Ich habe heute in einem Trainingsvideo von Nioxus gelernt, dass man mit select immer nur auf eine Tabelle zugreifen kann. Mit Trial and Error und mit Hilfe der Referenzdatenbank von Ninoxdb habe ich mir jetzt folgenenden Workaround überlegt. In den Tabellen Books und Videos sind die jeweiligen Namen und Zusatzinfos Page und Zeitdauer erfasst.
Mit einer Befehlsschaltfläche kann ich jetzt bestimmte Datensätze zu einer neuen Tabelle (BooksVideosEffects) kopieren und in dieser Tabelle die Werte aus den einzelnen Tabellen zusammenfügen.
In meinem Dashboard kann ich jetzt mit select BooksVideosEffects) auf alle Datensaätze zurückgreifen. Hier ein Beispiel eines Scripts:
---
let myNr := Nr;
let myBookName := BookName;
let myTotalPages := TotalPages;
let c := (create BooksVideosEffects);
c.(Nr := myNr);
c.(Name := myBookName);
c.(TotalPages := myTotalPages);
openRecord(record(BooksVideosEffects,c.Nr))
---
Soweit funktioniert es, wie kann ich jetzt das manuelle Kopieren jedes einzelnen Datensatzes automatisieren. Das geht bestimmt mit einer Schleife, die alle Datensätze durchläuft und den Kopiervorgang ausführt. Da ich mit diesen Schleifen noch auf Kriegsfuß stehe!!!
Wer er kann mir helfen und gibt es auch eine Möglichkeit dabei doppelte Datensätze zu vermeiden.
Wolfgang
5 Antworten
-
Hallo Wolfgang,
um alle Werte aus einer Tabelle in die Andere zu übernehmen und dabei noch auf dublikate zu prüfen, würde ich folgendes vorschlagen:
---
for i in select Books do
if cnt (select BooksVideosEffects [BookName=i.BookName and TotalPages=i.TotalPages])=0 then
create BooksVideosEffects.(
Name:=i.BookName;
TotalPages:=i.TotalPages)
end
end
---
die Konstellation in deinem skript c.(Nr := myNr) wird nicht funktionieren weil Nr von Ninox automatisch vergeben wird.
Leo
-
Hallo Leo,
die Konstellation in deinem skript c.(Nr := myNr) wird nicht funktionieren weil Nr von Ninox automatisch vergeben
Es funktioniert, den Code habe ich aus der DB Weninar DE 2019060_openrecord_duplizieren_edit aus diesem Forum.
ich habe dein Script sofort ausprobiert und er hat alles kopiert, doppelte Einträge hat er nicht verhindert.
gibt es noch eine Suche nach doppelten? Dann könnte man diese wenn doppelt löschen.
Wolfgang
-
Hallo Wolfgang,
wenn Nr - die interne ID von Ninox ist dann wird es nicht funktionieren. Ninox vergibt die Id automatisch und lässt sich nicht damit manipulieren. Warscheinlich ist es noch zufällig so das zu kopierende ID und die neue ID identisch sind. Wersuch doch jetet denDatensatz mit Nr 1 nochmals zu kopieren. Du wirst sehen dass die ID in neuen Datensatz gar nicht 1 ist.
Jetzt zu den doppelten Einträgen. Was genau verstehst du unter doppelt? Welche Felder sollten auf Inhalte überprüft werden?
Leo
-
Hallo Leo ich habe mit Deiner Hilfe es selbst geschafft.
ich habe hier im Forum ein Code von Dir gefunden, den ich als Trigger in der Spalte Name meiner Zieltabelle eingegeben habe....
---
let myName := Name;
if cnt((select BooksVideosEffects)[Name = myName]) > 1 then
alert("Achtung, dieser Name existiert bereits");
Name := null
end
---
Dein Script zum Aufspüren der Duplicate habe ich als Button realisiert. Wenn ich jetzt neue Datensätze in Books erfasse und die Befehlsschaltfläche drücke, werden nur die neuen Datensätze angehängt.
Merci Wolfgang
-
"Jetzt zu den doppelten Einträgen. Was genau verstehst du unter doppelt? Welche Felder sollten auf Inhalte überprüft werden?
Leo"
Ich habe es für mich gelöst Danke Leo - s. O. hat sich überschnitten.
Es ging darum, dass wenn ich zum Bsp. in der Tabelle Books neue Bücher eingebe, dass nur diese neue kopiert werden und nich die bereits vorhanden noch einmal.
Wolfgang
Content aside
- vor 5 JahrenZuletzt aktiv
- 5Antworten
- 1970Ansichten