我的自动mailmerge应用程序出现问题。该应用程序使用MS Word模板和MS Word数据源。我使用以下方法创建数据源并将其绑定到模板:
expression.CreateDataSource(Name, PasswordDocument, WritePasswordDocument, HeaderRecord, MSQuery, SQLStatement, SQLStatement1, Connection, LinkToSource);
以下是此方法的MSDN页面,供参考:
https://msdn.microsoft.com/en-us/library/office/ff820730(v=office.15).aspx
一切正常,但是,我的一些Word模板有很多if语句,使查询字符串长度超过255个字符。当应用程序尝试执行createDataSource方法时,它会出错。
看起来MSDN页面显示了SQLStatement,SQLStatement1参数可用于将查询分解为两部分。所以,我的问题是如何利用这些参数?它们是可选的,目前我没有使用它们。
也许甚至有更好的解决方案?任何见解都会很棒!我已经做了很多网络搜索,但没有找到明确的解决方案。
如果有任何其他信息,请告诉我。需要更好地解决这个问题。
谢谢!
答案 0 :(得分:0)
当Word执行OpenDataSource方法时,它会连接SQLStatement和SQLStatement1参数值以创建单个查询语句。要使用简化示例,如果您的查询需要
SELECT * FROM mytable
然后你可以设置
SQLStatement:="SELECT *", SQLStatement1:=" FROM mytable"
即。你需要确保连接字符串中有重要的空格。
总查询长度的限制可能因数据源而异。 AFAICR一些源类型/连接方法仍然有255个字符的限制。但我认为你将获得Word允许使用.mdb / .accdb源码的全部511.
使用支持查询/视图的数据源执行此操作的另一种方法可能是在数据库中创建查询或视图,并将其用作数据源。