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

blob问题!

缺席
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-29 13:46:07 IP:218.80.xxx.xxx 未訂閱
把选择的文件放入一字段: TBlobField(QryMaster.FieldByName('Content')).LoadFromFile(Opendialog.FileName);保存是SQL语句会出错!请问是和原因?
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-29 14:43:10 IP:218.80.xxx.xxx 未訂閱
如果SQL语句不出错,但保存后还是为空值?请问是何原因?
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-29 15:37:25 IP:218.164.xxx.xxx 未訂閱
之前用BDE元件來存取Blob欄位時,也有發生像你一樣的問題,後來發現是BDE元件本身的問題,換成ADO元件後就OK了,建議試看看吧!!
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-29 16:14:37 IP:218.80.xxx.xxx 未訂閱
请问有无ADO的代码示例?
Mickey
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-29 21:49:33 IP:218.32.xxx.xxx 未訂閱
sl@cableplus.com.cn 你好:    用 Transaction 試試看, 如:
Database1.StartTransaction;
try
  TBlobField(QryMaster.FieldByName('Content')).LoadFromFile(Opendialog.FileName);
  Database1.commit;
except
  DataBase.RollBack;
  raise;
end;   
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-29 23:49:30 IP:219.129.xxx.xxx 未訂閱
引言: 把选择的文件放入一字段: TBlobField(QryMaster.FieldByName('Content')).LoadFromFile(Opendialog.FileName);保存是SQL语句会出错!请问是和原因?
var FileStream: TFileStream; BLOBStream: TBLOBStream; begin if FileExists(Opendialog1.FileName) then begin QryMaster.Edit; try FileStream := TFileStream.Create(Opendialog1.FileName, fmOpenRead); try BLOBStream := TBLOBStream.Create(TBLOBField(Table1.FieldByName('Content')),bmReadWrite);试试这样写行不行 BLOBStream.CopyFrom(FileStream, FileStream.Size); finally BLOBStream.Free; end; QryMaster.Post; finally FileStream.Free; end; end; end; ——行径窄处,留一步与人行——
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-30 09:15:49 IP:218.80.xxx.xxx 未訂閱
根据大大的代码保存结果仍然为空!我是用BDE
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-30 09:21:25 IP:218.80.xxx.xxx 未訂閱
TBlobField(ADOQuery1.FieldByName(Column_Name)).loadfromStream(Word_FileStream); 请问如果改成ADO写法,那ADOQUERY1里应该怎么写SQL语句?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-30 13:12:41 IP:218.15.xxx.xxx 未訂閱
引言: 根据大大的代码保存结果仍然为空!我是用BDE
不知你是通过什么来读出来的?可否告之,因为我测试了能传值给Content,也没出现问题。 ——行径窄处,留一步与人行——
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-30 13:19:42 IP:218.80.xxx.xxx 未訂閱
这就是我的全部代码啊?不知道怎么读出来?ADO里的SQL语句(select content from smalldoc) Word_FileStream := TFileStream.Create(Opendialog1.FileName, fmOpenWrite or fmCreate); Word_FileStream.Position := 0; try // Word_FileStream.LoadFromFile(Opendialog1.FileName); AdoUpdateContent.edit; TBlobField(AdoUpdateContent.FieldByName('Content')).LoadFromStream(Word_FileStream); AdoUpdateContent.Post;
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-03-31 14:03:10 IP:218.164.xxx.xxx 未訂閱
引言: 请问有无ADO的代码示例?
從檔案存入資料庫: adoQuery.Close; adoQuery.SQL.Clear; adoQuery.Parameters.Clear; adoQuery.SQL.Add('INSERT INTO [FileTable] (FileData)'); adoQuery.SQL.Add('VALUES (:FileData)'); adoQuery.Parameters.ParamByName('FileData').LoadFromFile('FileName.doc',ftBlob); adoQuery.ExecSQL; 從資料庫中讀出來存成檔案: TBlobField(adoQuery.FieldByName('FileData')).SaveToFile('FileName.doc');
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-03-31 18:32:22 IP:218.80.xxx.xxx 未訂閱
非常感谢minjiu大大!!! 还有一个问题,我在编辑状态下,按一个按钮就直接可以把保存进去的WORD打开,请问该怎么办?
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-04-01 09:41:14 IP:218.80.xxx.xxx 未訂閱
我现在另存为的文件 TBlobField(QryMaster.FieldByName('content')).SaveToFile(SaveDialog1.FileName); 都打不开,一是说要检查文档或驱动器的文件权限,二是说要定位文档,但定位以后还是不能打开,请教是怎么回事?
woodss
一般會員


發表:13
回覆:24
積分:17
註冊:2003-07-24

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-04-02 15:03:47 IP:61.64.xxx.xxx 未訂閱
請問你的 QryMaster 是TQuery 還是 Ttable 如果是TQuery 你的 RequestLive 設成 TRUE 如果你的 select xxxx where xxxxx 後面指令很煩長 TQuery 會無法回寫 你要用另外一的 Table 或 Tquery元件找到要更新的此筆資料在更新來做
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-04-05 09:54:01 IP:218.164.xxx.xxx 未訂閱
引言: 我现在另存为的文件 TBlobField(QryMaster.FieldByName('content')).SaveToFile(SaveDialog1.FileName); 都打不开,一是说要检查文档或驱动器的文件权限,二是说要定位文档,但定位以后还是不能打开,请教是怎么回事?
if SaveDialog1.Execute then TBlobField(QryMaster.FieldByName('content')).SaveToFile(SaveDialog1.FileName); ------------------------------------------------------------------ // 以對應的應用程式,將文件開啟 uses ShellAPI; .... .... // 暫存文件 TBlobField(QryMaster.FieldByName('DocContent')).SaveToFile('temp.doc'); // 呼叫對應的應用程式,將文件開啟 ShellExecute(Application.handle,pchar('OPEN'),pchar('temp.doc'),nil,nil,0);
系統時間:2024-06-02 2:33:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!