Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7576 / 13645 ツリー ←次へ | 前へ→

【38121】ADOのカーソルタイプに関する質問です PT 06/5/26(金) 23:50 質問[未読]
【38130】Re:ADOのカーソルタイプに関する質問です neptune 06/5/27(土) 8:13 発言[未読]
【38134】Re:ADOのカーソルタイプに関する質問です PT 06/5/27(土) 12:35 発言[未読]
【38135】Re:ADOのカーソルタイプに関する質問です PT 06/5/27(土) 12:40 発言[未読]
【38138】Re:ADOのカーソルタイプに関する質問です neptune 06/5/27(土) 13:29 回答[未読]
【38141】Re:ADOのカーソルタイプに関する質問です PT 06/5/27(土) 13:56 お礼[未読]
【38142】Re:ADOのカーソルタイプに関する質問です neptune 06/5/27(土) 14:54 発言[未読]
【38144】Re:ADOのカーソルタイプに関する質問です PT 06/5/27(土) 16:15 お礼[未読]
【38174】Re:ADOのカーソルタイプに関する質問です 漂流民 06/5/28(日) 16:33 発言[未読]
【38175】Re:ADOのカーソルタイプに関する質問です 漂流民 06/5/28(日) 17:02 発言[未読]
【38177】Re:ADOのカーソルタイプに関する質問です PT 06/5/28(日) 18:58 お礼[未読]
【38178】Re:ADOのカーソルタイプに関する質問です 漂流民 06/5/29(月) 2:27 発言[未読]

【38121】ADOのカーソルタイプに関する質問です
質問  PT  - 06/5/26(金) 23:50 -

引用なし
パスワード
   ADOでDBに接続するときにカーソルタイプ、に列挙型-1以外を指定した後、Openメソットの引数に-1を指定した場合カーソルタイプは列挙型は-1ではない実機確認しているのですがこの知識は合っていますでしょうか?
ご教授願えますと幸いです。

【38130】Re:ADOのカーソルタイプに関する質問です
発言  neptune  - 06/5/27(土) 8:13 -

引用なし
パスワード
   ▼PT さん:
詳しくは無いんですが、わからない点

>ADOでDBに接続するときにカーソルタイプ、に列挙型-1以外を指定した後、Openメソッ?>トの引数に-1を指定した場合カーソルタイプは列挙型は-1ではない実機確認している
>のですがこの知識は合っていますでしょうか?
2.7、2.8は使ったこと無いんですが、
接続するとき→connectionにCursorType が出来たのですか??
RecordSetの間違いでは?
列挙型は列挙型定数の事?

最低、接続先DBはキチンと書かなければ正確なアドバイスはもらえませんよ。
できれば接続に使用しているソースもあれば更に良いアドバイスが得られる
のでは?

【38134】Re:ADOのカーソルタイプに関する質問です
発言  PT  - 06/5/27(土) 12:35 -

引用なし
パスワード
   neptune さんすみません。定数です。
ConnectionオブジェクトのCursorTypeプロパティに静的カーソル(3)を指定
したあとで 接続するメソットOpenに定数-1を指定した場合、CursorTypeは静的カーソルだと僕の知識にあるのと実機ではそうなるのですがちがっていますでしょうか?定数-1がよくわからないのです。大変説明不足ですみません。ご教授願えますと助かります。

【38135】Re:ADOのカーソルタイプに関する質問です
発言  PT  - 06/5/27(土) 12:40 -

引用なし
パスワード
   何度もすみません。RecordSetの間違いです。
connctionで出きるはずがありませんでした。久々にVBAの勉強をするのでこんがらがっていました。大変すみません。
RecordSetオブジェクトの場合です。OpenメソットもRecordSetメンバです。
すみませんでした。

【38138】Re:ADOのカーソルタイプに関する質問です
回答  neptune  - 06/5/27(土) 13:29 -

引用なし
パスワード
   ▼PT さん:
>何度もすみません。RecordSetの間違いです。
>RecordSetオブジェクトの場合です。OpenメソットもRecordSetメンバです。
>すみませんでした。
やはりrecordsetですね。
まだ良くわからないのですが、Openメソッドを使用して、
レコードセットを静的カーソル指定で開いても戻ったレコードセットを
確認すると-1になっているんですか?

Source引数で、commandオブジェクトを使用している場合は関係したような
記憶がありますが、使用して無いなら、
私の手には余りますのでお役には立てません。m(_ _)m

