DELPHI6保存报错问题

DELPHI6保存报错问题,第1张

还是从程序本身下手吧,我以前遇到这种状况就是以下原因:我主要是第四个和第五个原因,你可以参考,会的有限,莫吐槽哦

1.无主键

2.字段允许为空

3.字段类型不匹配

4.字段是不是精度不够。

5.ADO控件 CursorLocation的属性,默认值为“clUseClient”,应设为“clUseServer”。(这个最关键)

可以的。

解释:delphi是可以在win7 32位系统下正常兼容运行的,而win7 64位系统是兼容32位系统的,所以这个是可以正常使用的。通常兼容性问题都是出现在xp系统和win7系列产品上,所以在win7 64位下正常安装使用即可。

以前用Delphi6+Excel2003,导出语句CreateOleObject('Excel.Application')很正常,但改为Excel2007精简版之后就会出现“无效的类别字符串”错误。

后来查CreateOleObject函数的代码如下:

function CreateOleObject(const ClassName: string): IDispatch

var

ClassID: TCLSID

begin

ClassID := ProgIDToClassID(ClassName)

OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or

  CLSCTX_LOCAL_SERVER, IDispatch, Result))

end

再查ProgIDToClassID函数的代码如下:

function ProgIDToClassID(const ProgID: string): TGUID

begin

OleCheck(CLSIDFromProgID(PWideChar(WideString(ProgID)), Result))

end

再进入Regedit注册表里,查ProgID中有“Excel”的字符串,终于发现了Office2007的是“Excel.Sheet.12”。于是变更程序代码如下,结果测试成功:

uses ComObj

procedure TForm1.Button2Click(Sender: TObject)

var MyWorkbook:Variant

begin

MyWorkbook := CreateOleObject('Excel.Sheet.12')//对于Excel2007,不能再用Excel.Application

MyWorkbook.Application.WorkBooks.Add

MyWorkbook.Application.Visible := true

end

现在我终于可以从Delphi导出数据到Excel2007了。

另,如果安装的是Office2007完整版,就可直接使用CreateOleObject('Excel.Application')如果安装的是精简版,只能用CreateOleObject('Excel.Sheet.12')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11079695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存