我正在將一箇舊的VB應用程序轉換爲C#。這是轉換的方法的一修整 - 向下(日誌,錯誤處理等除去):C#Fields.Update不工作
Word.Document oDoc = new Word.Document();
Word.Application oWord = null;
//'Use Passed Word Application ELSE Open new Word Application.
oWord = WordInstance ?? new Word.Application { Visible = false };
//'Call Property Updating Method
oWord = UpdateProperties(ref oWord, ref oDoc);
//'Refresh All Fields
try { oDoc.Fields.Update(); } catch { }
//'Print
oWord.PrintOut(
Background: false,
Copies: QueueDetail.Copies
);
的文件被與已經CustomeDocumentProperties添加到它們作爲先前步驟(的foreach行中的數據庫表的工作=>添加CustomDocumentProperty)。
UpdateProperties()
從數據庫中提取數據並更新這些CustomDocumentProperties(foreach中的CustomProperty => Set Value from Database)。
從我可以看到的屬性正在更新。我可以做一個foreach
打印所有的自定義屬性和Name/Value
的匹配達到預期的。我可以保存文檔,並更新字段,也可以通過右鍵單擊=>更新字段進行更新。
問題是,似乎只有一半的領域通過oDoc.Fields.Update();
得到更新。 (因此需要保存文件並右鍵點擊update field
來驗證數據實際上是在現場)。
因此,一些文件上這樣的,其中每個塊爲場:
LASTNAME, FIRSTNAME MI
ADDRESS
CITY, STATE ZIP
HOMEPHONE
獲取更新爲:
Public, John Q
1234 Never Never Lane
CITY, STATE ZIP
HOMEPHONE
在前面的程序,這似乎是沒有問題的工作。到目前爲止,其他一切都是我可以用最少的問題解決的(VB到C#主要更改以及Log4net記錄的更改)。
如何解決爲什麼Fields.Update()
未更新所有字段?它在try/catch中,並且不會引發任何錯誤。之前的所有(領域在他們的數據)後(打印文檔與未更新的字段)似乎罰款...)