Delphi编程时,如何从Access中读出一个Ole对象的字段 access ole
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;
end;
dataset.post;
dataset.close;
end;
我做的一个过程!
更多阅读
如何从电脑中卸载删除迈克菲McAfee mcafee迈克菲
相信不少人都经历过跟我相同的经验,那就是很难从电脑中卸载删除McAfee。我曾经为此在网上搜过相关的内容,都是步骤比较繁杂的方法。经过摸索我才发现从电脑中卸载迈克菲很简单,那就是下载官方发布的“McAfee Consumer Product Removal
空乘,如何缓解工作中的压力 如何缓解工作压力ppt
空乘,如何缓解工作中的压力文:韦志中说到空乘(航空乘务员),很多人第一印象想到的是帅气靓丽的空哥空姐,他们干练优雅,笑容温暖纯净,可谓之美丽的职业。但是,在这美丽的背后,隐藏着许多不为人知的艰辛。近年来,随着人们生活水平的提高,乘坐飞
深入浅出安卓,如何从零学好移动开发 深入浅出iphone开发
由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向。有不少同学问我如何学习安卓,要学些什么,难不难学。之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学。因
转载 墙角的花,当你孤芳自赏时,天地便小了;仿写 墙角的花仿写
原文地址:墙角的花,当你孤芳自赏时,天地便小了;仿写作者:冷雨敲窗墙角的花,当你孤芳自赏时,天地便小了; 仿写最佳答案墙角的花,当你孤芳自赏时,天地便小了。 井底的蛙,当你自我欢唱时,视野便窄了。笼中的鸟,当你安于供养时,自由便没了。 山中的石!
如何在教学中培养和激发学生的学习兴趣
如何在教学中培养和激发学生的学习兴趣常听到有的教师感叹:“教学真难,教师费这么多的心血,学生的成绩却提不上去。”这种情况在中学教学中确实存在,但原因究竟出在哪里?我想,除教师教法有问题外,更主要的还是没有调动起学生的学习主动性