An Unknown error has occurred -- EOleException 解决方法

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

今日开发遇到一个错误:

Delphi 7.1。

使用ADO连接SQL Server,Book_ADOQuery有一个Lookup字段,每当Insert/Append的时候IDE就会弹出一个错误:

An Unknown error has occurred -- EOleException

跟踪发现错误来源于VCL LocateRecord方法的FLookupCursor.Find

function TCustomADODataSet.LocateRecord(const KeyFields: string;

const KeyValues: OleVariant; Options: TLocateOptions;

SyncCursor: Boolean): Boolean;

if FieldCount = 1 then

FLookupCursor.Find(GetFilterStr(FieldByName(KeyFields), KeyValues, Partial), 0,

adSearchForward, EmptyParam)

而且如果连接Access数据库也没有问题。

通过Google发现,该Bug在Delphi 5中就有了:

http://info.borland.com/devsupport/delphi/fixes/delphi5/database.html

Area: database\ado

Reference Number: 72996

Status: Open

Date Reported: 10/14/99

Severity: Commonly Encountered

Type: Minor Functionality Failure

Problem:When using Lookup fields, inserting a record will

generate "An unknown error has occured"

exception in some cases.

Workaround:Requires VCL code changes.

Install Update Pack.

最后通过研究另外一个类似问题,发现:

只要把所有Lookup字段的lookupCache设为True(缺省为False)就可以避免该错误。

特记于此。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航