0

PDF Drucken und in neuen Datensatz zufügen

Hallo zusammen,

 

Ich habe eine Schulungsdatenbank  in der wir alle Onlineschulungen abhalten. Jetzt gibt es Schulungen die sich Wiederholen zu bestimnmten Zeiträumen. Damit aber die Dokumentation der bereits erledigten Schulung (Die sich nach betätigen eines Abschlussbuttons automatisch erneut auf den neuen termin setzt) erhalten bleibt habe ich eine Untertabelle als Dokumentationsverlauf und will dort den jew. Ausdruck der aktuellen Schulung ablegen.

-

Habs so versucht (Auszug aus der Funktion)

-
let DateiName := "Schulungsnachweis " + Beschreibung_Schulung + " " + Datum + ".pdf";
let DateiAnhang := importFile(this, printAndSaveRecord(this, "Schulungsnachweis"), DateiName);
-
let newDoku := (create Dokumentation);
let ma := Teilnehmerzuordnung.'Digitale Signatur';
newDoku.(Teilnehmer := "Teilgenommen: " + ma);
newDoku.(Erledigungsdatum := today());
newDoku.(ANHANG := DateiAnhang);
-

Im Anhang der Schulung taucht zwar dann das dokument auf aber nicht in der Untertabelle da ist zwar was drin aber beim öffnen gibts eine Fehlermeldung PDF kann nicht geöffnet werden.

-

Jemand eine Idee?

-

Danke vorab. Florian

