用ADOCommand向SQL7中存储Word文档.(100分)

  • 主题发起人 主题发起人 少爷的拐杖
  • 开始时间 开始时间

少爷的拐杖

Unregistered / Unconfirmed
GUEST, unregistred user!
.....
ADOCommand1.CommandText:='Intsert Into User_Document (文件名,说明文字,文书,属性) Values (:文件名,:说明文字,:文书,:属性)';
ADOCommand1.Parameters.ParamByName('文件名').Value:=Lb_FileName.Caption;
ADOCommand1.Parameters.ParamByName('说明文字').Value:=Edit1.Text;
ADOCommand1.Parameters.ParamByName('属性').Value:=0;
ADOCommand1.Parameters.ParamByName('文书').LoadFromFile(OpenDialog1.FileName,ftblob);
try
ADOCommand1.Execute;
except
//......
end;
出现类型被不正确的定义错误.
文书字段定义的是image型.我该怎么用insert语句来添加记录呢?
 
这个我就只好来听课了
 
怎么没人回答?
 
var
st: TmemoryStream;
begin
st := tmemorytream.create('');
st.loadfromfile(filename)
query1.sql.text := 'insert into table(fieldname) values (:bm)';
query1.parambyname('bmp').asblob := st;
query1.execsql;
st.free;
end;
//试试.
 
var
st: TmemoryStream;
begin
st := tmemorytream.create(''); //这句通不过
st.loadfromfile(filename)
query1.sql.text := 'insert into table(fieldname) values (:bm)';
query1.parambyname('bmp').asblob := st;
query1.execsql;
st.free;
end;
//而且ADOCommand没有parambyname('bmp').asblob这样的用法,得给.Value赋值.
以前看到什么TADOStream的,可是现在找不着那个帖子了.
 
我来听听
 
var
ADOBS: TADOBlobStream;
begin
ADOCommand1.CommandText:='Intsert Into User_Document (文件名,说明文字,文书,属性) Values (:文件名,:说明文字,:文书,:属性)';
ADOCommand1.Parameters.ParamByName('文件名').Value:=Lb_FileName.Caption;
ADOCommand1.Parameters.ParamByName('说明文字').Value:=Edit1.Text;
if RadioButton1.Checked then
ADOCommand1.Parameters.ParamByName('属性').Value:=Form1.User_Code;
if RadioButton1.Checked then
ADOCommand1.Parameters.ParamByName('属性').Value:=0;
//ADOBS := TADOBlobStream.create(????,bmWrite);//此处不知该如何写参数,它要求一个字段,但是当前
//没有打开表,无法赋一个字段做为参数
//ADOBS.LoadFromFile(OpenDialog1.FileName);
//ADOBS.Position:=0;
ADOCommand1.Parameters.ParamByName('文书').LoadFromFile(OpenDialog1.FileName,ftBlob);
//此句能运行,但是adocommand提交时出错.各位,说个话呀.
 
数据库字段选择image,长度16,代码如下
begin
with ADOCommand1 do
begin
close;
sql.clear;
sql.Add('Into User_Document (文件名,说明文字,文书,属性) Values (:文件名,:说明文字,:文书,:属性');
parameters.ParamByName('文件名').Value:=Lb_FileName.Caption;
...............
try
parameters.ParamByName('文书').LoadFromFile(OpenDialog1.FileName,ftblob);
except
end;
prepared;
try
Execsql;
result:=true;//运行正常
except
// raise;
result:=false;//出错了返回
end;
end;
end;
这个是从我的程序里摘出来的,根据你的要求改了一下,我实验过图片,动画都没有问题,
你在实验看看,有问题我再帮你看看!
 
解决问题了,
hukaijt是正确的,我原先也对,不过我的错误如下(FT!这种错误)
if RadioButton1.Checked then
ADOCommand1.Parameters.ParamByName('属性').Value:=Form1.User_Code;
if RadioButton1.Checked then //打错,应该是radiobutton2,重复定义引起错误.倒霉!
~~~~
ADOCommand1.Parameters.ParamByName('属性').Value:=0;

 
后退
顶部