0

Eine Ansicht im Dashboard drucken

Hallo Forumsmitglieder,

ich stehe etwas auf dem Schlauch.

Ich habe ein Dashboard erstellt über eine Seite. 

Hier trägt jeder unseren Monteure seine Arbeitszeiten ein. 

Am nächsten morgen sollen diese Zeiten ausgedruckt werden.

Bisher wurde dies in der Tabelle Zeiterfassung gemacht nun würde ich aber gerne gleich über ein Button diese Tabelle ausdrucken.

In einer anderen Anwendung ging dies weil das Dashboard eine Tabelle war. Aber bei Seiten habe ich ja nicht die Möglichkeit zu drucken. hier mal ein Auszug aus dem Code bei dem es geht:

delete DRUCK;
let me := this;
let myView := if 'Auswahl Messe' and Anfang and Ende then
        let xAus := 'Auswahl Messe';
        let xAnf := Anfang;
        let XEnd := Ende;
        select Messen where Messe = xAus and Datum >= xAnf and Datum <= XEnd
    else
        let xAus := 'Auswahl Messe';
        select Messen where Messe = xAus
    end;
for i in myView do
    let newRec := (create DRUCK);
    newRec.(ZENTRALE := me);
    newRec.(Messen := i)
end;
printRecord(this, "MESSEDRUCK")

der obige Code ist das Dashboard eine Tabelle!

Hat einer eine Idee???

6 Antworten

null
    • Pushing the Boundaries of Ninox
    • Gotje_Ing
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Du kannst mit printRecord() bzw. printAndSaveRecord() auch Drucklayouts aus anderen Tabellen ansteuern. 
    z.B. printAndSaveRecord(Document, "Report", printJSON)
    Hier wird in der Tabelle "Document" das Drucklayout "Report" mit der optionalen JSON "printJSON" angesteuert. 

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 3 Tagen
      • Gemeldet - anzeigen

       danke schonmal,

      also müßte ich dies ähnlich wie bei dem Code für die Tabelle händeln?

      Ich werde es mal versuchen

      • Pushing the Boundaries of Ninox
      • Gotje_Ing
      • vor 3 Tagen
      • Gemeldet - anzeigen

       
      Ich hab mich nicht ganz klar ausgedrückt und noch etwas vergessen.
      Du musst in einer Tabelle (keine Page) das Drucklayout ganz normal hinterlegen. Dort müssen die Daten auch greifbar sein, also in Verknüpfungen oder Datenfeldern liegen, wenn du die Ninox-eigenen Drucklayouts nutzen möchtest.

      Wenn du Carbone nutzt, dann ist das etwas einfacher. Du musst das Drucklayout immernoch in einer anderen Tabelle erstellen, kannst aber mit der JSON die zu druckenden Daten übermitteln, egal wo du in Ninox bist. 

      Ich nutze ausschließlich die Carbone-Layouts, daher ist mir das durch die Lappen gerutscht.

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 3 Tagen
      • Gemeldet - anzeigen

       ich nutze das Ninox eigene Drucklayout habe es jetzt mal versucht aber ich bekomme Fehlermeldung das Report "DruckAlle" nicht gefunden wird.

       

      Hier mal der code vom Button:

       

      delete DRUCKZEITEN;
      let me := this;
      let myView := if 'Anfang Datum' and 'Ende Datum' then
              let xAnf := 'Anfang Datum';
              let xEnd := 'Ende Datum';
              select Zeiterfassung where Datum >= xAnf and Datum <= xEnd
          end;
      for i in myView do
          let newRec := (create DRUCKZEITEN);
          newRec.(KDMHOME := me);
          newRec.(Zeiterfassung := i)
      end;
      printRecord(this, "DruckAlle")

    • UweG
    • vor 2 Tagen
    • Gemeldet - anzeigen

    Wie Philipp schon beschrieb, muss bei Nutzung des Ninox eigenen Drucklayouts das Drucktemplate und die zugehörigen Druckdaten in einem Record einer Tabelle hinterlegt sein.

    Wenn du in einer Page ‚this‘ verwendest wird es nicht funktionieren, da ja auf der Page kein Drucklayout hinterlegt sein kann.

    Das Gleiche gilt für die zu druckenden Daten. Auch diese müssen in der selben Tabelle wo sich auch das Drucklayout befindet vorhanden sein.

    Da musst du über eine Verknüpfung dafür sorgen, das man an die entsprechenden Daten der Page vom dem Record der anderen Tabelle rankommt.

    Sinnvoll wäre eine eigene Tabelle dafür zu erstellen und die notwendigen Drucktemplates dort zu hinterlegen.

    Jeder neue Druckauftrag erzeugt dann einen neuen Recotd in dieser Tabelle, bei dem dann automatisch eine Verknüpfung zur Page erstellt wird und den Ausdruck in dem erzeugten Record ablegt. Und da gibt es Mittel und Wege um von woanders aus auf das erstellte Pdf zuzugreifen.

    • Heinrich Frey Maschinenbau GmbH
    • Christian_Rott
    • vor 2 Tagen
    • Gemeldet - anzeigen

    Danke Uwe und Philipp,

    ich habe es nun etwas anders gelöst und es funktioniert.

    Lösung für mich gut so.

    In der Tabelle Zeiterfassung habe ich zwei verschiedene Tabellenansichten gemacht die ich dann je nach Tag als pdf ausgebe.

    Code hierfür ist:

    if weekday(today()) = 0 then
        printTable("Zeiterfassung", "DruckWE")
    else
        printTable("Zeiterfassung", "Druck")
    end

Content aside

  • Status Answered
  • vor 2 TagenZuletzt aktiv
  • 6Antworten
  • 40Ansichten
  • 3 Folge bereits