在BPL开发框架中(Bpl,EXE,DLL结构,主窗口一个EXE,每个模块一个DLL,开发框架为BPL),用DLL支持具体的数据连接方式(BDE,ADO,DBExpress等等).
当使用ADO时,在DLL中一功能窗体中弹出编辑对话框,数据抽象封装类的实例是在功能窗体中创建的,打开对话框时将该实例赋与对话框以利用封装类的保存方法,但在对话框中保存数据时,严重超时。同样的情况用DBExpress没问题。跟踪到ADOQuery的SQL属性改变事件引起超时,但跟不进该ADODB单元中的SQL的TStrings.OnChange改变事件。诸位有谁遇到类似的问题?
解决问题后奉送上100分
当使用ADO时,在DLL中一功能窗体中弹出编辑对话框,数据抽象封装类的实例是在功能窗体中创建的,打开对话框时将该实例赋与对话框以利用封装类的保存方法,但在对话框中保存数据时,严重超时。同样的情况用DBExpress没问题。跟踪到ADOQuery的SQL属性改变事件引起超时,但跟不进该ADODB单元中的SQL的TStrings.OnChange改变事件。诸位有谁遇到类似的问题?
解决问题后奉送上100分
解决方案 »
- 四年前,在这里得到了大家的祝福;四年后,准备结婚了,和老婆参加一项“准夫妇”比赛,已进前20,期待着您在网上为我们投票,谢谢大家!
- Array type required 需要数组类型?请帮忙看看下面代码什么问题!在线等待!
- 关于Com+组件事务属性的问题。
- 如何在listview中加入progressbar?
- canvas调用画图无法输出图形
- 如何用delphi中的ADO访问mysql数据库?
- oracle 连接
- 请达人协助,如何处理Vista下窗口大小限制的问题
- (再问!)会者不难!资源小问题!
- 在grid中把 true(false)用"√"表示出来
- 如何自动绘制一条曲线
- 求ActiveX,供javaScript调用? 这个,怎么做啊?
当在窗体中调用数据封装类的保存方法是没有问题,而换成DBExpress连接也不存在此问题!请有类似经验的高手指示一二!!谢谢
----------------------可以把Use Debug DCUs钩上,来调试VCL的单元。
我追踪到TParameters.InternalRefresh()方法,其中有二个内置方法。
耗时的指令就在其中的RefreshFromOleDB过程中,跟踪确认是下行代码严重超时
OLEDBCommand := (Command.CommandObject as ADOCommandConstruction).OLEDBCommand as ICommand;
奇怪的是在窗体中执行数据抽象类的方法时也会执行到此处,但不会如此耗时。而且只是第一次进对话框时才耗时,第二次就很快了!但关闭窗体后,再打开编辑对话框操作后保存又重现耗时的情景...l...晕中总体感觉ADODB这个单元很多问题,特别是涉及到主从表、汉字时,相同情况使用DBExpree却没有任何异常!!且ADO的速度也差太大!!