使用ADO动态建立索引的问题,如能解决300分相送(100分)

  • 主题发起人 windbell
  • 开始时间
W

windbell

Unregistered / Unconfirmed
GUEST, unregistred user!

建立一个paradox库db1.db
在数据模块中加入了ADOConnect1,adoquery1,datesouce1,table1
设置好ADOConnect1的连接字符串,将adoquery1的connect属性设为
ADOConnect1,sql属性中加入'select * from db1',datesouce1的dateset
属性设为adoquery1,table1的tablename设为db1.db.

连接字符串如下(这个是用向导建立的):
Provider=MSDASQL.1;Persist Security Info=False;
Extended Properties="CollatingSequence=ASCII;
DefaultDir=D:/fm;Driver={Microsoft Paradox Driver (*.db )};
DriverId=538;FIL=Paradox 5.X;FILEDSN=D:/fm/fm.dsn;MaxBufferSize=2048;
MaxScanRows=8;PageTimeout=5;ParadoxNetPath=C:/WINDOWS/SYSTEM;ParadoxNetStyle=4.x;
ParadoxUserName=admin;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

建立一个form1,在其上加入dbgrid1,设置它的datesource属性为datesource1
执行adoquery1.open后在dbgrid1中可以看到库中内容。现在我想用table1为
db1.db建立主索引,这时问题出现了,调用
table1.AddIndex('i_cid','cid',[ixPrimary]); //cid为库中一个字段
出现提示:
Project Profject1.exe raised exception class EDBEngineError
with message 'Object not locked'.Process stropped.Use Step or Run to
continue.
如果在adoquery1.open执行前建立主索引,则不出错。只要一执行adoquery1.open
则不论以后是否将其关闭都出现以上错误提示。更改ADOConnect1的mode也不管用。

同样情况下如果库中内容为空,则出现:

Project Project1.exe raised exception class EOleExecption with message
'BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个
当前的记录。'.Process stopped.Use Step or Run to continue.

其它现象同数据库不空时完全一样。

请高手帮忙解决!
 
升级ado
请打补丁二
 
to yaya8163:
我的ADO是从MS上下载的最新版MDAC2.7,好象它还没有补丁,请再帮忙想想!
 
to windbell:
从你提供的信息和我做的上看,

Provider=MSDASQL.1;Persist Security Info=False;
Extended Properties="CollatingSequence=ASCII;
DBQ=C:/PROGRAM FILES/COMMON FILES/BORLAND SHARED/DATA;
DefaultDir=C:/PROGRAM FILES/COMMON FILES/BORLAND SHARED/DATA;Driver={Driver do Microsoft Paradox (*.db )};
DriverId=538;FIL=Paradox 5.X;FILEDSN=C:/Program Files/Common Files/ODBC/Data Sources/abc.dsn;MaxBufferSize=2048;
MaxScanRows=8;PageTimeout=5;ParadoxNetPath=C:/WINNT/System32;ParadoxNetStyle=4.x;
ParadoxUserName=admin;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"


没有发现问题,你用的是d?
 
应该是ADO的问题,装 MDAC 2.6 试试!!
 
不瞒各位,囊中羞涩,我用的是从站上拉的试用。
不过不应当是ADO的问题,难道2.7的反而比装2.6的bug多!
 
不是ADO的问题,请注意:'Object not locked'——在建立索引时必须独占数据库,首先你的连接要锁定数据库(不允许其他连接同时连接),建立索引后在释放连接解锁。
 
同意楼上
使用TADOQuery或使用SQL语句
 
请问:如何解释数据为空时出现的错误呢?
另外我在建立索引前也曾试用过table1.locktable但就在这条语句上就通不过出错了.
 
我做的一个示例,大家帮忙看看问题出在哪?
如果肯帮忙的话请告诉我Email我给发过去.
谢谢!
 
清来mike6912@sina.com
 
接受答案了.
 
顶部