I’ve written an Excel VB application that accesses and, when needed, modifies an SQLCE database. Here’s the connection string in vba:
dbConnectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=C:\sitsDB.sdf;"
I’m almost completely done with the project and everything works great except I want to expand one of the fields in the SQLCE database file to allow for more characters to be store.
This field is of data type nvarchar and the default length is 100 (which apparently should allow 50 characters?)
The field is needed for an open text box that I would at least like to store 200 characters in.
I created the initial database in Microsoft Visual Basic 2010 Express, when I change the length of the nvarchar field to anything greater than 100 I get the following error when my SQL SELECT statement runs:
Run-time error ‘-2147217887 (80040e21)’:
Multiple-step operation generated errors. Check each status Value.
Here is the SQL statement in VBA:
With rsResults
.Source = "SELECT * FROM Incidents WHERE Number = " & number
Set .ActiveConnection = dbConnection
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.Open
End With
The error occurs on the .Open line.
I can change the SELECT * FROM to select only certain columns eliminating the field that has a length greater than 100 and everything will work as expected.
So, it is definitely the fact that one field has a length greater than 100.
If I return that field to having a length of 100 everything will work OK as well…
I don’t know much about the .CursorLocation and .CursorType functions that I’m using there. I learned by example and that’s the example I found first.
Any help would be greatly appreciated!
In writing this explanation out I realized that I hadn’t tried some things. Namely, I hadn’t fooled around with the
.CursorLocationand.CursorType. It turns out that changing.CursorLocationto.CursorLocation = adUseServerwill fix the problem I was seeing. I can now use length of nvarchar all the way up to 4000.