三层结构,word文件要保存再数据库中, 并且能取出来,编辑、修改,保存(word打开)。。
数据库中字段是blod字段, (大家看看这段代码有什么问题吗。)
str:Tmemorystream;//添加文件保存
.......
sStr:= ' INSERT INTO DB2.table1(XH,ZHH,tp) values (:tp)....................;
str:=Tmemorystream.Create;
str.LoadFromFile(FileName);
str.Position:=0;
with qryTmp begin
Close;
SQl.Clear;
SQL.Add(sStr);
TBlobField(ParamByName('TP')).LoadFromStream(str);
//qryTmp.ParamByName('TP').LoadFromStream(str,ftblob);
Post;
endl;但是保存word文件老是老错,为什么??谢谢了
数据库中字段是blod字段, (大家看看这段代码有什么问题吗。)
str:Tmemorystream;//添加文件保存
.......
sStr:= ' INSERT INTO DB2.table1(XH,ZHH,tp) values (:tp)....................;
str:=Tmemorystream.Create;
str.LoadFromFile(FileName);
str.Position:=0;
with qryTmp begin
Close;
SQl.Clear;
SQL.Add(sStr);
TBlobField(ParamByName('TP')).LoadFromStream(str);
//qryTmp.ParamByName('TP').LoadFromStream(str,ftblob);
Post;
endl;但是保存word文件老是老错,为什么??谢谢了
解决方案 »
- WebOffice控件和视频压缩/解压传输delphi源码(讨论)
- 麻烦各位帮忙改下这两个VB的东西改成DELPHI的
- 【indy醒目】indy pop3控件收邮件出错了...
- 怎样在Delphi中用ADO组件在数据表格组件中实现类似ASP分页? 请高手指教 高分献上!
- 请问怎样用Delphi实现在IE将网页显示出来之前有条件的过滤全部网页内容或部分内容?
- 获取系统消息数值???
- 关于TMaskEdit
- =rand(200,99),把上面的这行字输入到空白的WORD的文档里然后回车,出现的现象据说连比尔盖茨也解释不清楚。
- 图象抖动问题
- 请问oracle中这个sql语句怎么写才正确? select top 1 id from table1;
- TWebBrowser浏览网页时怎么能得到网页的cookies的信息?就像MYIE里的扩展功能(ViewPage)一样.
- delphi 中二进制如何表示
.......
sStr:= ' INSERT INTO DB2.table1(XH,ZHH,tp) values (:tp)....................;
str:=Tmemorystream.Create;
str.LoadFromFile(FileName);
str.Position:=0;
with qryTmp begin
Close;
SQl.Clear;
SQL.Add(sStr);
Prepared;
TBlobField(ParamByName('TP')).LoadFromStream(str);
//qryTmp.ParamByName('TP').LoadFromStream(str,ftblob);
ExecSQL;
endl;
procedure TForm1.Button1Click(Sender: TObject);
var
tempFile:TMemoryStream;
strName:string;
begin
strName:='F:\temp .doc';
try
tempFile := TMemoryStream.Create ;
tempFile.LoadFromFile(strName);
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert into file1(id, afile) values(1,:FileSelf)');
parameters.ParamByName('FileSelf').LoadFromStream(tempFile, ftBlob);
ExecSql;
end;
finally
tempFile.Free;
end;
========================
//---------------add--2003-05-07---sunfx
{
function filedisplay
从数据库里将文章显示在ole当中
}
procedure Tyeargzcgwritefrm.filedisplay(var bh:string;tablename:string);
var
strstream:Tmemorystream;
str_query:string;
begin
str_query:='select topic from '+tablename+' where bh='''+bh+'''';
OleContainer1.DestroyObject;
strstream := Tmemorystream.Create;
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.SQL.Add(str_query) ;
adoquery1.open ;
adoquery1.First;
Tblobfield(adoquery1.fieldbyname('topic')).savetostream(strstream);
strstream.position:=0;
OleContainer1.loadfromstream(strstream);
strstream.free;
end;
===============
tempFile.LoadFromFile(strName)后面加上tempFile.Position := 0 呢??
为什么, 谢谢大家关注。
保存:
procedure TFrmWord.Button9Click(Sender: TObject);
var
FileName:string;
sm:TstringStream;
begin
try
if opendialog1.Execute then begin
FileName:=opendialog1.FileName;
olecontainer1.CreateObjectFromFile(FileName,true);
olecontainer1.DoVerb(ovPrimary);
sm := tstringstream.create('');
olecontainer1.savetostream(sm);
with dm.qryTemp do
begin
append;
TBlobFIELD(Fieldbyname('data')).LoadFromStream(sm);
post;
end;
finally
sm.free;
end;
end;
显示:
procedure TFrmWord.Button5Click(Sender: TObject);
var
srm:Tstream;
begin
try
srm := dm.qryTemp.CreateBLOBSTREAM(dm.qryTemp.fieldbyname('data'),bmRead);
if srm.Size = 0 then
begin
srm.Free;
Exit;
end;
OleContainer1.CreateObject('word.document',true)
olecontainer1.loadfromstream(srm);
finally
srm.free;
end;
end;
接分..................