本人正主持一项目,遇到难题,特向各位专家请教,如果提供正确的解决方法,将略表心意,500元内我都可签字解决。具体如下:delphi6+Access完成一个有关公文流转的项目。在数据表中包括许多已经做好word文档模板,不同用户进去后选择不同模板名,即可显示该word模板,在word文档上填写相关内容后,保存之后,发送给领导签字,最好还要有“痕迹”的功能,及不同用户对文档的修改应有不同的标记。我用Olecontainer来装载access数据表,但是一直出现“invalid stream format”的错误。代码如下: Table.Open;
stream:=Tmemorystream.Create;
try
TBlobField(Table.FieldByName('Template')).SaveToStream(stream);
if stream.Size>0 then
begin
stream.Position:=0;
Ole.LoadFromStream(stream);
Ole.DoVerb(1);
end;
Finally
stream.Free;
End;
Ole.Refresh;
如果那位专家做过相关项目,请赐招,如有代码,请发送邮箱 [email protected]。汇款方式由专家指定。
stream:=Tmemorystream.Create;
try
TBlobField(Table.FieldByName('Template')).SaveToStream(stream);
if stream.Size>0 then
begin
stream.Position:=0;
Ole.LoadFromStream(stream);
Ole.DoVerb(1);
end;
Finally
stream.Free;
End;
Ole.Refresh;
如果那位专家做过相关项目,请赐招,如有代码,请发送邮箱 [email protected]。汇款方式由专家指定。
解决方案 »
- 决不吝啬分;在使用SPCOMM中Tlist出现list index out of bounds(),高手进来看看,有贴代码!
- 怎样获取一个脚本错误的对话框 然后按《是》呢?
- 一个比较有深度的问题,请高手来解决啦
- 100分帮忙开发一个activex控件
- update问题,按钮点击提交,但如果点击两次就会报“一次执行无法提交两次结果”的错
- 高分求救!看看吧,一段小程序,数据库记录竟然未随之增减?!...程序语句?属性设置? 等待...
- 继续调查:进者有分,不含任何商业目的.
- 我哭了,这个stringGrid总是只显示一列
- 高分求能播放rm格式文件的控件
- 十万火急,同志们
- 怎样给控件加上滚动条
- 请教一个关于串口的问题?
adotable1.Edit ;
tblobfield(adotable1.FieldByName('s6')).loadfromfile('c:\test.txt');//或者是loadfromstream() ;
adotable1.Post ;
//取出表中ole对象字段的值
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from bb');
adoquery1.Open ;
tblobfield(adoquery1.FieldByName('s6')).savetofile('c:\test1.txt') ;
richedit1.Lines.Clear ;
richedit1.Lines.LoadFromFile('c:\test1.txt') ;
richedit1.Text := tblobfield(adoquery1.FieldByName('s6')).value ;
//用动态sql语句插入有ole对象字段的记录
sqlstring := 'insert into bb(s1,s2,s6) values("12","45",:bb)' ;
adoquery1.SQL.Add(sqlstring) ;
adoquery1.Parameters.ParamByName('bb').loadfromfile('c:\test1.txt',ftblob) ;
adoquery1.execsql;
The following example copies the data in the Notes field of Table1 to the Res field of ClientDataSet1.procedure TForm1.Button1Click(Sender: TObject);var
Stream1: TBlobStream;
Stream2: TStream;
begin
Stream1 := TBlobStream.Create(Table1Notes, bmRead);
try
ClientDataSet1.Edit;
{ here抯 a different way to create a blob stream }
Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Res'), bmReadWrite);
try
Stream2.CopyFrom(Stream1, Stream1.Size);
ClientDataSet1.Post;
finally
Stream2.Free;
end; finally
Stream1.Free;
end;
end;
写
procedure TForm1.Button3Click(Sender: TObject);
var
sFileName:string;
function BlobContentToString(const filename:string):string;
begin
with TFileStream.Create(FileName,fmOpenRead) do
try
SetLength(Result,Size);
Read(Pointer(Result)^,Size);
finally
Free;
end;
end;
begin
if(OpenDialog1.Execute)then
begin
sFileName:=OPenDialog1.FileName;
ADODataSet1.Edit;
ADODataSet1.FieldByName('Blobs').AsString:=BlobContentToString(sFilename);
ADODataSet1.Post;
ADODataSet1.Close;
ADODataSet1.Open;
end;
end;读:
procedure TForm1.Button4Click(Sender: TObject);
var
sFileName:string;
Bs:TADOBlobStream;
begin
Bs:=TADOBlobStream.Create(TBlobField(adodataset1.FieldByName('Blobs')),bmread);
try
sFileName:=ExtractFilePath(Application.ExeName)+'tmpBlob';
sFileName:=sFileName+'.'+ADODataSEt1.fieldbyname('extension').AsString;
Bs.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName,False);
finally
Bs.Free;
end;
end;楼主说话算话啊,公布源码,估计俺这边也要做个相类似的工程吧
我正在研究,有结果一定告诉你。