いずれにしてもMSDNかHelpを精読すれば解決すると思いますよ。

【38141】Re:ADOのカーソルタイプに関する質問です
お礼  PT  - 06/5/27(土) 13:56 -

引用なし
パスワード
   neptune さん大変ありがとうございます。定数-1は非公開メンバでCursorTypeの規定値で意味もわかっているのです。CursorTypeを2つ指定したら最後に指定した
CursorTypeになるのか?という疑問がありその疑問を解く必要に迫られたためでした。実務では、絶対やらないことばかり質問していますが理由はちゃんとあるのです。ただ、自分の中で確証がほしかったのです。
ありがとうございました。

【38142】Re:ADOのカーソルタイプに関する質問です
発言  neptune  - 06/5/27(土) 14:54 -

引用なし
パスワード
   ▼PT さん:
>neptune さん大変ありがとうございます。定数-1は非公開メンバでCursorTypeの規定値で意味もわかっているのです。CursorTypeを2つ指定したら最後に指定した
>CursorTypeになるのか?という疑問がありその疑問を解く必要に迫られたためでした。実務では、絶対やらないことばかり質問していますが理由はちゃんとあるのです。ただ、自分の中で確証がほしかったのです。
>ありがとうございました。
ん〜まだ良くわからない。確かに「実務では、絶対やらない」でしょうね。

そもそもカーソルタイプは
次の CursorTypeEnum 値の 1 つを設定または返します。
と定義されていて、2つ指定するものではないですよね?

又、Helpにはこうも書かれています。
>サポートされていない値が設定された場合でも、エラーは発生しません。
>サポートされる最も類似する CursorType が代わりに使用されます。
この辺の問題ではないでしょうか?

いづれにしても私にはこの辺りしかわかりません。

【38144】Re:ADOのカーソルタイプに関する質問です
お礼  PT  - 06/5/27(土) 16:15 -

引用なし
パスワード
   neptune さんのいいたいことはわかるのです。申し訳ありません。実はVBAに試験があり試験ではそこら辺の細かい知識も要求されるため、という理由です。
お騒がせして申し訳ありません。

【38174】Re:ADOのカーソルタイプに関する質問です
発言  漂流民  - 06/5/28(日) 16:33 -

引用なし
パスワード
   ▼PT さん:
>neptune さんすみません。定数です。
>ConnectionオブジェクトのCursorTypeプロパティに静的カーソル(3)を指定
>したあとで 接続するメソットOpenに定数-1を指定した場合、CursorTypeは静的カーソルだと僕の知識にあるのと実機ではそうなるのですがちがっていますでしょうか?定数-1がよくわからないのです。大変説明不足ですみません。ご教授願えますと助かります。

私もカーソルタイプの「-1」というのは使ったことがなかったので
調べてみました。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdcstcursortypeenum.asp

つまりカーソルタイプの「-1」というのは「カーソルの種類を指定しない」とのことらしいです。


>ConnectionオブジェクトのCursorTypeプロパティに静的カーソル(3)を指定
>したあとで 接続するメソットOpenに定数-1を指定した場合、CursorTypeは静的カーソル

テストしてみました。
※下記コード
結果、カーソルタイプ「-1」は何をしてもデフォ値の「0」が返ってきました。
(ちなみにロックタイプ「-1」もデフォ値の「1」を返してきました)

>メソットOpenに定数-1を指定した場合、CursorTypeは静的カーソル

はどのようなテストで返ってきたのでしょうか?


以下、テストコード
'***********************************************************************************

Sub test()
  Dim Con As ADODB.Connection
  Dim Rst1 As ADODB.Recordset
  Dim Rst2 As ADODB.Recordset

  Set Con = New ADODB.Connection
  Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test\test.mdb;"

  Set Rst1 = New ADODB.Recordset
  Rst1.Open "ttable1", Con, adOpenStatic, adLockReadOnly, adCmdTable
'  Rst1.Open "ttable1", Con, adOpenDynamic, adLockPessimistic, adCmdTable
  
  Set Rst2 = New ADODB.Recordset
  Rst2.Open "ttable2", Con, adOpenUnspecified, adLockUnspecified, adCmdUnspecified

  
  MsgBox "1つ目のRecordsetのCursorTypeは・・・" & CStr(Rst1.CursorType) & vbLf & _
      "2つ目のRecordsetのCursorTypeは・・・" & CStr(Rst2.CursorType) & vbLf & vbLf & _
      "1つ目のRecordsetのLockTypeは・・・" & CStr(Rst1.LockType) & vbLf & _
      "2つ目のRecordsetのLockTypeは・・・" & CStr(Rst2.LockType)


  Rst2.Close
  Set Rst2 = Nothing
  
  Rst1.Close
  Set Rst1 = Nothing

  Con.Close
  Set Con = Nothing

