我编写了一个 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/