全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1727
推到 Plurk!
推到 Facebook!

Delphi 7 + DBExpress + MySQL 5.0 無法存取 Blob 欄位

缺席
nyewchai
一般會員


發表:6
回覆:8
積分:7
註冊:2006-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-22 22:00:37 IP:60.50.xxx.xxx 訂閱
請問各位前輩,為甚麼我以 Ctrl V 將圖片從剪貼薄貼到 MySQL 的 Blob 欄位,post 過後末離開程式還可看到圖片,離開程式重新進入時會出現 Stream Read Error 的錯誤訊息,資料和圖片無法顯示。如果把DBImage的AutoDisplay設成False,則可顯示資料,但圖片 Show不出來。DoubleClick DBImage 則同樣出現 Stream Read Error 的錯誤訊息。請各位前輩伸出援手,謝謝,謝謝!
------
Ng Yew Chai
nyewchai
一般會員


發表:6
回覆:8
積分:7
註冊:2006-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-23 13:45:09 IP:60.50.xxx.xxx 訂閱
參考了 http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=33237 的文章並引用 Justmade 兄的範例還是沒辦法解決問題。 現用開啟檔案的方式,每當按 Button 把圖檔 Load 進來 會顯示 Invalid Class Type 的Error。
在此附上引用Justmade 兄的程式碼,請大家幫幫忙,幫小弟渡過難關,謝謝!

procedure TfmBA010.cdsMasterAfterScroll(DataSet: TDataSet);
var
jpeg : TJpegImage;
S : TBlobStream;
begin
//inherited;
if (not cdsMaster.Active) or (cdsMaster.FieldByName('PHOTO').Value = '') or
(cdsMaster.FieldByName('PHOTO').Value = null) then
begin
Image.Picture := nil;
exit;
end;
S := TBlobStream.Create(TBlobField(cdsMaster.FieldByName('PHOTO')),bmRead);
jpeg := TJpegImage.Create;
try try
jPeg.LoadFromStream(S);
Image.Picture.Assign(jpeg);
except
end;
finally
S.Free;
jpeg.Free;
end;
end;

procedure TfmBA010.SpeedButton1Click(Sender: TObject);
VAR
S :TBlobStream;
begin
//inherited;
IF not OpenPhotoDialog.Execute then Exit;
If not (cdsMaster.State in [dsEdit, dsInsert]) then
cdsMaster.Edit;
S:= TBlobStream.Create(TBlobField(cdsMaster.FieldByName('PHOTO')), bmWrite);
try
Image.Picture.Assign(StretchImageRatio(OpenPhotoDialog.FileName, 300, 300, 70, true));
Image.Picture.Graphic.SaveToStream(S);
finally
S.Free;
end;
end;

採用 Delphi7 DBExpress(SQLConnections, SQLQuery, ClientDataSet, DataSetProvider,DataSource 的組合) MSQL50
------
Ng Yew Chai
系統時間:2024-05-06 22:56:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!