问题如下:
一个很常见的主细表关系:如Custom表和Orders表
Custom如下:
CustNo   Name
1        张三
Orders如下:
CustNo   Flower
1        玫瑰
1        丁香
用Select Orders.Custno,Name,Flower from Custom,Orders where Custom.CustNo=Orders.CustNo
结果在Dataset中显示出来.
我使用Dataset.Delete方法想删除Orders表中的一条记录,怎么却把Custom表中的记录也给删掉了,这是搞不明白之一?
我使用Dataset.Insert方法想添加一条Orders记录,结果在Custom表中也加了一条记录,怎么才能使Dataset.Update把Dataset.FieldValues['Flower'] := '菊花'添加到Orders表中,而不会把Dataset.FieldValues['Name'] := '李四'添加到Custom表中,
这是不明白之二?
怎么解决?????郁闷死我了!!!!

解决方案 »

  1.   

    再用一个Query控件来直接提交SQL语句吧...DElphi自带的控件好像没有指定主从表的功能,不知道是否有其它的第三方控件
      

  2.   

    你两表关联,当然会出现这种情况
    建议直接写sql语句进行添加删除从表
      

  3.   

    试试下面的看Select Orders.Custno,Name,Flower from Orders,Custom where Orders.CustNo=Custom.CustNo
    但总觉得你的方法有点不太对。
      

  4.   

    你这样做,当然是都删除掉了
    不能这样写,你要删除哪个表的什么记录,你在用一个adoquery或其他的把他定位出来再删除
    简单点说就是你想做删除或是新增操作,你最好对单表操作,不要使用关联,除非你自己有把握控制好
      

  5.   

    用计算字段吧。这样写:
    Select Custno,Flower from Orders然后在TQuery或TADOQuery上建一个计算字段Name,再在OnCalcFields事件中给计算字段赋值。
    关于计算字段的操作请参考帮助或相关资料。
      

  6.   

    也许使用Lookup字段是个好主意,我的Project中有一个是三层的主从表结构,好像使用Lookup也比较困难,也许使用计算子段较好,能不能帮出个注意.