excel - 当 SQL Select 包含长度大于 100 的 nvarchar 列时,VBA 出现多步错误

标签 excel sql-server-ce vba

我编写了一个 Excel VB 应用程序,用于访问并在需要时修改 SQLCE 数据库。这是 vba 中的连接字符串:

dbConnectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=C:\sitsDB.sdf;"

我几乎完全完成了该项目,除了我想扩展 SQLCE 数据库文件中的字段之一以允许存储更多字符之外,一切都运行良好。
该字段的数据类型为 nvarchar默认长度为 100(显然应该允许 50 个字符?)

打开的文本框需要该字段,我至少想在其中存储 200 个字符。

当我更改 nvarchar 的长度时,我在 Microsoft Visual Basic 2010 Express 中创建了初始数据库。字段大于 100 当我的 SQL SELECT 时,我收到以下错误语句运行:

Run-time error '-2147217887 (80040e21)': Multiple-step operation generated errors. Check each status Value.

以下是 VBA 中的 SQL 语句:

With rsResults
    .Source = "SELECT * FROM Incidents WHERE Number = " & number
    Set .ActiveConnection = dbConnection
    .CursorLocation = adUseClient
    .CursorType = adOpenStatic
    .Open
End With

错误发生在.Open上线。

我可以更改 SELECT * FROM仅选择某些列,消除长度大于 100 的字段,一切都会按预期工作。

所以,一个字段的长度大于100肯定是事实。 如果我将该字段的长度恢复为 100,一切都会正常工作...

我对 .CursorLocation 不太了解和.CursorType我在那里使用的功能。我通过例子学习,这就是我首先找到的例子。

任何帮助将不胜感激!

最佳答案

在写下这个解释时,我意识到我还没有尝试过一些事情。也就是说,我没有乱搞 .CursorLocation.CursorType。事实证明,将 .CursorLocation 更改为 .CursorLocation = adUseServer 将解决我所看到的问题。我现在可以使用 nvarchar 的长度一直到 4000。

关于excel - 当 SQL Select 包含长度大于 100 的 nvarchar 列时,VBA 出现多步错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13500260/

相关文章:

excel - 使用Internet Explorer打开JasperReports Server/Tomcat的文件内容资源(Excel)将内联显示二进制数据

excel - 根据 excel 中 sheet1 中的行数在 sheet2 中创建列

Excel Vba 转 Word : How to write a pagenumber into a textframe?

excel - 将整数和整数数组传递给 VBA 函数

Excel VBA结束选择没有选择案例

sql-server-2005 - 将 SQL 数据库 (mdf) 迁移到 SQL Compact Edition (sdf) 的方法

sql - SQL Compact Edition 是否支持聚集索引?

sql-server-ce - Webmatrix 3 Sql Server CE 4 崩溃了吗?

excel - 双 "select row based on value in column"

excel - 根据另一列的值将一列中的值乘以 100,引用表