MSAccess2003内から接続を記述してSQLCompact3.5データベースを開くことは可能ですか?MSAccess2003を使用してSQLCompact3.5データベースのデータを操作できるようにしたいと考えています。可能であれば、データベースを開くためにどのステートメントが使用されますか?
2 に答える
これは単なるアイデアであり、機能するかどうかは確認できませんが、SQL CompactにODBCドライバーがなく、リンクテーブルを作成できない場合は、SQLCompactのOLEDB接続文字列をソース接続文字列として使用できます。 Accessに保存されたQueryDefの それを機能させることができれば、テーブルごとに保存されたQueryDefを作成し、クエリがリンクされたテーブルであるかのようにそれらを利用できる可能性があります。
インストールしたOLEDBプロバイダーはJetだけであり、Accessはそれを好まないようであるため、自分のマシンでテストすることはできません。
しかし、試してみる価値があるかもしれません。Accessでこれを行った人がどこにも見つからないため、おそらく機能しません。しかし、なぜそれが機能しないのか、私にはよくわかりません。
繰り返しますが、私は単に間違っている可能性があります。
特に SQL Compact で試したわけではありませんが、サーバーへの接続は標準のはずです。
- 使用可能なツールで ADODB ファイル (msado21.tlb) が正しく参照されていることを確認します。
次のような場所に接続文字列を書き留めます。
MyConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;初期カタログ=YourDatabaseName;Data Source=YourSQLServerInstanceName"
この文字列は、「統合セキュリティ」コンテキスト用に書かれています。SQL セキュリティ コンテキスト用に変更する場合は、ここをチェックして文字列を更新してください。理想的には、この文字列はコード内でパブリック変数として宣言する必要があります。
これが完了したら、ADODB レコードセットを開いて操作を開始できます。
public sub connectionTest
Dim activeConnection as ADODB.connection, _
activeRecordset as ADODB.recordset
Set activeConnection = New ADODB.connection
activeConnection.connectionString = myCOnnectionString
activeConnection.open
set activeRecordset = New ADODB.recordset
'this will open a read-only recordset'
activeRecordset.open _
"SELECT * FROM myTableName", _
activeConnection, _
adOpenStatic, _
adLockReadOnly
if activeRecordset.EOF and activeRecordset.BOF then
debug.print "No records in this table"
else
activeRecordset.moveFirst
do while not activeRecordset.EOF
debug.print activerecordset.fields("myFieldName").value
activeRecordset.moveNext
loop
endif
activeRecordset.close
set activeRecordset = nothing
activeConnection.close
set activeConnection = nothing
end sub