線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1766
推到 Plurk!
推到 Facebook!

如何儲存JPG圖檔到SQL server 2000 database 中

答題得分者是:hagar
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-25 16:13:19 IP:203.162.xxx.xxx 未訂閱
我有search過這問題的相關文章,也下載過dbimage.zip檔跑過. 可是在執行 TBlobField(EmInfoQuery.FieldByName('Pics')).LoadFromFile(OpenPictureDialog1.FileName); 這行時發生錯誤,bitmap is not value. 那要用什麼方法才能做得到呢? 謝謝~~~
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-25 17:08:48 IP:202.39.xxx.xxx 未訂閱
有 uses Jpeg; 嗎?    -- 歡迎光臨 KTop 研究院!
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-25 17:21:28 IP:203.162.xxx.xxx 未訂閱
有啊~
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-25 17:37:19 IP:202.39.xxx.xxx 未訂閱
應該不是這行發生的錯誤 就是要存其它種類的檔案也是可用這行的方式    -- 歡迎光臨 KTop 研究院! 發表人 - hagar 於 2004/08/25 17:40:03
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-25 17:51:41 IP:203.162.xxx.xxx 未訂閱
但我tracing過了,只有跑到那行才會發生錯誤: if OpenPictureDialog1.Execute then TBlobField(EmInfoQuery.FieldByName('Pics')).LoadFromFile(OpenPictureDialog1.FileName); Error message: Bmp image is not valid
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-25 17:59:27 IP:202.39.xxx.xxx 未訂閱
您是不是要用 TDBImage 顯示 jpeg? 是的話改這樣子的方式試試:
var
  jpg: TJpegImage;
  bmp: TBitmap;
begin
  if OpenPictureDialog1.Execute then
  begin
    jpg := TJpegImage.Create;
    try
      jpg.LoadFromFile(OpenPictureDialog1.FileName);          bmp := TBitmap.Create;
      try
        bmp.Width := jpg.Width;
        bmp.Height := jpg.Height;
        bmp.Assign(jpg);            TBlobField(EmInfoQuery.FieldByName('Pics')).Assign(bmp);
      finally
        bmp.Free;
      end;
    finally
      jpg.Free;
    end;
  end;
end;
-- 歡迎光臨 KTop 研究院! 發表人 - hagar 於 2004/08/25 19:27:18
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-25 18:46:23 IP:203.162.xxx.xxx 未訂閱
對啊~我有用一個DBImage來顯示Table中的image說
cd109
一般會員


發表:23
回覆:33
積分:11
註冊:2003-12-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-27 11:47:01 IP:203.69.xxx.xxx 未訂閱
fs是全域變數==>>fS  : TFileStream;    這是換圖按鈕的寫法  if OpenDlg.Execute then   begin      fs:=nil;     dbimage1.Picture.LoadFromFile(OpenDlg.FileName);     fs:=TFileStream.Create(OpenDlg.FileName, fmOpenRead);   end; 這是寫入圖片的寫法       DataModule_EmployeeNew.Table_MANPIC.Active:=true;       DataModule_EmployeeNew.Table_MANPIC.Append;       DataModule_EmployeeNew.Table_MANPIC.FieldValues['EM_ID']:=Table_Main.FieldByName('EM_ID').AsInteger;       if fs=nil then       else       begin         try          DataModule_EmployeeNew.Table_MANPICEM_PIC.LoadFromStream(fs);         finally          fs.Free;         end;       end;       DataModule_EmployeeNew.Table_MANPIC.Post; ----------------------------------------------------------------------------------------------------- 這是<更新>換圖的寫法    宣告  fS  : TFileStream=nil;==>全域變數    fes:Boolean=false;==>全域變數 -----------     if OpenDlg.Execute then       begin       dbimage1.Picture.LoadFromFile(OpenDlg.FileName);     fs:=TFileStream.Create(OpenDlg.FileName, fmOpenRead);     fes:=true;   end;          這是<更新>的寫法 if fes=true then       begin       DataModule_Employeeedit.Table_MANPIC.Active:=true;         //DataModule_Employeeedit.Table_MANPIC.Locate('EM_ID',iEM_ID,[]);                  try          DataModule_Employeeedit.Table_MANPIC.Edit;          DataModule_Employeeedit.Table_MANPICEM_PIC.LoadFromStream(fs);          DataModule_Employeeedit.Table_MANPIC.Post;          fes:=false;         finally          fs.Free;         end;                end;    以上的圖片均為DBIMAGE PS:BDE中的為照片容量限制(預設32KB),如要增加請調整大小. 發表人 - cd109 於 2004/08/27 11:49:10
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-27 18:58:58 IP:203.162.xxx.xxx 未訂閱
Hi CD109, 謝謝你的建意,但是程式跑到DataModule_EmployeeNew.Table_MANPICEM_PIC.LoadFromStream(fs); 這行時還是會出現 Bitmap image is not valid 是不是SQL 2000不支援jpeg呢?
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-28 10:51:15 IP:218.32.xxx.xxx 未訂閱
引言: Hi CD109, 謝謝你的建意,但是程式跑到DataModule_EmployeeNew.Table_MANPICEM_PIC.LoadFromStream(fs); 這行時還是會出現 Bitmap image is not valid 是不是SQL 2000不支援jpeg呢?
1. 不是SQL 2000不支援jpeg, 而是 DBImage 元件不支援. 2. 若你考慮資料庫存圖的大小, 所以要存 JPG, 那顯示圖片的部分, 須自己處理, 而無法直接用 TDBImage 元件, 可以考慮改用 TImage, 在 DataSet 的AfterScroll event 寫程式去 Assign TImage.
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-08-28 13:07:45 IP:203.162.xxx.xxx 未訂閱
謝謝Hagar, CD109, Mickey, 最後我用了Hagar的方式,終於成功了 謝謝大家~
系統時間:2024-11-23 5:39:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!