VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2004/10/28(Thu) 11:28
投稿者魔界の仮面弁士
Eメール
URL
タイトルRecordsetの作成に関して

> Set rs1.ActiveConnection = DB
> rs1.Properties("IRowsetIdentity") = True
> rs1.Open "TBL101", DB, adOpenStatic, adLockOptimistic

このように書いた場合、その前に書かれた接続設定は無視されます。

まず、Propertiesプロパティで設定される「ダイナミック プロパティ」ですが、
これは接続対象となる OLE DB Provider によって、指定可能な項目が異なるのです。
そのため、Properties を指定する前には、ActiveConnection プロパティ等にて、
適切な Connection を割り当てておく必要があります。


ところが、はこさんのコードの場合、Properties を指定したまでは良かったのですが、
最後の Open メソッドの呼び出し部分に問題があったのです。

今回の場合、最後の Open メソッドにて Connection を再度割り当てたたため、
直前の Properties プロパティの設定がリセットされてしまった事になります。

例えばこれが、
   Set rs1.ActiveConnection = DB
   rs1.Properties("IRowsetIdentity").Value = True
   rs1.Open "Table1", DB, adOpenStatic, adLockOptimistic
ではなく、
   Set rs1.ActiveConnection = DB
   rs1.Properties("IRowsetIdentity").Value = True
   rs1.Open "Table1", , adOpenStatic, adLockOptimistic
のように書かれていれば、事前の接続設定(ActiveConnection) はリセットされません。
(Open時に、ActiveConnectionの設定を省略してある事に注意してください)


なお、No.716 (yutaさん)のコードについては、ActiveConnection に加えて、
CursorType と LockType の指定も分けて記述した形式ですね。


ちなみに、DataGrid に反映させるためには、IRowsetIdentity を指定する以外にも、
「Rs1.CursorLocation = adUseClient」の指定を行う事でも実現できます。
adUseClient が指定されている場合は、IRowsetIdentity を指定せずにも表示されます。
No.713 (KIM.Jさん) の投稿にて『カーソルの指定も影響するかもしれませんが』と
書かれていますが、これは、この CursorLocation の設定の事を意味しています。

# なお、Recordsetに CursorLocationの指定が無い場合は、Connectionオブジェクト側の
# CursorLocation の設定が利用される事になります。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -