看看后面——哈哈;看看前面——呜哇;再次自杀——怕怕;发个红包——大大(300分)

  • 主题发起人 主题发起人 CJ
  • 开始时间 开始时间
1、其实用TABLE构件不好,速度太慢,尤其是表大的话。
所以,我向来不用TABLE构件,一切都用QUERY来实现,用惯了就习惯了。

2、用QUERY实现就很简单了,两个表做JOIN,一点也没有问题
SELECT ORDER_ID,EMPLOYEE_NAME
FROM EMPLOYEE,ORDER
WHERE EMPLOYEE_ID=ORDER_SIGN_PERSON
 
为什么受伤的总是我?
 
问题1:
我只见过TTable和TADOTable这两个控件,还有一个应该不是Delphi自己带的吧,所以就自己用过的两个发表一下看法。TTable控件是VCL最基本的控件,从Delphi 1.0就带有,通过BDE(Borland Database Engin)和SQL Links连接数据库,性能稳定,效率比较好,生成的程序也便于安装。TADOTable是Delphi 5新增的,它是通过Microsoft's ActiveX Data Objects访问数据库的,可以脱离BDE运行,但性能和效率我个人认为没有TTABLE好,常有莫名其妙的问题。
TTABLE的使用过程中,最好加一个TDATABASE控件,并把TTable的CacheUpdates属性设置为True,你会发现其效率会成倍增加,原来检索100万条记录要10分钟,现在只要2分钟左右。

问题2:
有两种方法解决,最简单的就是改用TQuery部件,写SQL语句,但前面各位的SQL语句是有问题的,没有写基表的别名,应该是:
SELECT A.ORDER_ID,
B.EMPLOYEE_NAME
FROM EMPLOYEE A,
ORDER B
WHERE B.EMPLOYEE_ID = A.ORDER_SIGN_PERSON
这种方法有个缺点就是会使你查询的数据不是活动的(RequestLive),也就是不能直接修改,还要再写修改的程序。
第二种方法是使用TDBLookUpList或TDBLookUpComboBox,使用方法是在ListField里写Employee_Name而不是Employee_ID或Order_Sign_Person,这种方法的缺点是要在Form里放一大堆数据库控件。
 
还没人抽到大奖吗? CJ,别忙!剩下的彩票我全包了!嘿嘿.

(发给你的东西收到了吗?)
 
啊? 全给我了??!!!!

你这样做,大家要骂我的.... :-(
 
超过20人了,没办法。
再说,骂骂你也没关系啦,呵呵。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部