请问各位大虾:opendalog可不可以打开WORD文档? opendialog本身只是选择一个文件,主要用它来返回要使用的文件的文件名(Dlg.FileName),至于如何打开文件和进行操作要自己写代码,打开Word文件的话,用ShellExecute就行了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 再问一个问题: var ms:Tmemorystream;begin ms:=Tmemorystream.create; Query1.open; Query1.insert; Query1.filedbyname('field1').value:=... Query1.filedbyname('field2').value:=... OleContainer1.savetostream(ms); ms.position:=0; TBlobField(Query1.fieldbyname('存放文档的字段')).loadfromstream(ms); ms.free; Query1.post; Query1.applyupdates; end;写进数据库后;如何从数据库把它读出来??? 呵呵,小小变通一下:TBlobField(Query1.fieldbyname('存放文档的字段')).savetostream(ms);ms.position:=0;OleContainer1.loadfromstream(ms);ms.free; TO skimwater(掠水惊鸿) : 报错了!说地址不对!!! TO skimwater(掠水惊鸿) 给个例子! : var ms:Tmemorystream;begin ms:=Tmemorystream.create; Query1.open; Query1.first; TBlobField(Query1.fieldbyname('存放文档的字段')).savetostream(ms); ms.position:=0; OleContainer1.loadfromstream(ms); ms.free; end; 若OleContainer1里开始就有内容,想用OleContainer1.DestroyObject把它清除。 TO skimwater(掠水惊鸿) : 运行后系统会报“STREAM READ ERROR”的错误! 很有可能是你的ms是空的。就是说你的ms没有从表里面读到数据。 procedure Tfrmdyqk1.Button1Click(Sender: TObject);var stringstream:TStringStream;begin StringStream := TStringStream.Create (''); Memo1.Lines.SaveToStream (StringStream); //在这里创建一个字符流 StringStream.Position := 0; with Query1.SQL do begin Clear; Add ('insert into oadbo.bw_qwb (wjid,Wjdid,kzm,qw)' + ' values (:a, 0, :b, :c)'); end; with Query1 do begin ParamByName ('a').asstring :=IntToStr(66666666); ParamByName ('b').asstring := 'txt'; ParamByName ('c').asBlob := StringStream.DataString; //就在这里赋值 end; StringStream.Free; //用完了马上Free掉 Query1.ExecSQL; //开始插入记录end;procedure Tfrmdyqk1.Button2Click(Sender: TObject); var strstream:Tmemorystream; //ls_qw:string;begin OleContainer1.DestroyObject; strstream := Tmemorystream.Create; query1.Close; query1.sql.clear; query1.SQL.Add('select qw from oadbo.bw_qwb where wjid =' + inttostr(66666666)); query1.open ; query1.First; strstream.position:=0; Tblobfield(query1.fieldbyname('qw')).savetostream(strstream); OleContainer1.loadfromstream(strstream); strstream.free;end; procedure Tfrmdyqk1.Button1Click(Sender: TObject);var stringstream:TStringStream;begin StringStream := TStringStream.Create (''); OleContainer1.SaveToStream (StringStream); //在这里创建一个字符流 StringStream.Position := 0; with Query1.SQL do begin Clear; Add ('insert into oadbo.bw_qwb (wjid,Wjdid,kzm,qw)' + ' values (:a, 0, :b, :c)'); end; with Query1 do begin ParamByName ('a').asstring :=IntToStr(66666666); ParamByName ('b').asstring := 'txt'; ParamByName ('c').asBlob := StringStream.DataString; //就在这里赋值 end; StringStream.Free; //用完了马上Free掉 Query1.ExecSQL; //开始插入记录end;procedure Tfrmdyqk1.Button2Click(Sender: TObject); var strstream:Tmemorystream; //ls_qw:string;begin OleContainer1.DestroyObject; strstream := Tmemorystream.Create; query1.Close; query1.sql.clear; query1.SQL.Add('select qw from oadbo.bw_qwb where wjid =' + inttostr(66666666)); query1.open ; query1.First; strstream.position:=0; Tblobfield(query1.fieldbyname('qw')).savetostream(strstream); OleContainer1.loadfromstream(strstream); strstream.free;end; ParamByName ('c').asBlob := StringStream.DataString; 这句赋值格式OleContainer不认识。下面一段: strstream.position:=0; Tblobfield(query1.fieldbyname('qw')).savetostream(strstream); OleContainer1.loadfromstream(strstream);应改为:Tblobfield(query1.fieldbyname('qw')).savetostream(strstream);strstream.position:=0;OleContainer1.loadfromstream(strstream); TO skimwater(掠水惊鸿) : ParamByName ('c').asBlob := StringStream.DataString; 这句赋值格式OleContainer不认识。有没有介绍??? 你用下面的方法来写入表:bw_qwb var ms:TMemoryStream;begin ms:= TMemoryStream.create; OleContainer1.SaveToStream (ms); ms.Position := 0; Query1.close; Query1.sql.clear; Query1.sql.text:='select * from bw_qwb'; Query1.open; Query1.append; Query1.fieldbyname('...').value:=... ... TBlobField(Query1.fieldbyname('qw')).loadfromstream(ms); ms.free; Query1.post; Query1.applyupdates; Query1.close;end; TO skimwater(掠水惊鸿) : 上述方法,数据库会包错! “cannot modify a read-only dataset” TO skimwater(掠水惊鸿) : 我按你说的方法还是不行,会报错! “cannot modify a read-only dataset” 或 “STREAM READ ERROR”! 将Query1的requestlive属性设为true; TO skimwater(掠水惊鸿) : var ms:TMemoryStream;begin ms:= TMemoryStream.create; OleContainer1.SaveToStream (ms); ms.Position := 0; Query1.close; Query1.sql.clear; Query1.sql.text:='select * from bw_qwb'; Query1.open; Query1.append; Query1.fieldbyname('...').value:=... ... TBlobField(Query1.fieldbyname('qw')).loadfromstream(ms); ms.free; Query1.post; Query1.applyupdates; Query1.close;end; 没反映,也不报错,数据也没进数据库,怎么回事??? TO skimwater(掠水惊鸿) : 又报错了!“query1.not in cached update mode” TO skimwater(掠水惊鸿) : 我换了一个服务器调WOED文档就就会报错:“服务器运行错误”指向: Olecontainer1.Doverb(ovShow); 是否还要其他设置??? 运行delph时出现class TdxDockSite not found。请问缺少什么控件 哪里可以下载到 无窗体程序使用线程的问题 modelmaker 怎样生成窗体文件? 如何用程序获得Tobject的全部属性、方法、事件的名称 如何使用string型的类名创建此类对象的方法? 用delphi组件开发的浏览器无法使用ctrl+c,ctrl+v热键 如何在运行时打开ADOConnection的ConnectionString向导? 求助 如何产生鼠标的移动和点击的效果?谢谢 同时作为DELPHI程序员和VB程序员的工资疑问 如何获得程序所在的目录? 一个中肯的建议
var
ms:Tmemorystream;
begin
ms:=Tmemorystream.create;
Query1.open;
Query1.insert;
Query1.filedbyname('field1').value:=...
Query1.filedbyname('field2').value:=...
OleContainer1.savetostream(ms);
ms.position:=0;
TBlobField(Query1.fieldbyname('存放文档的字段')).loadfromstream(ms);
ms.free;
Query1.post;
Query1.applyupdates;
end;写进数据库后;如何从数据库把它读出来???
TBlobField(Query1.fieldbyname('存放文档的字段')).savetostream(ms);
ms.position:=0;
OleContainer1.loadfromstream(ms);
ms.free;
报错了!说地址不对!!!
给个例子!
var
ms:Tmemorystream;
begin
ms:=Tmemorystream.create;
Query1.open;
Query1.first;
TBlobField(Query1.fieldbyname('存放文档的字段')).savetostream(ms);
ms.position:=0;
OleContainer1.loadfromstream(ms);
ms.free;
end; 若OleContainer1里开始就有内容,想用OleContainer1.DestroyObject把它清除。
运行后系统会报“STREAM READ ERROR”的错误!
var stringstream:TStringStream;
begin
StringStream := TStringStream.Create ('');
Memo1.Lines.SaveToStream (StringStream); //在这里创建一个字符流
StringStream.Position := 0;
with Query1.SQL do
begin
Clear;
Add ('insert into oadbo.bw_qwb (wjid,Wjdid,kzm,qw)'
+ ' values (:a, 0, :b, :c)');
end; with Query1 do
begin
ParamByName ('a').asstring :=IntToStr(66666666);
ParamByName ('b').asstring := 'txt';
ParamByName ('c').asBlob := StringStream.DataString; //就在这里赋值
end;
StringStream.Free; //用完了马上Free掉
Query1.ExecSQL; //开始插入记录
end;procedure Tfrmdyqk1.Button2Click(Sender: TObject);
var strstream:Tmemorystream;
//ls_qw:string;
begin
OleContainer1.DestroyObject;
strstream := Tmemorystream.Create; query1.Close;
query1.sql.clear;
query1.SQL.Add('select qw from oadbo.bw_qwb where wjid =' + inttostr(66666666));
query1.open ;
query1.First;
strstream.position:=0;
Tblobfield(query1.fieldbyname('qw')).savetostream(strstream);
OleContainer1.loadfromstream(strstream); strstream.free;
end;
var stringstream:TStringStream;
begin
StringStream := TStringStream.Create ('');
OleContainer1.SaveToStream (StringStream); //在这里创建一个字符流
StringStream.Position := 0;
with Query1.SQL do
begin
Clear;
Add ('insert into oadbo.bw_qwb (wjid,Wjdid,kzm,qw)'
+ ' values (:a, 0, :b, :c)');
end; with Query1 do
begin
ParamByName ('a').asstring :=IntToStr(66666666);
ParamByName ('b').asstring := 'txt';
ParamByName ('c').asBlob := StringStream.DataString; //就在这里赋值
end;
StringStream.Free; //用完了马上Free掉
Query1.ExecSQL; //开始插入记录
end;procedure Tfrmdyqk1.Button2Click(Sender: TObject);
var strstream:Tmemorystream;
//ls_qw:string;
begin
OleContainer1.DestroyObject;
strstream := Tmemorystream.Create; query1.Close;
query1.sql.clear;
query1.SQL.Add('select qw from oadbo.bw_qwb where wjid =' + inttostr(66666666));
query1.open ;
query1.First;
strstream.position:=0;
Tblobfield(query1.fieldbyname('qw')).savetostream(strstream);
OleContainer1.loadfromstream(strstream); strstream.free;
end;
不认识。下面一段:
strstream.position:=0;
Tblobfield(query1.fieldbyname('qw')).savetostream(strstream);
OleContainer1.loadfromstream(strstream);应改为:Tblobfield(query1.fieldbyname('qw')).savetostream(strstream);strstream.position:=0;
OleContainer1.loadfromstream(strstream);
ParamByName ('c').asBlob := StringStream.DataString; 这句赋值格式OleContainer
不认识。有没有介绍???
var ms:TMemoryStream;
begin
ms:= TMemoryStream.create;
OleContainer1.SaveToStream (ms);
ms.Position := 0;
Query1.close;
Query1.sql.clear;
Query1.sql.text:='select * from bw_qwb';
Query1.open;
Query1.append;
Query1.fieldbyname('...').value:=...
...
TBlobField(Query1.fieldbyname('qw')).loadfromstream(ms);
ms.free;
Query1.post;
Query1.applyupdates;
Query1.close;
end;
上述方法,数据库会包错!
“cannot modify a read-only dataset”
我按你说的方法还是不行,会报错!
“cannot modify a read-only dataset”
或
“STREAM READ ERROR”!
var ms:TMemoryStream;
begin
ms:= TMemoryStream.create;
OleContainer1.SaveToStream (ms);
ms.Position := 0;
Query1.close;
Query1.sql.clear;
Query1.sql.text:='select * from bw_qwb';
Query1.open;
Query1.append;
Query1.fieldbyname('...').value:=...
...
TBlobField(Query1.fieldbyname('qw')).loadfromstream(ms);
ms.free;
Query1.post;
Query1.applyupdates;
Query1.close;
end; 没反映,也不报错,数据也没进数据库,怎么回事???
又报错了!“query1.not in cached update mode”
我换了一个服务器调WOED文档就就会报错:“服务器运行错误”指向:
Olecontainer1.Doverb(ovShow);
是否还要其他设置???