Delphi编程时,如何从Access中读出一个Ole对象的字段 access ole

proceduretowordsave(sourcetablename:string;sourceid:integer;dataset:tadodataset);

var

sCommandLine:string;

bCreateProcess:boolean;

lpStartupInfo:TStartupInfo;

lpProcessInformation:TProcessInformation;

MemSize:Integer;

Buffer:PChar;

MyFile:TFileStream;

Stream:TADOBlobStream;

RegF:TRegistry;

begin

RegF:=TRegistry.Create;//查看.doc文档的打开程序

RegF.RootKey:=HKEY_classes_root;

try

RegF.OpenKey('worddocumentprotocolstdfileeditingserver',True);

sCommandLine:=regf.ReadString('')+''+ExtractFilePath(Application.EXEName)+'temp.doc';

except

End;

RegF.CloseKey;

RegF.Free;

dataset.Close;

dataset.commandtext:='select*from二进制文档where来源='''+sourcetablename+'''and来源id='+inttostr(sourceid);

dataset.open;

ifnotdataset.eofthen

begin

MyFile:=TFileStream.Create(ExtractFilePath(Application.EXEName)+'temp.tmp',fmCreate);

Stream:=TADOBlobStream.Create(dataset.FieldByName('内容')asTBlobField,bmRead);

MemSize:=Stream.Size;

Inc(MemSize);

Buffer:=AllocMem(MemSize);

try

Stream.Read(Buffer^,MemSize);

MyFile.Write(Buffer^,MemSize);

finally

MyFile.Free;Stream.Free;

end;

ifFileExists(ExtractFilePath(Application.EXEName)+'temp.DOC')thenDeleteFile(ExtractFilePath(Application.EXEName)+'temp.DOC');

ifFileExists(ExtractFilePath(Application.EXEName)+'temp.tmp')thenRenameFile(ExtractFilePath(Application.EXEName)+'temp.tmp',ExtractFilePath(Application.EXEName)+'temp.DOC');

end

else

begin

ifFileExists(ExtractFilePath(Application.EXEName)+'empty.DOC')then

copyfile(pchar(ExtractFilePath(Application.EXEName)+'empty.DOC'),pchar(ExtractFilePath(Application.EXEName)+'temp.DOC'),false)

elsebegin

ShowMessage('<'+ExtractFilePath(Application.EXEName)+'empty.DOC>不存在!');

dataset.close;

exit;

end;

end;

dataset.close;

//sCommandLine:='C:ProgramFilesMicrosoftOfficeOfficewinword.exe'+ExtractFilePath(Application.EXEName)+'temp.doc';

FillChar(lpStartupInfo,Sizeof(TStartupInfo),#0);

lpStartupInfo.cb:=Sizeof(TStartupInfo);

lpStartupInfo.dwFlags:=STARTF_USESHOWWINDOW;

lpStartupInfo.wShowWindow:=SW_NORMAL;

bCreateProcess:=CreateProcess(nil,PChar(sCommandLine),nil,nil,True,CREATE_NEW_CONSOLEorNORMAL_PRIORITY_CLASS,nil,nil,lpStartupInfo,lpProcessInformation);

//ShellExecute(zxdcc.Handle,'save',pchar(ExtractFilePath(Application.EXEName)+'empty.doc'),'','',SW_SHOWNORMAL);

ifbCreateProcessthen

WaitForSingleObject(lpProcessInformation.hProcess,INFINITE);

dataset.Close;

dataset.commandtext:='select*from二进制文档where来源='''+sourcetablename+'''and来源id='+inttostr(sourceid);

dataset.open;

ifnotdataset.eofthen

dataset.Edit

elsebegin

dataset.close;

dataset.commandtext:='select*from二进制文档';

dataset.open;

dataset.append;

end;

dataset.FieldValues['来源']:=sourcetablename;

dataset.FieldValues['来源id']:=sourceid;

MyFile:=TFileStream.Create(ExtractFilePath(Application.EXEName)+'temp.doc',fmOpenRead);

Stream:=TADOBlobStream.Create(dataset.FieldByName('内容')asTBlobField,bmWrite);{‘Doc’为BLOB字段名}

MemSize:=MyFile.Size;

Inc(MemSize);//增加的一字节给结尾的null

Buffer:=AllocMem(MemSize);

try

Stream.Seek(0,soFromBeginning);//流指针位置放到最前

MyFile.Read(Buffer^,MemSize);

Stream.Write(Buffer^,MemSize);

finally

MyFile.Free;

Stream.Free;
Delphi编程时,如何从Access中读出一个Ole对象的字段 access ole

end;

dataset.post;

dataset.close;

end;

我做的一个过程!

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/56801.html

更多阅读

如何从电脑中卸载删除迈克菲McAfee mcafee迈克菲

相信不少人都经历过跟我相同的经验,那就是很难从电脑中卸载删除McAfee。我曾经为此在网上搜过相关的内容,都是步骤比较繁杂的方法。经过摸索我才发现从电脑中卸载迈克菲很简单,那就是下载官方发布的“McAfee Consumer Product Removal

空乘,如何缓解工作中的压力 如何缓解工作压力ppt

空乘,如何缓解工作中的压力文:韦志中说到空乘(航空乘务员),很多人第一印象想到的是帅气靓丽的空哥空姐,他们干练优雅,笑容温暖纯净,可谓之美丽的职业。但是,在这美丽的背后,隐藏着许多不为人知的艰辛。近年来,随着人们生活水平的提高,乘坐飞

深入浅出安卓,如何从零学好移动开发 深入浅出iphone开发

由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向。有不少同学问我如何学习安卓,要学些什么,难不难学。之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学。因

转载 墙角的花,当你孤芳自赏时,天地便小了;仿写 墙角的花仿写

原文地址:墙角的花,当你孤芳自赏时,天地便小了;仿写作者:冷雨敲窗墙角的花,当你孤芳自赏时,天地便小了; 仿写最佳答案墙角的花,当你孤芳自赏时,天地便小了。 井底的蛙,当你自我欢唱时,视野便窄了。笼中的鸟,当你安于供养时,自由便没了。 山中的石!

如何在教学中培养和激发学生的学习兴趣

如何在教学中培养和激发学生的学习兴趣常听到有的教师感叹:“教学真难,教师费这么多的心血,学生的成绩却提不上去。”这种情况在中学教学中确实存在,但原因究竟出在哪里?我想,除教师教法有问题外,更主要的还是没有调动起学生的学习主动性

声明:《Delphi编程时,如何从Access中读出一个Ole对象的字段 access ole》为网友荒岛初冬分享!如侵犯到您的合法权益请联系我们删除