3

SQLCE データベースにアクセスし、必要に応じて変更する Excel VB アプリケーションを作成しました。vba の接続文字列は次のとおりです。

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

私はプロジェクトをほぼ完全に完了し、SQLCE データベース ファイルのフィールドの 1 つを拡張して、より多くの文字を格納できるようにすることを除いて、すべてがうまく機能します。
このフィールドはデータ型nvarcharで、デフォルトの長さは 100 です (どうやら 50 文字を許可する必要がありますか?)。

このフィールドは、少なくとも 200 文字を格納したい開いているテキスト ボックスに必要です。

Microsoft Visual Basic 2010 Express で初期データベースを作成しました。フィールドの長さをnvarchar100 より大きい値に変更すると、SQL SELECTステートメントの実行時に次のエラーが発生します。

実行時エラー '-2147217887 (80040e21)': 複数ステップの操作でエラーが発生しました。各ステータス値を確認してください。

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 を超えるフィールドを除外して特定の列のみを選択するように変更すると、すべてが期待どおりに機能します。

したがって、1 つのフィールドの長さが 100 を超えることは間違いありません。そのフィールドの長さを 100 に戻すと、すべてが正常に機能します...

.CursorLocationそこで使用しているおよび.CursorType関数についてはあまり知りません。私は例によって学びました。それが最初に見つけた例です。

どんな助けでも大歓迎です!

4

1 に答える 1

1

この説明を書いているうちに、私はいくつかのことを試していないことに気づきました。.CursorLocationつまり、私はandでだまされていませんでした.CursorType。に変更.CursorLocationする.CursorLocation = adUseServerと、私が見ていた問題が解決することがわかりました。nvarchar の長さを 4000 まで使用できるようになりました。

于 2012-11-21T19:37:52.130 に答える