关于在程序运行时改变TQuery的DatabaseName属性(100分)

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

wangy_168

Unregistered / Unconfirmed
GUEST, unregistred user!
一个数据库应用程序中,想在程序运行中改变TQuery构件的DatabaseName属性,但出错,提示为'
Cannot perform this operation on an open database',但TQuery构件已经关闭了(即TQuery.Close),
是否在改变DatabaseName属性时还应进行其他操作???另如果想在程序运行中改变TDBDataSet的
Database(即数据库Data下还有子目录,以实现用户把全部数据分类的要求,如Data下还有2000,2001...
等子目录),还有其他什么好方法???请诸位不吝赐教!!!
 
如果query1.close后应该不会,我也是这么干的。你是否有其他的数据集和query1连接?
 
你的TQUERY是直接连在数据源的吗
 
>>billst
有其他的数据集与Query1相连(Query1在数据模块中,其他窗体声明一个TQuery对象,然后把数据模块
中的Query1赋值给此对象)
>>hspdel
TQuery应该是直接连在数据源上的(DataSource)
对了,各位,请注意,出错信息是‘Cannot perform this operation on an open database’而不是
‘Cannot perform this operation on an open dataset'!!!
 
Paradox 的 DatabaseName 就是文件目录。
把所有的数据集对象以及 Database 本身关闭,再改变就可以了。
 
>>BaKuBaKu
我想您说的关闭所有数据集对象以及Database本身应该是可以了,但如何找到我
程序中的Database对象???(我的程序中没有显式定义Database,但据Delphi Help
说如果程序中没有显式定义TDatabase,系统自动会定义一个具有默认参数的Database
应该如何找到这个默认的Database对象???)
BTW:
请问您一下DataSet和Database,以及Session之间的关系???(是否关闭一个
程序中所有的DataSet对象,会自动关闭Database???)
 
大家再给点建议嘛!!!
 
我所知道唯一可能的原因是你对query做了prepare,
如果是这样,close之后还要unprepare。
 
'Cannot perform this operation on an open database'
(动态指定文件?)
DATABASE控件的connect属性在你控件间联结调试时自动会TRUE
手工调FALSE试试
 
多人接受答案了。
 
后退
顶部