画像を表示するには?


イ寺  2004-11-15 17:00:11  No: 117601  IP: [192.*.*.*]

VB6.0  Oracle8iを使用しております
以下のコードでOracle  

Dim pic(3) = Picture1  
  
  For i = 1 To 3
    code = CStr(i)
    
    Set pic(i) = Picture1
    strSQL = "SELECT PICTURE FROM etc where sprno = 'AAAAAAAAAA' and no = " & code
    Set objOraDyn = OraDB.CreateDynaset(strSQL, ORADYN_DEFAULT)
    Set objOraBlb = objOraDyn.Fields(0).Value
    objOraBlb.CopyToFile pic(i).Picture
    Set objOraBlb = Nothing
    Set objOraDyn = Nothing
  Next

編集 削除
イ寺  2004-11-15 17:09:02  No: 117602  IP: [192.*.*.*]

すいません、間違えて送信してしまいました。続きを書きます

    Set objOraBlb = Nothing
    Set objOraDyn = Nothing
  Next
  Picture1.Picture = LoadPicture(pic(1).Picture)※1

Oracleより画像データを持ってきて表示するプログラムを書いたのですが
上手く動作しません。
不具合:
・1枚目の画像のバイナリデータ?が必ず0になっている
・2,3枚目の画像のバイナリデータ?が同じ値になる
・プログラムを実行すると、プログラムがあるフォルダに画像ファイルのようなものが作成される
・※1で1枚目の画像を表示しているのに、3枚目の画像が表示されてしまう。

objOraBlb.CopyToFile pic(i).Picture←この部分がおかしいとは思うのですが
どのように解決して良いのかが分かりません。
どなたかお力添えをお願い致します。

編集 削除
LESIA  2004-11-15 17:33:49  No: 117603  IP: [192.*.*.*]

画像表示の前に
Dim pic(3) = Picture1  
で、コンパイルエラーになると思うのですが・・・

Dim pic(3) As Picture
の間違いですか?

編集 削除
イ寺  2004-11-15 17:40:39  No: 117604  IP: [192.*.*.*]

すいません、記述ミスです・・・

×Dim pic(3) = Picture1

○Dim pic(3) As PictureBox

失礼致しました。

編集 削除
LESIA  2004-11-15 18:05:55  No: 117605  IP: [192.*.*.*]

LoadPicture関数はファイル名を指定するので、
Set Picture1.Picture = pic(1).Picture
でいいのでは?

編集 削除
イ寺  2004-11-15 18:40:48  No: 117606  IP: [192.*.*.*]

LESIAさん、ご返答ありがとうございます。

>LoadPicture関数はファイル名を指定するので
>Set Picture1.Picture = pic(1).Picture
これで何処がおかしいのか分かったような気がします
教えていただいた、Set Picture1.Picture = pic(1).Pictureでは画像は表示されませんでした。
LoadPictureの場合は表示されます(3枚目ですが)
変数に画像データが格納されていないということですね
objOraBlb.CopyToFile pic(i).Picture

CopyToFileはファイルに書き込むメソッドのようなので
変数に格納できないのは当たり前ですよね・・・
フォルダに画像ファイルが作成されるのも、違った画像を取ってきてしまうのも
全てこれの所為な気がします・・・

しかし、変数に入れるにはどうしたら良いのでしょうか・・
いろいろ試行錯誤しております;

編集 削除
イ寺  2004-11-16 16:03:09  No: 117607  IP: [192.*.*.*]

度々申し訳ありません
泥沼に嵌ってしまったようです・・

変数に格納することはできました
Dim red As Variant
Dim buffer As Variant
red = objOraBlb.Read(buffer)
Msgbox red
上記のコードで確認してみましたが、redの中に画像データが収まっているようです
ヘルプに載っていたのを丸写ししただけなんですが。。(このくらいの事にも気づかないとはお恥ずかしい限りです;
redの値をどうにかしてPicture.Pictureに入れたいのですが
上手くいきません
半日悩んでこの程度で非常に情けないのですが
どなたかお助けください

編集 削除