[gelöst]Fehlende Datenquelle, Word-Dokumente aus Aktivitäten

13. April 2015 15:40

Update: Das Problem ist mittlerweile gelöst, siehe unten.

Hallo Zusammen,

ich habe ein kleines Problem mit Aktivitäten, bzw. der Art und Weise, wie NAV und/oder Word die Aktivitätenvorlagen mit den eigentlichen Kontaktdaten verknüpfen.
Soweit ich es nachvollziehen kann wird beim Erstellen, bzw. Bearbeiten einer Aktivität das Hauptdokument (aus der Aktivitätenvorlage) mit einer temporären Datenquelle verknüpft, in der die jeweiligen Daten für die Serienbrieffelder übertragen werden. Dies geschieht über die Codeunit 5054 WordManagement und ist absolut einleuchtend.

Das Problem besteht nun darin, dass wir die Word-Dokumente auch in einer externen Archivierungssoftware ablegen müssen. Dies geschieht über ein Add-In aus Word heraus, das ich nicht modifizieren kann. Beim erneuten Öffnen der Archivierten Word-Dokumente (nicht aus NAV heraus) bekommen wir nun folgende Fehlermeldung:

Dokument.docx ist ein Seriendruck-Hauptdokument. Word konnte die Datenquelle [...] nicht finden.


Der Grund der Fehlermeldung ist absolut klar, da NAV die Datenquelle nach der Bearbeitung richtigerweise wieder löscht. Da Word den letzten Datensatz der Datenquelle anscheinend mit dem Dokument speichert ist Datenverlust an dieser Stelle für uns kein Problem, allerdings sind unsere Kollegen mittlerweile ein wenig von der Fehlermeldung genervt, daher suche ich verzweifelt nach einer möglichkeit diese Fehlermeldung zu umgehen.

Ein möglicher Workaround besteht darin die Funktion WordHandler() der Codeunit 5054 WordManagement anzupassen und an geeigneter Stelle folgenden Code aufzurufen, um das Word-Dokument als normales Dokument anstatt als Serienbrief zu speichern.
Code:
WordDocument.MailMerge.MainDocumentType := -1;  // -1 = wdNotAMergeDocument


Dadurch besteht allerdings das große Problem das unter Umständen nicht mehr die aktuellsten Kontaktdaten für eine Aktivität genutzt werden, wenn diese über einen längeren Zeitraum bearbeitet wird.

Leider gehen mir die Ideen an dieser Stelle aus, bzw. wären diese für den Anwender nicht komfortabler als die Fehlermeldung mit einem Klick zu ignorieren, daher hoffe ich, dass von Euch jemand noch eine Eingebung hat die Fehlermeldung zu verbannen, ohne die Serienbriefeigenschaften negativ zu beeinflussen.

Vielen Dank im Voraus!

Liebe Grüße
Andreas
Zuletzt geändert von Botskiz am 21. April 2015 09:50, insgesamt 1-mal geändert.

Re: Fehlende Datenquelle in Word-Dokumenten aus Aktivitäten

13. April 2015 17:03

Hallo Andreas,

kann hierfür nicht im Word der Serienbrief aufgelöst und dann erst ins Archiv gelegt werden?

Gruß

Michael

Re: Fehlende Datenquelle in Word-Dokumenten aus Aktivitäten

14. April 2015 09:24

Hallo Michael,

ich stimme dir da vollkommen zu, leider möchten die Kollegen aber genau diesen einen Klick vermeiden.

Ich bin allerdings gerade darauf gestoßen, dass die Funktion MailMerge.OpenDataSource aus Microsoft.Office.Interop.Word einen Parameter LinkToSource besitzt, der im MSDN wie folgt beschrieben wird.

Optional Object. True to perform the query specified by Connection and SQLStatement each time the main document is opened.

https://msdn.microsoft.com/en-us/librar ... ource.aspx

Das könnte evtl. genau das sein, was ich suche. Kennt sich vielleicht jemand genauer mit den Parametern aus?

Ggf. ist es dann möglich in der Codeunit 5054 WordManagement die Aufrufe von
Code:
WordHelper.CallMailMergeOpenDataSource(WordDocument,MergeFileName,ParamInt)


durch Aufrufe in der Art
Code:
WordDocument.MailMerge.OpenDataSource(MergeFileName, ParamInt, [...])

zu ersetzen. Vorrausgesetzt natürlich der LinkToSource Parameter funktioniert so, wie ich es vermute, und es lässt sich irgendwie herausfinden, wie NAV die anderen Parameter über den WordHelper gesetzt hat.

Re: Fehlende Datenquelle in Word-Dokumenten aus Aktivitäten

21. April 2015 09:49

Nach weiterer Recherche hat sich herrausgestellt, dass mein erster Ansatz tatsächlich der Richtige war.

Ich habe also die Funktion WordHandler([...]) in der Codeunit 5054 WordManagement nach der Zeile
Code:
WordDocument.Application.Activate;


um folgenden Code erweitert.
Code:
WordDocument.MailMerge.MainDocumentType := -1;  // -1 = wdNotAMergeDocument


Anders, als ich vermutet hatte, scheint die Information darüber, ob es sich um einen Serienbrief handelt oder nicht, nicht komplett verloren zu gehen, sodass auch beim nachträglichen Bearbeiten einer Aktivität die aktuellsten Kontaktdaten aus NAV richtig an das Dokument übertragen werden. Es ist sogar so, dass NAV beim Bearbeiten einer Aktivität, vor dem Schließen von Word den Dokumenttyp auf "Normales Dokument" festlegt, und beim Laden wieder erneut mit Serienbriefinformationen verknüpft.

Schöne Grüße
Andreas.