0

Create-Befehl über Button Tabellenübergreifend ausführen

Hallo zusammen,

ich komme mit dem create-Befehl nicht klar.

Ich habe Tabelle 1 - in der ist der ausführende Button und der Inhalt der Übertragen werden soll (Wunschdatum und Wunschtext)

In Tabelle 2 habe ich mehrere Kontaktpersonen mit einer Nachrichtentabelle und einer Checkbox.

Ich möchte eigentlich "nur" über den Button bei den Kontaktpersonen wo die Checkbox angehakt ist, eine neue Nachricht.

let MyDatum := WunschDatum;
let MyNachricht := WunschText;
select 'B-Kontakt' where Check = true;
let satz := (create 'B-Kontakt').NeueNachricht;
satz.(Datum := MyDatum);
satz.(Notiz := MyNachricht)

Hier motzt zwar nichts, und Ninox tut auch was, aber ich sehe nichts...

10 Antworten

null
    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ich würde das über eine for-Schleife machen... die Zeile mit dem select kann da so nicht stehen 

    let MyDatum := WunschDatum;
    let MyNachricht := WunschText;

    for p in select 'B-Kontakt' where Check = true do

    p.(

    let satz := (create 'B-Kontakt').NeueNachricht;
    satz.(Datum := MyDatum);
    satz.(Notiz := MyNachricht)

    )

    end

    Versuch das mal...

    Im klartext heisst das: Für jedes Element p in der Tabelle 'B-Kontakt' wo Check = true ist mache das was hinter p. in der Klammer steht... ;))

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo, wenn 'Tabelle1' und 'B-Kontakt' miteinander verknüpft sind und 'Nachrichten' eine Untertabelle von 'B-Kontakt' ist, dann könnte man es so versuchen:

    let me := this;
    for i in 'B-Kontakt' where Check do
        let myK := i;
        let satz := (create Nachrichten);
        satz.('B-Kontakt' := myK);
        satz.(Datum := me.WunschDatum);
        satz.(Notiz := me.WunschText)
    end

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wieder zu spät. Müssten aber sowieso eckige Klammern statt "where" sein:

     

    [...]
    for i in 'B-Kontakt'[Check] do
    [...]

    • TONARIKA
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hmm - klappt leider beides nicht..

    Aber schon mal danke für die Rückmeldung und @Tobias Bartzsch danke für die Erklärung

    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hm, Du hast also in Tabelle 2 mit dem Namen "B-Kontakt" verschiedene Datensätze und jeweils eine Untertabelle in jedem Datensatz?

    • TONARIKA
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ja genau - vielleicht etwas genauer :)

    Tabelle 1 liest die Checkbox aus und gibt mir eine Mail-Liste aus Tabelle 2. Wenn ich jetzt diese Mails verschickt habe, möchte ich per Button in die Kontaktliste einen Eintrag vornehmen lassen - Datum und Text (Mail xy verschickt) und halt überall da, wo die Checkbox ja noch ausgewählt ist.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich würde eine Mischung aus beiden Vorschlägen machen:

    ---

    let me := this;
    for i in select 'B-Kontakt' where Check do
        let satz := (create DEINENACHRICHTENTABELLENNAME);
        satz.('B-Kontakt' := i);
        satz.(Datum := me.WunschDatum);
        satz.(Notiz := me.WunschText)
    end

    ---

    Leo

    • TONARIKA
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Yeah - danke Leo - klappt.

    Kannst du mir bitte noch erklären, warum das jetzt klappt, und die anderen beiden Varianten nicht?

    Ich mag das gerne nachvollziehen können.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ok,
    bei Tobias die Zeile:

    let satz := (create 'B-Kontakt').NeueNachricht;

    kann nicht funktionieren weil create einen Tabellennamen braucht und hier vermuttlich ein neuer Datensatz bei Kontakten erstellt wird.

    Und der Copytexter ist davon ausgegangen dass deine Kontakte als Untertabelle vorliegen und die Schleife ohne select gemacht.

    Die Schritte in meinem Skript:

    //fixiere mit me den aktuellen Datensatz//
    let me := this;//fange eine Schleife in der Tabelle B-Kontakt wo das Feld Chek ageklickt ist (true) //
    for i in select 'B-Kontakt' where Check do
    //erstelle einen neuen Datensatz in der Tabelle Nachrichten//
    let satz := (create DEINENACHRICHTENTABELLENNAME);
    //Verknüpfe der neu erstellten Datensatz mit dem aktuellen Datensatz i aus der Schleife//
    satz.('B-Kontakt' := i);
    //Füge die Werte an//
    satz.(Datum := me.WunschDatum);
        satz.(Notiz := me.WunschText)
    //fertig//
    end

    ---

    Leo

    • TONARIKA
    • vor 4 Jahren
    • Gemeldet - anzeigen

    super - vielen vielen Dank