0

Verknüpfung erstellen bei automatisch generierten Datensätzen

Hallo zusammen,

Ich habe für mein Problem drei relevante Tabellen mit den Namen "Mieten","Konten" und "Buchen". Nun möchte ich per Button einen neuen Datensatz in "Buchen" generieren. Bis auf ein Feld der Tabelle "Buchen" werden die Einträge mit Daten von "Mieten" gefüllt. Dies funktioniert auch wunderbar mit dem untenstehenden Skript. Ein Feld von "Buchen" sollte jedoch mit der Tabelle "Konten" verknüpft sein und dies ist gleich für alle automatisch generierten Datensätze. Ich kriege das nicht hin, da es für das Feld Soll heisst der Ausdruck liefert mehrere Ergebnisse zurück.

Kann mir jemand helfen?

let myHKNK := (select Mieten where not Mietende);
for i in myHKNK do
let myB := (create Buchen);
myB.(Kontakte := i.Kontakte);
myB.(Mietobjekte := i.Mietobjekte);
myB.(Betrag := i.Nettomiete);
myB.(Soll := select Konten where Nr=51);
end

10 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo, 

    versuch mal mir record(Konten, 51)

    wenn du bei select bleiben möchtest, dann first (select Konten where number(Nr)=51)

    ---

    let myHKNK := (select Mieten where not Mietende);
    for i in myHKNK do
    let myB := (create Buchen);
    myB.(Kontakte := i.Kontakte);
    myB.(Mietobjekte := i.Mietobjekte);
    myB.(Betrag := i.Nettomiete);
    myB.(Soll := record(Konten, 51));
    end

    ---

    Leo

    • Machgg
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Wow, vielen Dank für die super schnelle Antwort! Hat bestens geklappt.

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen,

     

    habe das hier gerade gefunden und ich suche etwas ähnliches. Ich habe eine Tabelle mit Aufgaben. Dort kann man direkt Aufgaben anlegen mit irgendeinem Erledigungsdatum.

    Dann habe ich eine Tabelle für einen Tagesplan. In diesen kann man sich aus verschiedenen Tabellen wie einer Wartungsliste, Reparaturliste aber auch aus der o.g. Aufgabentabelle Aufgaben auswählen (verknüpfen) und so meine  Tag planen.

    Klappt auch ganz gut. Ich habe in allen Tabellen Planzeiten hinterlegt die alle summiert werden und so kann man etwa abschätzen wie viele Tätigkeiten an dem Tag durchführen kann.

    Jetzt gibt es aber Aufgaben die ich mir erst beim erstellen den Tagesplanes überlege (Standardaufgaben die regelmäßig anfallen). Die kann ich dann ja einfach über + in den Aufgaben zufügen. Soweit so gut. 

    Das Problem ist: Ich habe in der Aufgabenliste über eine Zuordnungstabelle zuständige Mitarbeiter für die Aufgaben verknüpft. Wenn ich also eine neue Aufgabe per Hand anlege, lege ich fest (über eine Zuordnungshilftabelle, welche Mitarbeiter dafür zuständig sind (können mehrere sein, daher die Hilfstabelle) 

    Wenn ich jetzt den Tagesplan schreibe und dort Punkte zufüge, möchte ich gerne, dass sich die Zuordnung automatisch herstellt. (Ich weiss, sonst macht das keiner und man hat viele Aufgaben ohne Zuständigkeiten, ausserdem kostet das viel Zeit wenn man mehrere Aufgaben zuordnet)

    Hab mir daher überlegt die zus. Aufgaben aus dem tagesplan heraus per Button zu erstellen.

    let x1 := userEmail();
    let newAufgabenzuordnung := (create Aufgabenzuordnung);
    newAufgabenzuordnung.(select “102_Mitarbeiter” where “Ninox ID” = x1);
    let newAufgabe := (create “106_Aufgaben”);
    newAufgabe.last(select Aufgabenzuordnung);
    popupRecord(record(“106_Aufgaben”,number(newAufgabe.Nr)))

     

    Sprich ich wollte zuerst die Zuordnung unabhängig von dem Tagesplan erstellen und diesen im 2. step verknüpfen. 

     

    Problem: Die Befehle erstellen zwar je einen Datensatz in der Aufgaben- und in der Zuordnungstabelle, jedoch ohne jegliche Verknüpfungen Weder zu der Mitarbeiterliste noch untereinander. 

     

    Ich hoffe jemand hat eine Idee. Danke voran

     

    lg Florian

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Alternativ habe ich gerade versucht über die Aufgabentabelle zu arbeiten mit: Nach Änderung folgendes Skript ausführen:

    let x1 := userEmail();
    if “108_Tagesplanung” != null then
    let newAuf := (create Aufgabenzuordnung);
    newAuf.(select “102_Mitarbeiter” where “Ninox ID” = x1)
    end

     

    Natürlich auch ohne erfolg :-)

     

    P.S.: “Ninox ID” ist in der Mitarbeiterliste immer die Nutzeremailadresse...

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Florian,
    Ich habe dir schon mal geschrieben dass die Zuordnung über Email adresse nicht optimal ist. Meiner Meinung nach ist Das Feld Benutzer viel sicherer. Ist aber deine Datenbank.
    Zu der Formel im Button:
    ---

     

    let newTask:=(create “106_Aufgaben”);
    let newTaskAssignment:=(create Aufgabenzuordnung);
    newTaskAssignment.“106_Aufgaben”:=newTask;
    newTaskAssignment.“102_Mitarbeiter”:=first(select “102_Mitarbeiter” where “Ninox ID” =userEmail())
    popupRecord(newTask)

     

    ---

    Mit dieser Formel kann aber der Benutzer die Aufgabe sich selbst zuordnen. Dabei nehme ich an, dass die Verknüpfungen zu den Tabellen 106_Aufgaben  und  102_Mitarbeiter genau so heißen wie die Tabellen selbst. Übrigens, die Tabellen in der linken Spalte lassen sich im Admin-Modus auch manuell sortieren, dafür den gepunkteten Viereck rechts neben der Tabellenname anfassen und die Tabelle verschieben. Dadurch werden die Nummern überfüssig.

    Leo

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Super! Hat genau so funktioniert. Ich weiß gar nicht nicht wie man Dir am besten danken soll! 

    Zum Thema Email/Benutzer. Ja im nachhinein fände ich das auch gut jedoch hab ich das schon in vielen verschiedenen Funktionen so drin und wollte es einheitlich belassen. Funktioniert eigentlich auch gut. Ansonsten: Ich müsste dann ja in der Mitarbeitertabelle ein Benutzerfeld anlegen und dort je. den Benutzer auswählen richtig? Und dann überall die Nuordnung von Ninox ID auf Benutzer ändern. Wenn ich mal viel Zeit hab ... :-)

    Zur Nummerierung. Ja danke für den Tipp! hab ich auch schon so sortiert. Die Tabellen haben aber fast immer eine Zuordnung zu einer unserer SAP“S (Standartisierte Arbeits Prozesse) und da ist das, wie ich finde, übersichtlicher wenn die direkt über die Nummer zugeordnet sind. Auch da dort ca 50 Tabellen in der Datenbank sind, ist es einfacher jemandem zu sagen Schau unter 1403 anstatt die Bezeichnung der Tabelle.

     

    lg Florian

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Eine kurze Frage noch: Weisst Du zufällig ob man per Button Suchen und Hinzufügen öffnen kann? Dann hätte ich die beiden Buttons nebeneinander. Wäre dann schöner als wenn man neue Aufgaben per Button erstellt und vorhandene über die kleine Lupe suchen muss.

    Danke!

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Sorry ich muss nochmal stören. Das erstellen der neuen Aufgabe und der Zuordnung zum Mitarbeiter hat ja direkt super funktioniert. Nur verknüpft sich die Aufgabe nicht mit dem Tagesbericht. Kannst Du mir da nochmal einen Schubs geben? :-) Danke

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Habs hinbekommen :-)

    let myId := this;
    let newTask := (create “106_Aufgaben”);
    let newTaskAssignment := (create Aufgabenzuordnung);newTaskAssignment.(“106_Aufgaben” := newTask);
    newTaskAssignment.(“102_Mitarbeiter” := first(select “102_Mitarbeiter” where “Ninox ID” = userEmail()));
    newTask.(“108_Tagesplanung” := myId);
    popupRecord(newTask)

     

    So jetzt aber einen guten Rutsch :-)

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Florian,

    man kann leider mit Button nicht suchen. Ich benutze dafür immer noch ein Verknüpfungsfeld. In deinem Fall wäre es die Verknüpfung zu der Tabelle “106_Aufgaben”. Wenn man diese Verknüpfung z.B. “SUCHEN_HINZUFÜGEN” nennt, wäre der Trigger nach Änderung:
    ---

    let myId := this;
    if “SUCHEN_HINZUFÜGEN” then
    let newTaskAssignment := (create Aufgabenzuordnung);newTaskAssignment.(“106_Aufgaben” := myId.“SUCHEN_HINZUFÜGEN”);
    newTaskAssignment.(“102_Mitarbeiter” := first(select “102_Mitarbeiter” where “Ninox ID” = userEmail()));
    newTask.(“108_Tagesplanung” := myId);
    myId.“SUCHEN_HINZUFÜGEN”:=0
    end

    ---

    so wird nach der Auswahl der Aufgabe eine neue Zuordnung erstellt und die aufgabe darin zugeordnet, anschliessend wird das Feld geleehrt. Einzig blöde ist das Plus-Zeichen. Ich lasse es mit css verschwinden.

    Leo

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 10Antworten
  • 2679Ansichten