Delphi 7 + DBExpress + MySQL 5.0 無法存取 Blob 欄位 |
缺席
|
nyewchai
一般會員 ![]() ![]() 發表:6 回覆:8 積分:7 註冊:2006-07-13 發送簡訊給我 |
請問各位前輩,為甚麼我以 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 發送簡訊給我 |
參考了 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |