0

Warnung für längeres PDF Rendern

Moin lieber Ninox Community

ich möchte eine embedded View als PDF drucken .. ich hier den üblichen weg über eine temporäre PrintTabelle ... allerdings dauert es ganz schön. Beide Macs zeigen hier den Mac Ball des Todes ... hatte erst eine Endlosschleife in der for do im Verdacht. Mit etwas Geduld öffnet sich die PDF aber...

nun würde ich gern eine "Warnung" wären des Vorgangs ausgeben.... leider erscheint ein vorgeschalteter alert erst mit der PDF.

Ideen? 

hier mein code

alert("print is in progress .... please wait!");
let my := this.Nr;
let xYear := Year;
let xTotal := Total;
let n := (create printVKMA_pdf);
n.(Year := xYear);
n.(Total := xTotal);
for i in (select DATE)[JOB.CTRL_Progress != 1 and Type != 5 and year(Date) = xYear] do
let j := (create itemsAA);
j.(Date := i.Date);
j.(Production := i.JOB.PRODUCTION.Production);
j.(City := i.City);
j.(Venue := i.Venue);
j.(Country := i.Country);
j.('Full Day (24h)' := i.'Full Day (24h)');
j.('overnight rate' := i.'overnight rate');
j.(Departure := i.Departure);
j.(Arrival := i.Arrival);
j.(Rate := i.Rate);
j.(printAA := n)
end;
printRecord(record(printVKMA_pdf,number(n)), "PES_VKMA");
delete (select printVKMA_pdf)

 

12 Antworten

