Speichern einer erstellten PDF
Ninox Profile

Hallo,

bin leider nicht so geschickt mit dem Umgang mit der Eingabe der Anweisungen und hätte da noch einige Fragen.

sendEmail({

    from: "Deine.Mail@DeineDomain.tld",

    to: EMailKunde,

    cc: ""Deine.Mail@DeineDomain.tld",

    subject: "Rechnung " + DateiAnhang,

    text: "Moin, anbei meine Rechnung " + DateiAnhang + ". Noch mehr Text",

    attachments: DateiAnhang

    })

Das “DateiAnhang“ ist durch was zu ersetzen? Woher weiß die Anweisung, welchen Anhang, wenn mehrere vorhanden sind. 

Frage zur Abfragefunktion, ob die Mail versendet werden soll... wie bewerkstellige ich dieses?

 

mit bestem Dank

Ninox Profile

Ersetze DateiAnhang durch 

–––
file(Datensatz, Dateiname) 
...also etwa:
file(this, "mypdf.pdf")
–––

Birger

Ninox Profile

Nun habe ich die in die Produktivdatenbank eingebaut die Funktion mit dem automatischen abspeichern der PDF. Wird korrekt benannt und angehangen. Super. Vielen Dank an alle die geholfen haben.

Da man nun hungrig auf mehr wird tüftel ich grad an einer Erweiterung:

Ich habe in meiner Datenbank mehrere Karteireiter mit jeweils etlichen Feldern. Alles was unter einem Karteireiter steht wird auf einem dazugehörigen Drucklayout ausgedruckt. Ich habe es nun geschafft auch diese PDF Seiten mit ein und dem selben Button zu generieren, zu benennen und ebenfalls anzuhängen.

Nun mein Problem: Nicht immer fülle ich die Felder dieser Karteireiter auch aus. Je nach Anwendungsfall mal nur einen, mal mehrere. Wenn ich nun aber keine Daten bei einigen Karteireitern in die Felder eingebe generiert er natürlich trotzdem ein oder mehrere PDF (ohne Daten drin). Ich hoffe es ist verständlich was ich meine.

Wie kann ich es anstellen, dass er nur dann das PDF generiert und anhängt wenn mind. auch ein Feld in dem Karteireiter ausgefüllt wurde?

 

Ninox Profile

Hallo, 

das könntest du mit einer "if - then" -Klammer um die PDF-Erstellungsanweisung lösen. In der if - Bedingung dann meherer oder (or) für die Abfrage der einzelnen Felder. 

Gruß, Jörg

Ninox Profile

OK. Wenn mir nun Programmierung liegen würde, würde ich das machen :-)

Leider kann ich ohne Beispielzeile immer nichts zustande bringen. 

 

Meine Testfunktion ist die folgende:

importFile(this, printAndSaveRecord(this, "Mein-Drucklayout-01"), "MeinePDF01Bez." + AuftragsNr + ".pdf") + importFile(this, printAndSaveRecord(this, "Mein-Drucklayout-02"), "MeinePDF02Bez" + AuftragsNr + ".pdf")

 

 

Drucklayout-02 wäre z.B. das PDF welches nur generiert und angehangen werden soll, wenn auch was ausgefüllt wurde was in diesem Layout enthalten ist.

Ninox Profile

Hallo,

das könnte dann so aussehen: 

 

if Feld1 or Feld3 or Feld then

importFile(this, printAndSaveRecord(this, "Mein-Drucklayout-01"), "MeinePDF01Bez." + AuftragsNr + ".pdf")

end;

if Feld 4 or Feld5 or Feld6 then

importFile(this, printAndSaveRecord(this, "Mein-Drucklayout-02"), "MeinePDF02Bez" + AuftragsNr + ".pdf")

end

 

Das bedeutet: Ist Feld1, Feld2 oder Feld3 ausgefüllt, dann drucke Layout-01, ist Feld4, Feld5 oder Feld6 ausgefüllt, drucke Layout-02.

