我正在将一个旧的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中,并且不会引发任何错误。之前的所有(领域在他们的数据)后(打印文档与未更新的字段)似乎罚款...)