1、LoadFromFile后直接跟文件名字符串即可;
2、看一下表中是不是有这个字段;
3、根据经验,BLOB的字段名要大写;
跟踪调试。或者用MessageBox
var
ff: TFileStream;
begin
...
ff := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
//看一下ff的大小
ShowMessage(IntToStr(ff.Size));
TBlobField(FieldByName('file_content')).LoadFromStream(ff);
//看一下BLOBFIeld的大小
ShowMessage(IntToStr(TBlobField(FieldByName('file_content')).BLOBSize));
CDS.Post;
CDS.ApplyUpdates(-1);
CDS.Close;
......
end;
如果还不行,到clientDataSet的OnReconcileError事件中写一句代码,找出问题的关键所在。
ShowMessage(E.Message);
2、看一下表中是不是有这个字段;
3、根据经验,BLOB的字段名要大写;
跟踪调试。或者用MessageBox
var
ff: TFileStream;
begin
...
ff := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
//看一下ff的大小
ShowMessage(IntToStr(ff.Size));
TBlobField(FieldByName('file_content')).LoadFromStream(ff);
//看一下BLOBFIeld的大小
ShowMessage(IntToStr(TBlobField(FieldByName('file_content')).BLOBSize));
CDS.Post;
CDS.ApplyUpdates(-1);
CDS.Close;
......
end;
如果还不行,到clientDataSet的OnReconcileError事件中写一句代码,找出问题的关键所在。
ShowMessage(E.Message);
我把file_content字段刪掉後file_extension也出同樣的問題.
我正在查錯.....
我現在碰到新錯'ORA--01465 此一16進位數字無效.' 此錯誤是在下面的事件中打印出的;procedure TDM2.ClientDS1ReconcileError();
begin
ShowMessage(E.Message);
end;
這是什麼原因???
server端; ADOConnection1+ADOQuery1+DataSetProvider1
client端; SocketConnection1+ClientDataSet1--/*No: 9 教育訓練文件表 */
create table tab_file (
file_name varchar2(100) not null ,/*文件名 */
file_content blob not null ,/*文件內容 */
file_extension varchar2(10) null ,/*文件擴展名 */
file_note varchar2(80) Null,/*備註 */
file_flag varchar2(4) Null,/* 標志*/
file_drop char(1) default 'F',/*是否被刪除,T表示是,F表示否*/
modstaff varchar2(15) null ,/*最後修改或創建者工號 */
modtime date not null ,/*最後修改或創建者工號 */
primary key(file_name,modtime)
);