Dabei reicht es, einfach den Feldnamen anzugeben, um prüfen zu lassen ob es einen Inhalt hat. Umgekehrt würde es heißen:

 

if Feld1 = null ....

 

, wenn man als Bedingung angeben wollte, dass Feld1 leer sein muss.

Gruß, Jörg

 

Ninox Profile

Vielen Dank Jörg.

Nun habe ich schon mehr begriffen :-) Vielleicht sollte es ein Buch für Dummies wie mich mit den ganzen Funktionen und Formeln dieser Art geben. Ich scheitere oft an der Syntax weil ich nie sicher bin wie ich es eingeben soll etc.

Ich werde es gleich nachher einmal ausprobieren. Danke nochmals!

R

Super Funktion, die einmal mehr zeigt wie einfach und mächtig Ninox ist. 

 

Ich nutze die .pdf Erstellen, Ablegen, Öffnen und speichern wie folgt in vielerlei Hinsicht und suche noch ein paar Erweiterungen:

let myLayout := "Anschreiben";
let myFilename := "Anschreiben " + Bezeichnung + ".pdf";
let myTempFile := printAndSaveRecord(this, myLayout);
importFile(this, myTempFile, myFilename)

 

Folgende Funktionen werden gesucht:

1. Wie kann ich den Ablage-Ort festlegen? Ich habe unterschiedliche Layouts, die sich im Lauf der Zeit aktualisieren / erneuern und die alte Datei an selber Stelle (eigenes Datei Feld) überschreiben sollen.

2. Wie kann ich die erstellte .pdf nach der Ablage auch direkt (in Preview) öffnen, so dass ich diese gleich drucken kann?

3.Wie kann ich den Button zusätzlich mit einer Funktion belegen, die einen neuen Eintrag in einer Verknüpften Tabelle erstellt (soll quasi mein Warenausgang sein, diese Tabelle heißt "Produkte Handel").

4. Kann ich einen Button in meiner übergeordneten Tabelle erstellen, der mir die Funktionen auch für alle Kunden / Partner gesammelt ausführt, bei denen eine Voraussetzung erfüllt ist (zB Textfeld: Bevorzugt = "physisch")

 

Ich bin gespannt auf Euren Input und was sich davon realisieren lässt.

Vielen Dank schonmal, Reinhard

  

R

Habe gestern mit folgendem CODE die Punkte 2 und 3 programmieren können:

 

Status := 1;
let myLayout := "Anschreiben";
let myProdukt := Produkte;
let myStk := 'Stückzahl';
let myFilename := "Anschreiben " + Bezeichnung + ".pdf";
let myTempFile := printAndSaveRecord(this, myLayout);
importFile(this, myTempFile, myFilename);
printRecord(this, myTempFile);
let new := (create 'Produkte Handel');
new.(Produkt := myProdukt);
new.('Stück' := myStk);
new.('Gebucht am' := today());
new.(Info := "Bemusterung " + Typ);
new.(Versand := true);
new.(Versandtyp := 2);
'Produkte Handel' := new

 

Mir würde nun noch eine Option fehlen, .pdfs immer im selben Feld, das für den jeweiligen Button definiert wird zu speichern.

 

Weiter würde ich gerne in der Haupttabelle einen Button erstellen, der den Button in den Tabellen zeilen gesammelt für alle Einträge auslöst.

 

Danke für Eure Hilfe. Reinhard

Ninox Profile

Hallo Reinhard,

 

auf Dein mit importFile(this, myTempFile, myFilename); generiertes File kannst Du mit file(this, myFilename) zugreifen und somit auch Deinem Bildfeld mit z.B. 'Bildfeld' := file(this, myFilename) zuweisen. Zu beachten: das File wandert aus dem Datensatz-Anhang in das Bildfeld - ist in dem Bildfeld bereits ein anderes File hinterlegt, so wird dieses im Anhang quasi archiviert.

 

lg, Torsten

Reply