13 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Florian:

    newDoku.(ANHANG := importFile(newDoku, printAndSaveRecord(this, "Schulungsnachweis"), DateiName))

     

    Leo

    • Susanne_Wittpoth
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Dazu habe ich auch noch eine Frage: Wenn das PDF mit der Mac-App erstellt wird und in das Bildfeld geschrieben wurde, läßt es sich mit einem Windows-Rechner nicht öffnen (Fehler: Failed to load). Hast du da auch eine Idee Leo?

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Genau das war die Meldung die ich erhalten hab aber am PC. "Failes to load PDF file". Aber beides vom Win PC. 

    Aber mit der änderung passts! Super vielen Dank mal wieder Leo! Bist der Beste :-)

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Oh warte muss mich korrigieren. in dem Fall druckt der ja nicht die die Schulung aus sondern die Daten aus der Doku Untertabelle. Da steht ja nicx drin ausser dem Datum und der Bilddatei selbst. Dass dieser Anhang in einem Bildfeld hinterlegt werden sollte hatte ich glaube ich nicht geschrieben)

     

    Danke vorab und lg

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Susanne,
    Das kann ich so nicht bestätigen. Habe gerade in der App das Bildfeld befüllt und im Web dann geöffnet. Funktioniert.

    @Florian

    normal sollte es gehen. Da ich den gesammten Code nicht sehe ist es schwierig die Diagnose zu erstellen. probier es mal so:

    ---

    let me:=this;
    let DateiName := "Schulungsnachweis " + Beschreibung_Schulung + " " + Datum + ".pdf";
    ...
    let newDoku := (create Dokumentation);
    let ma := Teilnehmerzuordnung.'Digitale Signatur';
    newDoku.(Teilnehmer := "Teilgenommen: " + ma);
    newDoku.(Erledigungsdatum := today());
    newDoku.(ANHANG := importFile(newDoku printAndSaveRecord(me, "Schulungsnachweis"), DateiName);

    ---

     

    Leo

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Dann kommt leider wieder das selbe raus wie vorher. Im Anhang der Schulungstabelle zwar enthalten, in der Dokumentations Untertabelle aber Falied to load.

    Hier https://1drv.ms/v/s!AmVHf75VpL7XhVnK47NPccpR9NP3?e=WwDoA2 ein kurzes Video wie das aussieht. lg

    • Susanne_Wittpoth
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @ Leo,

    hast du das Bild-Feld mit einem Windows-Rechner geöffnet oder im Web mit dem Mac?

    • Susanne_Wittpoth
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Florian,

    wenn du ein PDF generierst und es in einer anderen Tabelle speichern willst als in der, aus der es erstellt wurde, dann musst du es direkt mit dem import-Befehl in das Feld schreiben und nicht nur den Dateinamen dem Feld zuordnen (newDoku.(ANHANG := DateiAnhang);, so wie es Leo oben beschrieben hat, dann sollte es klappen.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Susanne,
    Windows, Chrome. Die Vorschabilder werden zwar nicht generiert aber das Dokument lässt sich normal öffnen.

    @Florian,

    Wie sieht die Formel beim Button aus?

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hatte die Formel ja übernommen. liegt es vielleicht daran, dass ich das so weit unten stehen hab? 

     

    let myID := this;
    let day := number(day(Datum));
    let month := number(month(Datum));
    let year := number(year(Datum));
    let datum := Datum;
    let DateiName := "Schulungsnachweis " + Schulung + " " + Datum + ".pdf";
    let file := importFile(myID, printAndSaveRecord(this, "Schulungsnachweis"), DateiName);
    switch Wiederholung = 1 do
    case Frequenz = 1:
    Datum := date(year, month, day + 'Häufigkeit')
    case Frequenz = 2:
    Datum := date(year, month, day + 'Häufigkeit' * 7)
    case Frequenz = 3 and day = 30:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3 and day = 31:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3 and month = 2 and day = 28:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3 and month = 2 and day = 29:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3:
    Datum := date(year, month + 'Häufigkeit', day)
    case Frequenz = 4 and day(Datum) = 30:
    Datum := date(year, month(Datum) + 1 + 3 * 'Häufigkeit', 0)
    case Frequenz = 4 and day(Datum) = 31:
    Datum := date(year, month(Datum) + 1 + 3 * 'Häufigkeit', 0)
    case Frequenz = 4:
    Datum := date(year, month + 3 * 'Häufigkeit', day)
    case Frequenz = 5:
    Datum := date(year + 'Häufigkeit', month, day)
    end;
    if Wiederholung != 1 then Datum := datum end;
    if Wiederholung != 1 then Status := 1 end;
    let x := Nr;
    let newDoku := (create Dokumentation);
    let ma := Teilnehmerzuordnung.'Digitale Signatur' + Teilnehmerzuordnung.'Antwort auf Frage 1' + Teilnehmerzuordnung.'Antwort auf Frage 2';
    let txt_einzel := "Erledigt";
    let txt_tag := "Erledigt - " + weekdayName(day(datum)) + " | KW " + format(week(datum), "00") + " | " + year(datum);
    let txt_woche := "Erledigt - KW " + format(week(datum), "00") + " | " + year(datum);
    let txt_monat := "Erledigt - " + monthName(month(datum)) + " | " + year(datum);
    let txt_quartal := "Erledigt - Q" + quarter(datum) + " | " + year(datum);
    let txt_jahr := "Erledigt - " + year(datum);
    let txt := if Wiederholung != 1 then
    txt_einzel
    else
    if Frequenz = 1 then
    txt_tag
    else
    if Frequenz = 2 then
    txt_woche
    else
    if Frequenz = 3 then
    txt_monat
    else
    if Frequenz = 4 then
    txt_quartal
    else
    if Frequenz = 5 then txt_jahr end
    end
    end
    end
    end
    end;
    newDoku .(Aufgaben := x);
    newDoku .(Teilnehmer := "Teilgenommen: " + ma);
    newDoku .(Erledigungsmeldung := txt);
    newDoku .(Erledigungsdatum := today());
    newDoku .(ANHANG := file);
    if Status != 1 then
    Teilnehmerzuordnung.(Teilgenommen := null)
    end;
    if Status != 1 then
    Teilnehmerzuordnung.('Digitale Signatur' := null)
    end;
    if Status != 1 then
    Teilnehmerzuordnung.('Datum teilgenommen' := null)
    end;
    'Digitale Signatur' := null

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ok ich hab jetzt nochmal die Formel von LEO eingefügt und die Reihenfolge etwas geändert. Jetzt klappt es. Ich hatte die Formel unten direkt bei newDoku.(ANHANG :=) angefügt da ging es komischweise nicht hab die Formel jetzt oben bei let file belassen und let newDoku direkt oben drüber geschoben.

     

    let myID := this;
    let day := number(day(Datum));
    let month := number(month(Datum));
    let year := number(year(Datum));
    let datum := Datum;
    let newDoku := (create Dokumentation);
    let DateiName := "Schulungsnachweis " + Schulung + " " + Datum + ".pdf";
    let file := importFile(newDoku, printAndSaveRecord(myID, "Schulungsnachweis"), DateiName);
    switch Wiederholung = 1 do
    case Frequenz = 1:
    Datum := date(year, month, day + 'Häufigkeit')
    case Frequenz = 2:
    Datum := date(year, month, day + 'Häufigkeit' * 7)
    case Frequenz = 3 and day = 30:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3 and day = 31:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3 and month = 2 and day = 28:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3 and month = 2 and day = 29:
    Datum := date(year, month + 'Häufigkeit' + 1, 0)
    case Frequenz = 3:
    Datum := date(year, month + 'Häufigkeit', day)
    case Frequenz = 4 and day(Datum) = 30:
    Datum := date(year, month(Datum) + 1 + 3 * 'Häufigkeit', 0)
    case Frequenz = 4 and day(Datum) = 31:
    Datum := date(year, month(Datum) + 1 + 3 * 'Häufigkeit', 0)
    case Frequenz = 4:
    Datum := date(year, month + 3 * 'Häufigkeit', day)
    case Frequenz = 5:
    Datum := date(year + 'Häufigkeit', month, day)
    end;
    if Wiederholung != 1 then Datum := datum end;
    if Wiederholung != 1 then Status := 1 end;
    let x := Nr;
    let ma := Teilnehmerzuordnung.'Digitale Signatur' + Teilnehmerzuordnung.'Antwort auf Frage 1' + Teilnehmerzuordnung.'Antwort auf Frage 2';
    let txt_einzel := "Erledigt";
    let txt_tag := "Erledigt - " + weekdayName(day(datum)) + " | KW " + format(week(datum), "00") + " | " + year(datum);
    let txt_woche := "Erledigt - KW " + format(week(datum), "00") + " | " + year(datum);
    let txt_monat := "Erledigt - " + monthName(month(datum)) + " | " + year(datum);
    let txt_quartal := "Erledigt - Q" + quarter(datum) + " | " + year(datum);
    let txt_jahr := "Erledigt - " + year(datum);
    let txt := if Wiederholung != 1 then
    txt_einzel
    else
    if Frequenz = 1 then
    txt_tag
    else
    if Frequenz = 2 then
    txt_woche
    else
    if Frequenz = 3 then
    txt_monat
    else
    if Frequenz = 4 then
    txt_quartal
    else
    if Frequenz = 5 then txt_jahr end
    end
    end
    end
    end
    end;
    newDoku.(Aufgaben := x);
    newDoku.(Teilnehmer := "Teilgenommen: " + ma);
    newDoku.(Erledigungsmeldung := txt);
    newDoku.(Erledigungsdatum := today());
    newDoku.(ANHANG := file);
    if Status != 1 then
    Teilnehmerzuordnung.(Teilgenommen := null)
    end;
    if Status != 1 then
    Teilnehmerzuordnung.('Digitale Signatur' := null)
    end;
    if Status != 1 then
    Teilnehmerzuordnung.('Datum teilgenommen' := null)
    end;
    'Digitale Signatur' := null

    • Florian_Wisser
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke an Euch beide! lg Florian

    • Susanne_Wittpoth
    • vor 3 Jahren
    • Gemeldet - anzeigen

    sehr gut, hauptsache es funktioniert! lg susanne

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 13Antworten
  • 836Ansichten