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

資料庫與OLEContainer之間的問題?

尚未結案
adrain
一般會員


發表:39
回覆:28
積分:13
註冊:2004-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-06 12:14:48 IP:61.59.xxx.xxx 未訂閱
請問各位大大,目前我的資料庫有ㄧ個欄位專門存放*.Doc的檔案,然後我想將這些Word檔案顯示在OLEContainer上,不知該如何做?以下是我的程式碼,但是總是是會出現Stream Error的問題,請各位先進指教,謝謝!! procedure TFrmTXTM080.aqryMasterAfterScroll(DataSet: TDataSet); var sSQL: String; msEquData: TMemoryStream; begin with DMTXTDB.aqryGet do try sSQL:= ' SELECT TES_EQUDATA, TES_TESFILENAME FROM TXTENS ' ' WHERE TES_TESID= ' Qt(aqryMaster.Fields[0].AsString); Close; SQL.Clear; SQL.Add(sSQL); Open; if (not IsEmpty) then begin try msEquData:= TMemoryStream.Create; TBlobField(DMTXTDB.aqryGet.FieldByName ('TES_EQUDATA')).SaveToStream(msEquData); OLEContainer1.LoadFromStream(msEquData as TStream); finally msEquData.Free end; end; finally Close; end; end;
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-07 04:37:46 IP:203.204.xxx.xxx 未訂閱
adrain 你好    如果你是用BDE透過ODBC連結後端資料庫的話,請加大BDE中該別名的Blob Size的數值,預設好像是32 把它改大點吧!32代表32K的大小,表示最多只會查詢出32K blob的欄位值,萬一.doc的大小超過32K時,超過的部就會被切斷,而造成資料錯誤,以上純屬假設,有錯勿怪! _______________________________________ 深藍的魚,祝您好運..........連連
adrain
一般會員


發表:39
回覆:28
積分:13
註冊:2004-07-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-08 10:19:19 IP:61.59.xxx.xxx 未訂閱
謝謝樓上大大的指導,因為之前曾經考慮過用Query會產生像你說的問題,所以我這個程式則改用ADOQuery,只不過用OLEContainer.CreateObjectFromFile(FileName, False)這類的語法,不要經過Stream都沒問題,但是只要使用OLEContainer.LoadFromStream就會顯示出"Invalid Stream Format"的錯誤,時在搞不懂我的錯誤究竟是在哪邊?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-09 03:24:25 IP:203.204.xxx.xxx 未訂閱
adrain 你好    你可試試將欄位內容存成檔案後,再從檔案讀進OLEContainer    TBlobField(DMTXTDB.aqryGet.FieldByName  ('TES_EQUDATA')).SaveToFile('c:\....\FleName.doc');    OLEContainer1.LoadFromFile('c:\....\FleName.doc');     看看是那個環節出問題呢?    _______________________________________ 深藍的魚,祝您好運..........連連
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-09 07:59:49 IP:218.163.xxx.xxx 未訂閱
參考http://www.delphijs.net/Article_Show.asp?ArticleID=397 或上google找有滿多這類的問題 作法好像是讀取要用TBlobStream,不能用TMemoryStream    剛試了一下,好像也不行 後來想一想,這問題好像跟 >....... 如果這樣那 > 來驗證看看.... 發表人 -
------
星期一,二...無窮迴圈@@
adrain
一般會員


發表:39
回覆:28
積分:13
註冊:2004-07-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-09 21:10:34 IP:61.59.xxx.xxx 未訂閱
謝謝Chance36的指導,現在我改用了你的方式,問題已經可以解決了,雖然速度稍微有些可以在加強,但是至少把我這個問題給解決了. 然而現再我又遇上一個問題就是當我OLEContainer.CreateObject('Word.Document.8', False)之後,還要在word裡開啟方程式編輯器進行編輯,這樣的話在程式編寫上要如何實做呢?謝謝!!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-10 11:35:07 IP:61.31.xxx.xxx 未訂閱
這個問題已經被 Chance36 版主給解決了。 建議您所提出新的問題,請重新發問新的標題一次! 這不僅是給答題者一個鼓勵以及尊重。
系統時間:2024-11-05 7:25:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!