我在数据模块上使用TSQLConnection
组件(connDT
)仅将字段提取到TSQLDataset
,TDatasetProvider
和{{1}在设计时连接到我的测试数据库的三重奏。
在运行时,我需要使用连接到生产数据库的运行时对象实例(TClientDataset
)来更改设计时TSQLConnection
(connDT
)的对象实例。
我在数据模块的connRT
事件中这样做了:
OnCreate
但是当我打开我的connDT := connRT;
对象(trio)时,它仍然使用测试数据库(使用TClientDataset
连接对象设置)。如何在运行时覆盖设计组件引用?
答案 0 :(得分:1)
不要以这种方式覆盖设计时创建的对象引用。如果要在运行时更改数据库组件的连接,可以通过修改其SQLConnection属性或修改连接对象的参数(这是我更喜欢的)来完成。所以要么:
SQLDataSet1.SQLConnection := ConnRunTime;
或类似的东西:
ConnDesignTime.Params.Values['Database'] := 'MyDatabase';
ConnDesignTime.Params.Values['User_Name'] := 'UserLogin';
ConnDesignTime.Params.Values['Password'] := 'Password';
ConnDesignTime.Open;
还有其他方法,但上述方法非常简单。