0

Neuer Eintrag in Untertabelle aus Feldern einer Haupttabelle

Hallo liebes Forum,

 

ich möchte über einen Button mehrere Felder einer Haupttabelle "Kontakte" in eine neue Zeile mit identischen Feldern der Untertabelle "Mitglieder übernehmen. Ein Kontakt kann in meinem Fall aus mehreren Mitgliedern bestehen, wobei in der Haupttabelle immer der Ansprechpartner / Rechnung / Lieferadresse stehen soll. Wie funktioniert das?

 

Vielen Dank,

Reinhard

12 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard, 

    rein technisch sollte es so ablaufen:

    ---

    let my:=this;

    let new:=create Untertabelle;

    new.Haupttabelle:=my;

    new.Feld1:=my.Feld1;

    new.Feld2:=my.Feld2;

    new.Feld3:=my.Feld3

    ---

    Leo

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hi Leo, hatte ich ähnlich schon probiert, aber Ninox meckert da:

    ---

    let my := this;
    let new := (create Kontakte).Mitglieder;
    new.(Kontakte := my); Eine Tabellenspalte wurde nicht gefunden: Kontakte in Zeile 3, Spalte 16
    new.(Feld1 := my.Feld1);
    new.(Feld2 := my.Feld2);
    new.(Feld3 := my.Feld3)

    ---

    LG Reinhard

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard

    ---

    let new:=create Mitglieder

    ---

    der Befehl create bezieht sich one Select auf die benannte Tabelle. 

    Leo

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hi Leo,

    Jetzt bekomme ich keine Fehlermeldung mehr, hatte auch noch vergessen eine Verknüpfung zur Haupttabelle in der Untertabelle anzulegen, sorry ich dachte das wäre bei Untertabellen nicht nötig.

    Allerdings führt der Button immernoch keine Funktion aus:

    let my := this;
    let new := (create Mitglieder);
    new.(Kontakte := my);
    new.(Vorname := my.Vorname);
    new.('Zweiter Vorname' := my.'Zweiter Vorname');
    new.(Nachname := my.Nachname)

     

    Die Felder sind alles Textfelder, die Klammern macht mir Ninox automatisch rein...

    LG Reinhard

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Wie sieht das Datenmodel aus?

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hab den Fehler gefunden:

    Ninox hat mir eine nach anlegen der Verknüpfung "Kontakte" in Untertabelle "Mitglieder" eine neue Tabelle "Mitglieder2" erstellt, in diese wird durch den Button richtig eingetragen. Was mach ich jetzt allerdings mit der Untertabelle "Mitglieder" und den dort bereits existenten Daten?

    Oder kann ich "Mitglieder2" irgendwie vermeiden?

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Oh mann, jetzt hab ichs endlich gefunden... da "Kontakte" meine aller erste Ninox Tabelle, hab ich hier oft recht willkürlich an verschiedenen Stellen die Benennungen geändert, das hab ich jetzt entdeckt, aufgeräumt und es läuft.

    Bitte entschuldige die Störung, als Anfänger sieht man manchmal den Wald vor lauter Bäumen nicht.

     

    Eine Sache gibt es aber noch bei der ich nicht weiter komme bzgl. der selben Untertabelle:

    Hier würde ich gerne über entweder ein Mehrfachauswahl oder einzelne Auswahlfelder die jeweiligen Adressen der Mitglieder nach "Ansprechpartner", "Rechnungsadresse" und "Lieferadresse" festlegen. Welcher Feldtyp ist hier günstiger, vor allem in Hinblick, dass andere Tabellen wiederrum dementsprechend ihre Werte erhalten (zB Tabelle Rechnungen, Liefescheine etc.)?

    Und ist es möglich beim Ändern einer Rechnungsadresse, automatisch, die Auswahl oder das Häckchen bei der alten Adresse zu löschen? Sozusage, dass immer nur eine Zeile MASTER / AKTIV sein darf?

    Danke wiedermal!

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    von der Programmierung her ist es günstiger, wenn du drei einzelnen Ja/Nein Felder einfügst. Dann kannst du z.B bei Ansprechpartner einen Trigger nach Änderung schreiben:

    —-

    let my:=this;

    if Ansprechpartner then Kontakte. Mitglieder[Nr!=my.Nr].(Ansprechpartner:=false)

    —-

    Dabei gehe ich davon aus, dass die Verknüpfungen genauso heißen wie die Tabellen. Diesen Trigger schreibst du dann auch bei Rechnungsadresse und Lieferadresse und änderst entsprechend die Namen.

    Sobald ein Feld als Ja angeklickt wird, nimmt Ninox über Verknüpfung zu Kontakte die Mitglieder-Tabelle und ändert in allen restlichen Datensätzen den Wert auf Nein.

    Dementsprechend leicht kannst du z.B.  die Rechnungsadresse für die Rechnung finden 

    —-

    first(Kontakte.Mitglieder[Rechnungsadresse].Adresse)

    —-

    warum schreibe ich hier "first"? Ninox weißt nicht, dass wir nur einen Datensatz als Rechnungsadresse angegeben haben und macht automatisch einen Array aus der Anfrage. Mit first wird zwingend nur einen Datensatz ausgewählt.

    Leo

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hi Leo,

    super Erklärung und klappt wie immer perfekt :)

    Eine Frage hat sich noch zum Button "Mitglied erstellen" ergeben: Wie kann ich in der Funktion die Werte der Quellfelder auf null setzen, nach dem das neue Mitglied erstellt wurde? 

    LG Reinhard

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard:

    ---

    let my := this;
    let new := (create Mitglieder);
    new.(Kontakte := my);
    new.(Vorname := my.Vorname);
    my.Vorname:=null;
    new.('Zweiter Vorname' := my.'Zweiter Vorname');
    my.'Zweiter Vorname':=null;
    new.(Nachname := my.Nachname);
    my.Nachname:=null

    ---

    Leo

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Logisch :) Danke Leo!

    • Bernhard_Schulze
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo!

    Ich habe zu diesem Thema eine konkrete Variante:

    Es gibt eine Hapttabelle und eine Untertabelle. In der Untertabelle werden nur bei Bedarf bestimmte Berechnungen durchgeführt, die dann wieder in die Haupttabelle übernommen werden sollen. Die Trennung in dieser Form ist deshalb so, da ich einerseits nicht zu jedem Eintrag in der Haupttabelle einen Eintrag in der Untertabelle benötige - es gibt also mehr Haupteinträge als Untereinträge. Andererseits brauche ich die Einträge der Untertabelle für weitere separate Darstellungen und Auswertungen.

    Die angehängte Abbildung soll das ein wenig veranschaulichen.

    Schritt 1: Es wird ein Eintrag in der Haupttabelle erzeugt.

    Schritt 2: Bei Bedarf wird duch einen Button-Klick ein Untereintrag erzeugt, der bestimmte Felder übernehmen soll.

    Schritt 3: Der Untereintrag wird durch verschiedene Informationen und Daten angereichert. Damit werden neue Felder (Kalkulationen) erzeugt, die durch einen Klick auf einen "Übernehmen"-Button in den Haupteintrag zurück geschrieben werden sollen.

    Schritt 4: Der Button soll dann verschwinden bzw. geändert werden in einen "Aktualisieren"-Button, falls nachträglich Werte geändert und in der Haupttabelle angepasst werden müssen.

    Die Verknüpfung der Tabellen soll über ein Datumsfeld mit Zeiteintrag erfolgen. In der Haupttabelle gibt es zu einem Zeiteintrag immer nur genau einen Datensatz. Ebenso wird es auch in der Untertabelle zu diesem Datensatz nur eine einzige Entsprechung geben. Ich hoffe, ich habe alles verständlich beschrieben ;-)

    ((Hier in der Eingabeform erscheint das Bild total in die Länge gezogen.))

    Ich bin gespannt, wie das funktioniert. Ich bin bisher noch zu keinem Ergebnis gekommen.