こんにちは。早速ですがよろしくお願いいたします。
現在、ADOでOracleに接続しているのですが、以下のエラー
が出ます・・・(><;)
「実行時エラー'91'
」
間違って送ってしまいました><;申し訳ありません!!
続きです(汗)
「実行時エラー'91'
オブジェクト変数またはwithブロック変数が設定されていません。」
以下のコードで行っているのですが、コンボボックスcboListには
値が取得できるため、接続は出来ているようです。
おそらく、FlexGridへの値の取得の仕方が間違っていると思うのですが
何が悪いのかご指南よろしくお願いいたします。
Option Explicit
'*********オブジェクト変数名*********
'コネクションクラス: 変数名 Cn
'レコードセットクラス: 変数名 Rs
'************************************
Private Cn As ADODB.Connection
Private Rs As ADODB.Recordset
Private Sub Form_Load()
Set Cn = New ADODB.Connection
Cn.ConnectionString = "Provider=MSDAORA.1;User ID=scott;Data Source=hwwk;Persist Security Info=False"
Cn.Open , , "password"
Set Rs = New ADODB.Recordset
Set Rs.ActiveConnection = Cn
Rs.Open "emp", Cn, , adLockOptimistic
Do Until Rs.EOF
cboList.AddItem Rs("empno") & " " & Rs("ename")
Rs.MoveNext
Loop
Set msgList.DataSource = Rs 'ここでエラー
End Sub
Private Sub Form_Unload(Cancel As Integer)
Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub
msgListがMSFlexGridで、環境はVB6.0 Oracle8.1.7です。
皆様よろしくお願いいたします<(__)>
Set msgList.DataSource = Rs.DataSource
では?
クリリン様お返事ありがとうございますo(^o^)o
>Set msgList.DataSource = Rs.DataSource
にコード変更してみたのですが、やはり同じエラー
が出てしまいます・・・m(__)m
ADOはOracleに使えないプロパティやメソッドがある
と聞きましたが、そこら辺の問題でしょうか・・・??
>ADOはOracleに使えないプロパティやメソッドがあると聞きましたが、そこら辺の問題でしょうか・・・??
今のところ問題ありません。
グリッドに直接データベースと連動される事はやっていないので何ともいえませんが、
試しに、
Do Until Rs.EOF
cboList.AddItem Rs("empno") & " " & Rs("ename")
Rs.MoveNext
Loop
をコメントアウトして見てください。
もし、うまくいくようでしたら、
Set msgList.DataSource = Rs.DataSource
と順番を差し替えてください。
おはようございます。
クリリン様回答ありがとうございます(^^)
>>ADOはOracleに使えないプロパティやメソッドがある
>>と聞きましたが、そこら辺の問題でしょうか・・・??
>今のところ問題ありません。
接続するのに必要なものくらいしか使ってないのでそうですよねぇ・・・
関係ないですよね(^^;)
Do Until Rs.EOF
cboList.AddItem Rs("empno") & " " & Rs("ename")
Rs.MoveNext
Loop
上記の部分はうまく行き、無事にcboListに項目が追加
されます。
でも、Set msgList.DataSource = Rs.DataSource
は場所を差し替えてもうまく行きませんでしたm(__;)m
「オブジェクト変数が定義されてない」というエラーが
出るってことはオブジェクト変数の定義の仕方が間違っている
のでしょうか・・・?
でもコンボボックスには値の取得が出来るんですよねー
うーん(?_?)
あ・・・コメントアウトですね><;
うっかりしてました・・・
Do Until Rs.EOF
cboList.AddItem Rs("empno") & " " & Rs("ename")
Rs.MoveNext
Loop
上記のコードはコメントアウトしても
Set msgList.DataSource = Rs.DataSource
の部分でエラーになってしまいます^^;
MSFlexGridのDataSourceには、OLE DB系のデータソースは指定できません。かわりに、MSHFlexGridコントロールを使用してください。
魔界の仮面弁士様ありがとうございます(^^)
ADOはOLE DBを通して接続していて、
>MSFlexGridのDataSourceには、OLE DB系のデータソースは指定できません。
なので実行時エラーが出てしまっていたのですね。
今までoo4oなどODBC を通した接続ばかりだったので、大変勉強になりました(^^)
ツイート | ![]() |