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

三層式 ADO BLOB 物件寫入DB2 失敗

缺席
dky
一般會員


發表:12
回覆:30
積分:13
註冊:2004-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-04 17:29:13 IP:61.228.xxx.xxx 未訂閱
請問一下各位... 現在遇到個問題 原本用3TIR ADO直接下QUERY 寫入DB2. 但發生insert時db2不認得blob欄位的錯誤 所以改用先OPEN再APPEND的方式寫入(覺得怪怪的方式,應該有更好的方法)    這種方法可以成功,但卻只對部份的table有用, 像是新建的table有用,如table A ,B ,C....等 某些特定table卻沒有用,如Table Cust等等... 會出現以下錯誤, (只有部份table發生,是以create table 的身份去新增, 所以應無權限錯誤,且確定table存在)
程式碼如下: ClientDataset.CommandText := 'Select BRANCHID from ImageData where BRANCHID = ''-0001'' '; ClientDataset.Open; ClientDataset.Append; ClientDataset.FieldByName('BranchID').Value := BranchID; ClientDataset.FieldByName('DocID').Value := DocID; TBlobField(ClientDataset.FieldByName('SealPtx')).Assign(QrytmpImage.FieldByName('SealPtx')); ClientDataset.FieldByName('DocStatus').Value := 'A'; ClientDataset.ApplyUpdates(-1); 環境如下: DB2→ ADOQUERY→ DATAPROVIDER→ SOCKETCONNECT→ CLIENTDATASET PS.已試過不用3TIR,只用ADO單讀寫入DB2沒問題 所以猜測是clientdataset或dataprovider的問題 發表人 - dky 於 2005/03/04 17:35:09
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-05 09:55:27 IP:218.1.xxx.xxx 未訂閱
Assign的用法可能不妥,你试试看 MS:TMemoryStream; TBlobField(QrytmpImage.FieldByName('SealPtx')).SaveToStream(MS); MS.Position:=0; TBlobField(ClientDataset.FieldByName('SealPtx')).LoadFromStream(MS);     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-05 11:39:28 IP:61.141.xxx.xxx 未訂閱
错误信息是说那个SVSAP1名字没定义。 从这个方向查查原因? 比如Table的名字和Field的名字,或者大小写问题。
系統時間:2024-04-20 7:37:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!