0

Tabellenansicht drucken und in Datensatz speichern

Hallo,

ich habe eine Tabelle "Produkte" mit einer gefilterten Ansicht "Vergleich Produkte". Diese Vergleichsansicht habe ich in einem Dashboard als Ansicht eingebunden.

Dort habe ich auch einen Button, der über printTable die Ansicht als PDF druckt. Das klappt auch (öffnet sich gleich im Acrobat). Eigentlich möchte ich aber dieses PDF bei einem Datensatz einer anderen Tabelle Anleitung abspeichern.

Die Auswahl der Anleitung ist kein Thema über ein dynamisches Auswahlfeld, aber wie krieg ich dieses PDF dahin? Einen einzelnen Datensatz kann ich ja mit printandsaverrecort und importfile ablegen, aber eine gedruckte Tabellenansicht?

Über Ideen freue ich mich, da alle Versuche bisher gescheitert sind und mir nichts mehr einfällt. Falls das wichtig ist: ich benutze die Mac-Version.

Katharina

2 Antworten

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

    Hallo Katharina, beim printTable() wird die erzeugte PDF-Datei automatisch lokal im Dateisystem gespeichert, befindet sich also gar nicht in Ninox und könnte demzufolge auch nur manuell wieder einem Datensatz in Ninox hinzugefügt werden. Um das zu automatisieren, könnte man mit einer Verknüpfungstabelle arbeiten, die man in einem Drucklayout platziert und dann auf dem üblichen Weg mit importFile() und printAndSaveRecord() als PDF-Datei einem Datensatz zuweist.

    Die Verknüpfungstabelle könnte auch eine temporäre sein. Das heißt, im Button-Code zum Drucken erzeugt man die entsprechenden Verknüpfungen und löscht sie nach dem Druck wieder (oder umgekehrt: vorhandene Verknüpfungen löschen und dann die neuen erzeugen).

      • hirsch_katharina
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro Puh, wow, genial! Vielen Dank für den Input! Dadrauf wäre ich alleine nie gekommen. Ich hab zwar erst nur Bahnhof verstanden, aber nach und nach fielen die Groschen.

      Falls mal jemand danach sucht, hier noch ein paar Details:

      • Neue versteckte Tabelle "Print Vergleich" anlegen.
      • Diese Tabelle hat bei mir zwei Felder: Datum (=now()) für die Druckausgabe und eine Verknüpfung zur Produkttabelle.
      • Dann geht es ins Drucklayout. Die Verknüpfung kann man nicht als Feld auswählen, aber über Funktionsfelder spaltenweise (automatische Höhe einstellen!) z.B. für den Produktnamen (Die einfache Ausgabe mit for i in... do spuckte immer ein Komma mit aus, daher habe ich das mit join gelöst, aber Achtung bei Zahlenfeldern müssen die erst in Text umgewandelt werden. Die zwei "" am Ende machen einen Zeilenumbruch und müssen auch so in zwei Zeilen stehen.) ← Ich weiß manchmal nicht, was ich tue und warum was so ist, aber irgendwie klappt es 😉
      join(((select Produkt where Vergleich = 1) order by Name).Name, "
      ")
      
      • Die fertige Tabelle hat keine Zeilenlinien, daher mit etwas Zeilenabstand arbeiten. Bei Zeilenumbrüchen wird es sicher unschön, aber schmaler Font und kleine Schrift helfen.
      • Dann geht es zurück zur Ansicht. Dort ist ein dynamisches Auswahlfeld, das die Produkte auflistet.
      • Dann ein Button, der Folgendes macht:
      if 'Auswahl Anleitung' != null then
          let auswahl := number('Auswahl Anleitung');
          let anl := record(Anleitung,auswahl);
          let pv := (create 'Print Vergleich');
          let filename := text(year(now())) + text(month(now())) + text(day(now())) + "-vergleich.pdf";
          importFile(anl, printAndSaveRecord(pv, "Print Vergleich"), filename);
          popupRecord(anl);
          delete pv;
          'Auswahl Anleitung' := null
      else
          alert("Bitte eine Anleitung auswählen!")
      end
      
      • Abfrage, ob Anleitung ausgewählt wurde
      • mit der Nummer der Anleitung den Datensatz definieren (das hat gedauert bis ich record gefunden habe).
      • einen neuen Datensatz in der Tabelle Print Vergleich erstellen
      • Filenamen festlegen (ich hab das aktuelle Datum vorangestellt)
      • Das PDF an die Anleitung übergeben. Printandsaverecord erstellt ein PDF aus dem einen, neu erzeugten Datensatz in der Tabelle Print Vergleich mit dem gleichnamigen Drucklayout. Importfile packt dieses PDF in die ausgewählte Anleitung mit dem Dateinamen.
      • Anleitung öffnen, Datensatz in Print Vergleich wieder löschen und Auswahlfeld auf leer setzen zum Abschluss.