null
    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Schalte doch einen Dialog mit "OK, Ab dafür" Button davor...

     

    let myAntwort := dialog("ACHTUNG KAFFEEPAUSE!", "Dieser Vorgang kann eine Weile dauern. Trotzdem starten?", ["Ja, ab dafür", "Nee, lass mal"]);
    if myAntwort = "Ja" then

    let my := this.Nr;
    let xYear := Year;
    let xTotal := Total;
    let n := (create printVKMA_pdf);
    n.(Year := xYear);
    n.(Total := xTotal);
    for i in (select DATE)[JOB.CTRL_Progress != 1 and Type != 5 and year(Date) = xYear] do
    let j := (create itemsAA);
    j.(Date := i.Date);
    j.(Production := i.JOB.PRODUCTION.Production);
    j.(City := i.City);
    j.(Venue := i.Venue);
    j.(Country := i.Country);
    j.('Full Day (24h)' := i.'Full Day (24h)');
    j.('overnight rate' := i.'overnight rate');
    j.(Departure := i.Departure);
    j.(Arrival := i.Arrival);
    j.(Rate := i.Rate);
    j.(printAA := n)
    end;
    printRecord(record(printVKMA_pdf,number(n)), "PES_VKMA");
    delete (select printVKMA_pdf)

    end

    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    bei if myAntwort = muss dann natürlich "Ja, ab dafür" rein oder du machst ein if myAntwort like "Ja"

    • Dan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    genau das war auch der einzige Ausweg, der mir eingefallen ist... ich fand es nur komisch, dass alert erst ausgeführt wird, wenn das ganze Script durchgelaufen ist. Das Pdf schreiben dauert hier echt lange.... mein Altes MacBook fängt bei einer Liste von nicht mal 30 Datensätzen richtig an zu kochen CPU 100% und Lüfter Vollgas), nach ein paar Minuten denkst du, der Kaffee kocht über und die Aktivitätsanzeige sagt NX reagiert nicht. Bin dann an den iMac und da gings etwas schneller. Dachte wirklich, ne Endlosschleife gebaut zu haben.  Leider soll die DB später eine Verpflegungskostenmehraufwandstabelle für ein Jahr ausspucken, mit ca 200 Datensaetzen, Da muss ich wohl für ne Stunde ins Kühlhaus ;) 

    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Du generierst EIN PDF richtig? Hast Du mal versucht innerhalb des Druckeditors ein Formelfeld anzulegen und dir darin die 

    for i in (select DATE)[JOB.CTRL_Progress != 1 and Type != 5 and year(Date) = xYear] do

    Schleife auszuführen... ohne temporäre Tabelle?

    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Schau mal, ich habe hier eine simple Messeliste. Innerhalb des Druckeditors im Layout sucht ein Formelfeld nach allen Teilnehmern in einer for p Schleife und darin wiederum nach allen Weinen eines Teilnehmers in einer for i Schleife...

     

    Da der Druckeditor leider nicht so flexibel in der Gestaltung ist, habe ich diese Felder auch noch teilweise mehrfach dupliziert und unterschiedlich formatiert (Farbe, fett usw...). Die Teile welche nicht benötigt werden, habe ich durch "leer" ersetzt oder durch einen Absatz - damit der Zeilenlauf gleich bleibt. Leider muss man etwas fummeln wenn man Fettschrift benutzt oder andere Schriftgrößen, da sich der Zeilenabstand im finalen PDF ändert... 

     

    Aber es geht. Hier die Druckansicht:

    Bildschirmfoto 2020-08-14 um 09.36.47

     

    Und hier das erzeugte PDF:

     

    Bildschirmfoto 2020-08-14 um 09.37.33

      • Arwin_Dustdar.1
      • vor 11 Monaten
      • Gemeldet - anzeigen

       bin hier gerade auf deinen Post gestoßen und ich glaube, das ist so etwas Ähnliches, wie das was mir vorschwebt.

      Ich will aus einer Tabelle per 'select' Daten in einer Liste ausgeben. Konkret handelt es sich um Warenwerte des Lagerbestandes.

      Ich habe eine Tabelle 'Lagerbewegungen', die enthält Verknüpfungen zu 'Produkte' und 'Lager' und eben eine 'Menge' je Datensatz. In der Tabelle 'Produkte' ist dann noch ein 'Bezugspreis' hinterlegt.

      Ich müsste nun in einem Druckformular einschränken

      - Datensätze aus 'Lagerbewegungen' eines Zeitraums, eines bestimmten Lagers, und für alle Produkt, die positiven Bestand (Summe aus Ein/Abgänge im Feld 'Menge') haben

      und diese dann als "Liste" mit Summen ausgeben, also etwa

      SKU | Menge | Bezugspreis | Gesamtmenge

      In meiner Vorstellung sieht das so ähnlich aus, wie deine Messeliste hier. Nun schreibst du, du hast dazu ein Formelfeld benutzt. 

      Kannst du das noch ein bisschen genauer erläutern?

      Ist die gesamte Tabelle ein Formelfeld? Wenn ja, wie macht man das?

      Oder wie macht man das? Ich hatte jetzt erst überlegt, ich erstelle eine JSON und gebe das ganze an carbone.io aber eventuell geht es ja auch simpel mit Boardmitteln?

      Danke schon mal.

    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Das Formular ist bei klick auf das Druckersymbol gefühlt SOFORT da... Vielleicht lösst sich das für deine Anwendung auch so umsetzen, ohne erstellen einer temporären Tabelle

    • Dan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wenn ich erlich bis, kann ich aus dem Stand gar nicht sagen, warum ich diesen Umweg gehen "musste" ... am Ende stammt die Idee von Nioxus .... ich werden deinen Weg mal durchdenken, denn eigentlich sollte meine PDF wesentlich weniger aufwendig .... ist ja nur fürs Finanzamt und muss nicht fanzy aussehen. Ich gehe das mal später an .... danke für den Input .... finde super, wie sich hier Leute unterschiedlichsten Levels gegenseitig helfen .... manchmal sieht man Wälder vor lauter Bäumen nicht....

    • Dan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wenn ich erlich bis, kann ich aus dem Stand gar nicht sagen, warum ich diesen Umweg gehen "musste" ... am Ende stammt die Idee von Nioxus .... ich werden deinen Weg mal durchdenken, denn eigentlich sollte meine PDF wesentlich weniger aufwendig .... ist ja nur fürs Finanzamt und muss nicht fanzy aussehen. Ich gehe das mal später an .... danke für den Input .... finde super, wie sich hier Leute unterschiedlichsten Levels gegenseitig helfen .... manchmal sieht man Wälder vor lauter Bäumen nicht....

    • T_Bartzsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ja, leider ist zum einen die Ninox Dokumentation nicht so umfangreich, zum anderen ist das ganze System aber auch eine total offene Platform und daher sehr individuell - auch die herangehensweisen. Das Forum mit allen Teilnehmern ist echt super hilfreich, gäbe es das nicht, hätte ich ninox wahrscheinlich nach 14 Tagen "in die Ecke geworfen"... aber wenn sich der Knoten einmal löst ist es echt genial.

    • Dan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ich liebe es, ist die erste DB Plattform wo ich genau dieses Wegwerfen nicht gemacht habe, wie zB Filemaker oder Access ... 

    • Pyromixer.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Zitat: "aber wenn sich der Knoten einmal löst ist es echt genial."

     

    Bis der nächste Knoten kommt.... ;-)

     

    Ohne die Community wäre die Software nahezu unbrauchbar.... Ist aber nur meine schlichte Meinung. Die Doku ist nicht wirklich hilfreich, der Support "ab Werk" eher gewöhnungsbedürftig. Ich habe keine Zeit um ständig irgendwelche Webinaren zu folgen in denen mein konkretes Problem vielleicht, aber vielleicht auch gar nicht angesprochen wird. Oder Termine für irgendwelche Online Teamgeschichten.