是关于ADO多表删除问题
有俩张表:table1(ID、 DepNo 、EmploeeName)
          table2(DepNo、DepName)
ADODataSet的CommandText:='select a.*,b.DepName from table1 a inner join
                          table2 b on a.DepNo=b.DepNo'
为什么删除一条记录时,table2中的纪录也被删除

解决方案 »

  1.   

    你是不是在ADODataSet的CommandText:='select a.*,b.DepName from table1 a inner join
                              table2 b on a.DepNo=b.DepNo'
    后执行了删除的命令呢!
    这个时候删除的时候最好是利用sql语句来删除不要直接的delete
    就是写语句来删除
    delete table1 where field1=:saa
    parameters.param......
    delete table2 where field1=:dsad
    .......
    因为上面的语句的时候你的表之间已经建立的关联的这时候如果你直接执行delete命令的话 就是把两个表的数据一起删除了
      

  2.   

    to angle097113(深思不解)
      你说的很对,但我的这个系统已经作了基本差不多了,所有的数据表维护都是用一个
      数据导航器来操作的,现在要改成用sql语句,这要从头作起呀!!
      我明白你的意思。
      

  3.   

    表之间是有关联,但使用BDE好像就没这个问题吧
      

  4.   

    最近,我在书城看到一本书《Delphi7入门到精通》是国外的。
    书中涉及到了这个问题
    利用ADO的一个属性Properties['Unique table']指定要删除的表
    这样就不会删除其它的表了
      

  5.   

    这个可以通过设:"Query.Recordset.Properties['Unique Table'].Value :='Orders';"来解决。要在QUERY打开后再执行这句