ADOでMSFlexGridに値を表示

解決


わか  2003-08-27 01:33:55  No: 108239

こんにちは。早速ですがよろしくお願いいたします。

現在、ADOでOracleに接続しているのですが、以下のエラー
が出ます・・・(><;)

「実行時エラー'91' 


わか  2003-08-27 01:41:53  No: 108240

間違って送ってしまいました><;申し訳ありません!!

続きです(汗)

「実行時エラー'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です。
皆様よろしくお願いいたします<(__)>


クリリン  2003-08-27 01:48:16  No: 108241

Set msgList.DataSource = Rs.DataSource
では?


わか  2003-08-27 02:21:28  No: 108242

クリリン様お返事ありがとうございますo(^o^)o

>Set msgList.DataSource = Rs.DataSource

にコード変更してみたのですが、やはり同じエラー
が出てしまいます・・・m(__)m

ADOはOracleに使えないプロパティやメソッドがある
と聞きましたが、そこら辺の問題でしょうか・・・??


クリリン  2003-08-27 04:07:37  No: 108243

>ADOはOracleに使えないプロパティやメソッドがあると聞きましたが、そこら辺の問題でしょうか・・・??
今のところ問題ありません。

グリッドに直接データベースと連動される事はやっていないので何ともいえませんが、
試しに、
Do Until Rs.EOF
  cboList.AddItem Rs("empno") & " " & Rs("ename")
  Rs.MoveNext
Loop
をコメントアウトして見てください。
もし、うまくいくようでしたら、
Set msgList.DataSource = Rs.DataSource
と順番を差し替えてください。


わか  2003-08-27 18:02:38  No: 108244

おはようございます。
クリリン様回答ありがとうございます(^^)

>>ADOはOracleに使えないプロパティやメソッドがある
>>と聞きましたが、そこら辺の問題でしょうか・・・??
>今のところ問題ありません。
接続するのに必要なものくらいしか使ってないのでそうですよねぇ・・・
関係ないですよね(^^;)

Do Until Rs.EOF
  cboList.AddItem Rs("empno") & " " & Rs("ename")
  Rs.MoveNext
Loop

上記の部分はうまく行き、無事にcboListに項目が追加
されます。
でも、Set msgList.DataSource = Rs.DataSource
は場所を差し替えてもうまく行きませんでしたm(__;)m

「オブジェクト変数が定義されてない」というエラーが
出るってことはオブジェクト変数の定義の仕方が間違っている
のでしょうか・・・?
でもコンボボックスには値の取得が出来るんですよねー
うーん(?_?)


わか  2003-08-27 19:36:57  No: 108245

あ・・・コメントアウトですね><;
うっかりしてました・・・

Do Until Rs.EOF
  cboList.AddItem Rs("empno") & " " & Rs("ename")
  Rs.MoveNext
Loop

上記のコードはコメントアウトしても
Set msgList.DataSource = Rs.DataSource
の部分でエラーになってしまいます^^;


魔界の仮面弁士  2003-08-27 21:53:35  No: 108246

MSFlexGridのDataSourceには、OLE DB系のデータソースは指定できません。かわりに、MSHFlexGridコントロールを使用してください。


わか  2003-08-28 00:08:04  No: 108247

魔界の仮面弁士様ありがとうございます(^^)

ADOはOLE DBを通して接続していて、
>MSFlexGridのDataSourceには、OLE DB系のデータソースは指定できません。
なので実行時エラーが出てしまっていたのですね。
今までoo4oなどODBC を通した接続ばかりだったので、大変勉強になりました(^^)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加