0

Drucken eines Datensatzes in einer anderen Tabelle

Ich will über einen Taste einen Druck eines Datensatzes in einer anderen Tabelle auslösen, also zB:

printRecord(record(Drucktabelle,87, "xxx")

Dh also den Datensatz mit Nr 87 in "Drucktabelle" mit Drucklayout xxx drucken. 

Das funktioniert sehr gut, solange die Nummer explizit eine Nummer ist (87). Ist die Datensatznummer aber durch eine Variable zu ersetzen, weil die Nr dynamisch zu bestimmen ist, dann funktioniert es nicht. ZB:

... let i:= Nr;

printRecord(record(Drucktabelle,number(i)), "xxx");  

Ich habe viel und lange probiert. Irgendwo muss ich einen Denk- oder Syntaxfehler machen, denn ich habe im Internet ein Beispiel gesehen wo es funktioniert hat. mhm...

Hat jemand daselbe Problem gehabt und gelöst?

Viele Grüße!
Alexander 

2 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Alexander, "Nr" entspricht der ID und beinhaltet noch mehr als die Zahl der Datensatznummer. Versuch's mal so:

     

    let i := number(Nr);

    • alexanderhaas
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Herulichen Dank für den Hinweis! Mit Nr hatte ich schon mal Probleme. Da Nr in Tabellen als Zahl auftaucht, denkt man, es sei eine Zahl, aber offensichtlich muss man immer sagen, dass man es als Zahl gelesen haben will. 

    number(Nr) sollte funktionieren, wenn man schon auf dem record ist, der angesprochen wird. Im meinem Beispiel sind viele records und ich muss sagen, welches Nr es sein soll, denn von dem record soll die Untertabelle (Telefonliste) gedruckt werden. Diese und der zugehörige Datensatz wird nur zeitweise als Phantomtabelle (Drucktabelle) angelegt (gespeist aus der Mitarbeitertabelle), gedruckt und dann gelöscht.

    Ich habe jetzt eine funktionierede Lösung. Nicht elegant 😬 aber es tut 🙂.   Ich kopiere Nr des in Frage stehenden Datensatzes als Zahl in ein Funktionsfeld der Untertabelle (Telefonliste.yyy) und von da aus mache ich dann alles: ich lasse in dem Feld den Maximalwert (falls doch mal mehrere Datensätze in Drucktabelle sein sollten) suchen und definiere eine Variable damit. Die Variable setze ich dann ein. 

    Vielleicht war das alles zu konfus. Hier der (funktionierende) Code. Vielleicht kann jemand sowas ähnliches brauchen. 

    do as server
        let i := null;
        let i := (create Drucktabelle);
        for j in select Mitarbeiter do
            if j.Nachname != null then
                let k := (create Telefonliste);
                k.(Kettenname := j.Nachname + ", " + j.Vorname);
                k.(Telefon := j.Telefon);
                k.(Drucktabelle := i);
                k.(yyy := number(i.Nr))
            end
        end
    end;
    let maxID := max((select Telefonliste).yyy);
    printRecord(record(Drucktabelle,number(maxID)), "xxx");
    delete (select Drucktabelle)

    Nochmal danke für die Bereitschaft zu helfen und den Tipp!
    Viele Grüße!
    Alexander 

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 2Antworten
  • 852Ansichten