2015-06-04 64 views
0

我的自动化邮件应用程序出现问题。该应用程序使用MS Word模板和MS Word数据源。我用下面的方法来创建数据源,并将其绑定到模板:MailMerge查询字符串超过255个字符

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

当Word执行OPENDATASOURCE方法,它加到将SQLStatement和SQLStatement1参数值来创建一个单一的查询语句。用一个简单的例子,如果你的查询需要是

SELECT * FROM mytable 

然后,你可以例如设置

SQLStatement:="SELECT *", SQLStatement1:=" FROM mytable" 

即你需要确保显著空间是在连接字符串。

总查询长度可以根据数据源的不同而不同的限制。 AFAICR的某些源类型/连接方法仍然有255个字符的限制。但我想你会得到Word允许的.mdb/.accdb源文件的完整511。

另一种使用支持​​查询/视图的数据源的方法可能是在数据库中创建查询或视图,并将其用作数据源。

+0

感谢您的回应!我可能完全不了解我的问题。当我的应用程序执行Mailmerge.CreateDataSource方法时,它会给我提供字符限制错误。我为此设置的唯一参数是源路径和标题列表,之后填入值。另外我目前没有手动设置sqlstatement参数。发生错误是因为我在标题列表中有太多不同的值? – Brian03

+0

我的不好,真的。 AFAIK,CreateDataSource只允许您创建平面数据文件(例如,Windows Word的新版本中的.docx格式)。在某些Word参数中使用字符串长度限制的字符限制错误。您的查询条件导致长查询的事实可能不是问题的根源。使用CreateDataSource的FWIW,您可以使用较短的字段名称来创建更多字段(如果Word创建.docx数据源,则可以使用最多64个字段)。对于更灵活的数据源,请尝试使用ADO和/或ADOX创建.mdb/.accdb,然后使用OpenDataSource进行连接。 –

+0

听起来不错,感谢您的帮助! – Brian03

相关问题