我有这样一个表A(id,name,jssm)工序表      B(id,rgde…………)人工表
但是我要在GridEh中显示出。id,name,jssm,sumRG,sumCL,sumJX 这五列。其中RG,CL,JX都是来自其他表中的数据。sumRG是一条项目中用到的所有人工的总和,
如下:
select a.*,b.sumRG
from m_gxde as a, 
(select max(a.demb_bh)as demb_bh,max(a.de_bh)as de_bh,sum(a.de*b.rg_dj)as sumRG from m_de_rg as a,m_dj_rg as b  where (a.demb_bh=11)and (a.de_bh=2)and(a.rg_bh=b.rg_bh)) as b
where (a.demb_bh=11)and(a.de_bh=2)and(a.demb_bh=b.demb_bh)and(a.de_bh=b.de_bh)简而言之,就是如何让我在GridEh中插入数据时。只向A中插入数据而不对B产生影响。是用SQL语句来实现还是通过GridEh来处理呢?或是对ADOquery进行什么设置!?   还请各位师傅不吝赐教,小弟在此先谢过了!!

解决方案 »

  1.   

    在下也是菜鸟,不过我在前几天学会了一种方法,很笨但很实用,您不管试试,我的方法就是建立临时表,在您的数据库中建立一个包含有id,name,jssm,sumRG,sumCL,sumJX 的表,把需要的数据插入到该表中,然后把GridEh用BDE或 ADO控件关联到该表中不就可以实现该功能了吗?哈哈。
      

  2.   

    to huaya1127(天上虹): 临时表到是一个办法!不过很麻烦吧。看一下!呵呵。to helodd(可爱):lookup字段不太了解。您能说的详细一点吗??谢谢!
      

  3.   

    要是不嫌麻烦就用stringgrid实现。提交的时候用for循环,想向哪个表写就像那个表写。自己说的算,就是麻烦了点。要是楼主不嫌麻烦就用我的方法。当然了,显示的时候还是用for循环。呵呵!其实你用delphi代的数据提交功能也是for循环,运行速度应该差不多。我的QQ是272733007,要是有时间找我探讨。呵呵!
      

  4.   

    http://www.enet.com.cn/eschool/inforcenter/A20040311293483.html
    这里有关于lookup 的减少
      

  5.   

    那我看看先!谢谢了!!to herreash(虫子):问题是上边要求的必须用GridEh。并且象锁定列,多层表头等功能StringGrid好像实现不了吧!!
      

  6.   

    看看SQL 语句的左连接 ,是否对你有用。
      

  7.   

    多表关联时候是没有办法直接控制数据的,没有什么好设置,根据你的改动来做把,写SQL语句把
      

  8.   

    to zr3636:  left join on  ?  我已经加上去了!!数据都能出来了。但是一编辑的时候还是有问题,总是说什么更新的信息不足。
    to huaya1127:很抱歉我办不到。这个东西是公司的,我也没有权利的!!呵呵。
      

  9.   

    我把ADOquery的field中那几个我不想编辑的B表中的字段的ReadOnly改成了true。这样就可以了。并且用到了有左连接。这样即使B表中没有与A匹配的数据,也不会导致A中数据的不显示。  细想想,这些在学校都学过的。现在用的时候反而记不起来了!看来收藏知识也会贬值的(《方世玉》中李国帮语)!!最后谢谢各位热心的帮助。呵呵!~~结贴啦!~~~