End Sub

'***********************************************************************************

【38175】Re:ADOのカーソルタイプに関する質問です
発言  漂流民  - 06/5/28(日) 17:02 -

引用なし
パスワード
   ▼PT さん:

>ConnectionオブジェクトのCursorTypeプロパティに

すいません読み違えていました。
Connectionオブジェクトだったんですね。
ただ、ConnectionオブジェクトにCursorTypeプロパティは指定できないと思うのですが・・・

Open メソッド (ADO Connection)
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdmthcnnopen.asp

Open メソッド (ADO Recordset)
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdmthrstopen.asp

【38177】Re:ADOのカーソルタイプに関する質問です
お礼  PT  - 06/5/28(日) 18:58 -

引用なし
パスワード
   ▼漂流民 さんありがとうございます
Recordsetです。Connectionで出きるはずがありませんでした。すみません。
間違っているかもしれませんがCドライブのtest.mdbのtasttableのレコード数を
カウントするついでにMsgBox .CursorTypeが3を返すためです。
すみません意味不明な質問ばかりで。-1はそれまでのカーソルタイプの値を使用すると言う解釈で僕はいます。


Sub Test()
Dim ADOConnetion As ADODB.Connection
Dim SelectCommand As String
Set ADOConnetion = New ADODB.Connection
With ADOConnetion
   .Provider = "Microsoft.jet.oledb.4.0"
   .ConnectionString = "Data Source=C:\test.mdb"
   .Open
End With
SelectCommand = "tasttable"
With New ADODB.Recordset
    .Source = SelectCommand
     Set .ActiveConnection = ADOConnetion
    .CursorType = adOpenStatic
    .Open SelectCommand, ADOConnetion, adOpenUnspecified
    MsgBox .CursorType
   MsgBox .RecordCount
   .Close
End With
ADOConnetion.Close
Set ADOConnetion = Nothing
End Sub

【38178】Re:ADOのカーソルタイプに関する質問です
発言  漂流民  - 06/5/29(月) 2:27 -

引用なし
パスワード
   ▼PT さん:
>▼漂流民 さんありがとうございます
>Recordsetです。Connectionで出きるはずがありませんでした。すみません。
>間違っているかもしれませんがCドライブのtest.mdbのtasttableのレコード数を
>カウントするついでにMsgBox .CursorTypeが3を返すためです。
>すみません意味不明な質問ばかりで。-1はそれまでのカーソルタイプの値を使用すると言う解釈で僕はいます。

>-1はそれまでのカーソルタイプの値を使用すると言う解釈
「それまでの」というのは”同一Recordset”ということですか?
そうであれば当然そのようになると思います。
つまり
PT さんのコードであれば
>    .Open SelectCommand, ADOConnetion, adOpenUnspecified

>    .Open SelectCommand, ADOConnetion
としても結果は同じなはずです。

カーソルタイプ「-1」の「カーソルの種類を指定しない」は「パラメータの省略」と
同義だと思われます。

>    .CursorType = adOpenStatic

    .CursorType = adOpenKeyset
または
    .CursorType = adOpenForwardOnly
で試してください。
それぞれ Open メソッドのカーソルのパラメータを「-1」or「省略」にしても
「1」「0」が返ってくると思います。


蒸し返すようで申し訳ないのですが、
>【38121】ADOのカーソルタイプに関する質問です
>ADOでDBに接続するときにカーソルタイプ、に列挙型-1以外を指定した後、
>Openメソットの引数に-1を指定した場合カーソルタイプは列挙型は-1ではない実機確認しているのですが
>この知識は合っていますでしょうか?
>ご教授願えますと幸いです。
この質問の仕方では相当詳しい方でも頭をひねるのではないでしょうか?
>【38177】Re:ADOのカーソルタイプに関する質問です 
のように始めからこのようにもう少し具体的な質問の仕方でお願いします。
(言葉よりもコードの方が回答者も理解しやすい思うので・・・)


※ちなみにJetデータベースではadOpenDynamicはサポートされていません。
 自動的にadOpenKeysetまたはadOpenStaticに変換されます。

7576 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free