关于datamodule的问题(10分)

  • 主题发起人 yanlvyong
  • 开始时间
Y

yanlvyong

Unregistered / Unconfirmed
GUEST, unregistred user!
近日,学习delphi遇到问题,困扰我多日,望各位把脉解答:
(我是刚学delphi,如果问题愚蠢,请见谅!)
分数不多,但望各位发扬友爱互助的精神。
*******************************************************
有关datamodule的问题:
1.要建立form1窗体,通过form1中调用form2窗体,两个窗体都动态的建立datamodule,运行时第二个窗体出错。
form1:
var
form2:unit2.tform;
data:unit3.tdatamodule;
过程1
form2:=unit2.tform.create(self);
data:=unit3.tdatamodule.create(self);
form2.show;

form2:
var
data:unit2.tform.create(self);
过程1:(oncreate事件或buttonclick事件)
data:=unit3.tdatamodule.create(self); //运行到此发生错误

2.datamodule如果是全局的,任何其他窗口改变了其中的query,当前窗口的数据将会
被影响。如果每个窗体建立各自的query则嫌太多,因此我想动态建立datamodule,
但是动态创建的话,每次其中的database控间都要建立连接,太耗时间和资源,
能否动态的建立其中的query,语句如何写哪?请指教。

 
没有你这么做的。
你个窗体能用多少个query?如果关联的表多了为什么不用试图?
 
to:zhengzhijia
我并不是在每个窗体上加query,每个窗体都要使用datamodule上的query,
如果每个窗体都有自己的query加在datamodule上,query不是嫌太多了吗?
你能给我好方法吗?
 
我所看过的程序设计到query都是这么处理的:
如果是几个窗体共用的query(共同变化),共同使用一个datamodule;
如果是窗体比较独立的使用query方在窗体又有何妨?
我做的程序中平均方2-3个就够了;
一个显示相关信息。
一个用来查询或执行的动态语句的。
一个可能有他用。
 
to:zhengzhijia
非常高兴向你请教这个问题,可能你没有了解我的用意
在一个窗体上放query我会处理,我想将所有的query都放入datamodule,因此所有的窗体
都必须使用datamodule的query。有一个最明显的例子:
在程序启动前,必须检查用户口令,因此mainform(窗体)必须调用login(窗体),在
mainform中用datamodule.create(self)动态的生成datamodule后通过login.show调用login,
而在login的oncreate事件中也有datamodule.create(self),此时,程序就会错误,我主要是
为了解决这个问题。
如果在每个处理query的窗体中不动态的创建datamodule,我怕其他窗体会影响该query的
查询结果。
在对这个问题的调试当中,我发现了一个有趣的问题,当我把第一个或第二个datamodule
实例变量free后,另一个datamodule实例变量成功了,因此引发我第二个问题:这两个变量
分别在各自的窗体中被实例化,为何会出现以上现象?

请继续加入讨论,谢谢!
 
yanlvyong:你的问题已过期,如果对上述回答满意,可以结束问题,否则请提前问题或发表意见
 
接受答案了.
 
顶部