Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: bahasu am März 27, 2012, 19:07:07

Titel: Access Bericht in Outlook ausgeben
Beitrag von: bahasu am März 27, 2012, 19:07:07
Hallo,


mit           DoCmd.SendObject acReport, "Mein_Bericht", acFormatTXT, Me.Email_Person.Column(1), "", "", "Test", MessageText, True
bekomme ich den access-Bericht zwar in den Anhang, ich will den Bericht aber im Outlook-message-Teil (also dort, wo "Sehr gegehrte Damen und Herren.... MfG" steht) ausgeben.

Wenn es eine Text-Datei wäre, hätte ich kein Problem deren Inhalt mit Hilfe der Variable "MessageText" an der gewünschten Stelle auszugeben.
Wie bringe ich aber den Bericht dorthin?

Gibt es dafür einen Befehl, API-Aufruf ...?

Möglich Lösungsvariante (orientiert sich an einem manuellen Vorgehen mit Copy und Paste):
1. Bericht in eine Word-Datei lenken (dafür habe ich Routinen)
2. Inhalt der Word-Datei in den Zwischenspeicher bringen (wie geht das?)
3. Inhalt des Zwischenspeichers in die obige MessageText-Variable bringen (wie komme ich an den Zwischenspeicher?)

Welche Alternativen gibt es ansonsten?

Harald
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: ebs17 am März 27, 2012, 19:15:31
Wenn sich Dein Bericht als Textdatei ausgeben lässt, ist er sicher einfach gestrickt. Da würde ich einfach aus der Datenherkunft des Berichtes einen Text erstellen (siehe SQLListe, ConcatVar oder ähnliche Lösungen) und diesen in das Argument Nachricht einbauen.

MfGA
ebs
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: bahasu am März 27, 2012, 19:39:59
Hi,

wie bringe ich den Bericht in eine Text-Form?
Sind schließlich auch noch Fett-Formatierungen, Logos und andere "Unpässlichkeiten" drin.

Harald
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: DF6GL am März 27, 2012, 20:40:02
Hallo,


quick & dirty:

Dim txt As String, txtLine As String, LU As Long


DoCmd.OutputTo acOutputReport, "rptDeinReport", acFormatTXT, "c:\DeinReport.txt"
LU = FreeFile
Open "c:\Deinreport.txt" For Input As LU

Do Until EOF(LU)
Line Input #LU, txtLine
txt = txt & txtLine & vbCrLf
Loop
Close LU
DoCmd.SendObject , , , "maximini@minimuster.max", , , "HalliHallo", txt, True




Formatierung (Fett, Font, Schriftgröße, Bilder/Graphiken ) ist aber nich.....


wenn  Formatierungen, geht das nur über HTML-Datei-Format und HTML-Modus (BodyHTML) des Email-Programms.
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: ebs17 am März 27, 2012, 20:45:51
Plaintext kennt dann aber keine Formatierungen oder gar Bilder.

Dann müsstest Du auf Outlook-Automation umsteigen. Dort ist statt Body auch HTMLBody als Maileigenschaft verfügbar, und Du könntest Deinen Text als HTML-Text erstellen und einfügen - ist dann etwas aufwändiger.

MfGA
ebs
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: bahasu am März 28, 2012, 10:13:17
Hallo,

Danke für "HTMLBody": War ein guter Hinweis, da ich jetzt den Bericht in Outlook habe.

Jetzt taucht ein neues Problem auf:
Bei einem Bericht mit mehr als einer Seite erscheint am Ende der Email: "Erster Vorheriger Nächster Letzter" mit dem Hinweis, dass man per strg und Mausklick dorthin springen kann.

Das erste Negative ist, dass das Springen gar nicht funktioniert:
   Ich erhalte die Meldung: "Die Adresse dieser Webseite ist unzulässig. Überprüfen Sie die Adresse und versuchen Sie es erneut."

Das zweite Negative ist, dass überhaupt solch ein Durchzappen durch einen mehrseitigen Report vorgesehen ist.
Meine Lösung, die Seiten-Vorgabe im Bericht zu erhöhen, scheitert daran, dass access 2003 keine Seitenlänge größer als 57,79 cm (DIN A2) akzeptiert.

Frage: Wie kann ich erreichen, dass der Bericht ohne "Erster Vorheriger Nächster Letzter" im Email-html-Body erscheint?

Harald
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: DF6GL am März 28, 2012, 10:33:32
Hallo,

Du hast vermutlich mit acFormatHTML den Bericht exportiert....


Dabei wird für jede Berichts-Seite eine separate HTML-Datei angelegt, die diese Navi-Links enthalten. Diesen Block:

<p class=MsoNormal><span style='mso-field-code:" HYPERLINK \0022\0022 "'><span
class=MsoHyperlink>Erster</span></span> <span style='mso-field-code:" HYPERLINK \0022\0022 "'><span
class=MsoHyperlink>Vorheriger</span></span> <a
href="../../../../../../../testreportSeite2.htm">Nächster</a> <a
href="../../../../../../../testreportSeite6.htm">Letzter</a></p>


mußt Du halt aus den einzelnen Dateien ausschneiden und danach alle HTML-Dateien in den HTMLBody einfügen...
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: bahasu am März 28, 2012, 15:52:01
Zitat von: DF6GL am März 28, 2012, 10:33:32
<p class=MsoNormal><span style='mso-field-code:" HYPERLINK \0022\0022 "'><span
class=MsoHyperlink>Erster</span></span> <span style='mso-field-code:" HYPERLINK \0022\0022 "'><span
class=MsoHyperlink>Vorheriger</span></span> <a
href="../../../../../../../testreportSeite2.htm">Nächster</a> <a
href="../../../../../../../testreportSeite6.htm">Letzter</a></p>

Hallo Franz,

wenn ich den importierten Text bis zum Auftreten von ">Erster<" {s.o.} abschneide und mit den anderen Dateien verkette, ist das Ergebnis ok. Danke.

Da ich mich mit html nicht auskenne, noch eine Frage:
Muss ich den gesamten obigen Teil in meinem importierten Text suchen, oder reicht mein Abschneiden bei ">Erster<" aus?
Wenn ich im importierten Text mehr als ">Erster<" suche, hatte ich nichts zum Abschneiden gefunden.
Wie unterscheide ich aber, den Begriff ">Erster<" in der Navigation und wenn er auch im normalen Bericht vorkommt?

Harald
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: DF6GL am März 28, 2012, 16:31:28
Hallo,

ich würde den ganzen Text innerhalb des <p>-Tags ausschneiden. Schau Dir halt die einzelnen Seiten an und suche die Unterschiede, damit Du alle Möglichkeiten ausschneiden kannst.

Es dürfte doch nur 3 geben:

Erste Seite
Zwischenseiten
Letzte Seite
Titel: Re: Access Bericht in Outlook ausgeben
Beitrag von: bahasu am März 28, 2012, 18:17:04
Hallo Franz,

danke.
Bislang reichte es, in allen erstellten html-Dateien (entsprechend Seite 1 bis n aus dem Bericht) den Suchbegriff auf ">Erster<" festzulegen.
Die anderen mußte ich bislang nicht berücksichtigen.

Harald