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
すいません、間違えて送信してしまいました。続きを書きます
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←この部分がおかしいとは思うのですが
どのように解決して良いのかが分かりません。
どなたかお力添えをお願い致します。
画像表示の前に
Dim pic(3) = Picture1
で、コンパイルエラーになると思うのですが・・・
Dim pic(3) As Picture
の間違いですか?
すいません、記述ミスです・・・
×Dim pic(3) = Picture1
○Dim pic(3) As PictureBox
失礼致しました。
LoadPicture関数はファイル名を指定するので、
Set Picture1.Picture = pic(1).Picture
でいいのでは?
LESIAさん、ご返答ありがとうございます。
>LoadPicture関数はファイル名を指定するので
>Set Picture1.Picture = pic(1).Picture
これで何処がおかしいのか分かったような気がします
教えていただいた、Set Picture1.Picture = pic(1).Pictureでは画像は表示されませんでした。
LoadPictureの場合は表示されます(3枚目ですが)
変数に画像データが格納されていないということですね
objOraBlb.CopyToFile pic(i).Picture
↑
CopyToFileはファイルに書き込むメソッドのようなので
変数に格納できないのは当たり前ですよね・・・
フォルダに画像ファイルが作成されるのも、違った画像を取ってきてしまうのも
全てこれの所為な気がします・・・
しかし、変数に入れるにはどうしたら良いのでしょうか・・
いろいろ試行錯誤しております;
度々申し訳ありません
泥沼に嵌ってしまったようです・・
変数に格納することはできました
Dim red As Variant
Dim buffer As Variant
red = objOraBlb.Read(buffer)
Msgbox red
上記のコードで確認してみましたが、redの中に画像データが収まっているようです
ヘルプに載っていたのを丸写ししただけなんですが。。(このくらいの事にも気づかないとはお恥ずかしい限りです;
redの値をどうにかしてPicture.Pictureに入れたいのですが
上手くいきません
半日悩んでこの程度で非常に情けないのですが
どなたかお助けください
ツイート | ![]() |