opendialog本身只是选择一个文件,主要用它来返回要使用的文件的文件名(Dlg.FileName),至于如何打开文件和进行操作要自己写代码,打开Word文件的话,用
ShellExecute就行了
ShellExecute就行了
解决方案 »
- m_nMyAddress := $64什么意思啊
- 大家好,请教将float型数的小数点后的数值保留两位该怎么做?
- 如何得到ping值呢?
- 李寻欢之痛
- 如果使RICHEDIT的某一行右中或靠左?
- 怎么统计数据后生成报表,马上送分!!!
- 牛虻收购以下东东(纯粹为了学习):数据库表超过30个表的实际mis成品的所有资料,包括开发文档(1000分/个),数据库表(1000分/个),模块源代码(1000分/个可以不全)等,偶要见识一下//牛虻
- 折腾了许多时间,仍然不知道这个XPmenu控件到底怎么用,厚着脸皮求救!唉!
- tikkypeng(一两狂死郎之天衣有缝) 昨天问题解决了
- 请教:MIDAS的概念是什么,起什么作用的呢?
- 如何获得程序所在的目录?
- 一个中肯的建议
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);
是否还要其他设置???