我有一个小方法,试图枚举Word文档中的字段.很长一段时间以来,我不得不做这种事情,现在我不记得如何正确地做到这一点.
下面的代码是使用OleVariants,我已经尝试了一段时间,谷歌搜索没有提出德尔福解决方案.任何人都可以建议如何解决这个问题?
代码的最终目标是识别特定类型的字段并使用该信息来删除所述字段.
procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
begin
If OpenDialog1.Execute Then
Begin
WordApp := CreateOLEObject( 'Word.Application' );
WordDocument := WordApp.Documents.Open( OpenDialog1.FileName, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam );
for I := 0 to WordDocument.Fields.Count - 1 do
begin
ShowMessage( WordDocument.Fields[ I ].Code );
end;
End;
end;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我知道这段代码让Word打开了所有这些.
这暂时还不错,我现在主要担心的是让事情发挥作用.
我也尝试将循环更改为:
for I := 0 to WordDocument.Fields.Count -1 do
begin
ShowMessage( WordDocument.Fields.Item( I ).Code );
end;
Run Code Online (Sandbox Code Playgroud)
但没有奏效,告诉我"物品"不是收藏品的一部分.
我已经没想完了.
我需要在存储过程中为动态TSQL语句用单引号括起几个字符串.我绝对肯定不会传递任何单引号值(这些字段在应用程序级别不是"可编辑的",只能选择)因此我的要求在这方面相当温和.
我想出的解决方案很简单但很好:
声明@SingleQuote nvarchar(1)
选择@SingleQuote =''''
然后在整个地方使用它:-)
但是,如果有更好的方法,即一个SQL函数就像newid()那样生成一个新的GUID,那将会很有帮助.
那我只需要做一些事情:
选择..... SingleQuotes(MyField的)....
有什么建议吗?
感谢您抽出宝贵时间阅读本文,
安德鲁