我在用Adodc执行数据库查询操作(对2个表进行组合查询),将结果与一DataGrid绑定,可以正确显示,但当我想删除DataGrid中的一条记录(删除数据库中主表对应的记录)时。用adodc.record.delete不能实现。请问怎么实现?(关键是DataGrid中现示的是2个表中的数据。如何删除其中一条记录?

解决方案 »

  1.   

    提供一个笨的思路给你:
    你可以判断记录指针来做。
    你现在的问题就是不知道当用户点datagrid控件中某一条记录时,你不知道是用哪个ADO控件来进行delete是不是?但愿我没有理解错。
    打个比方:Adodc1查询出的记录为15条,Adodc2查询出的记录为12条,那么显示在datagrid控件中的记录数应为27条。那么假设我选中datagird控件第18条记录要进行删除操作,那么你就应该用Adodc2的delete来进行操作。也就是选中>15的记录就用Adodc2的delete方法,<15的就用Adodc1的delete方法。
    怎样判断选中的记录是哪一个记录呢?你可以用datagrid控件的row属性与recordset的recordcount属性来搞定。
      

  2.   

    及时更新:你这样试试:当你执行完删除操作后,接着就执行:
    rs.open "select * from XXX表",cn,3,3
    set datagrid1.datasource=rs
    datagrid1.refresh如果用控件的话:Adodc1.datasource="select * from XXX表"
    set datagrid1.datasource=Adodc1
    datagrid1.refresh
      

  3.   

    sql2000上有兩表
    table1(a,b,c)  
    table2(a,m,x,y)
    通進a關聯,table2中有多條記錄對應table1中的記錄。要刪除table1中的某條記錄後,與之相關聯的table2中的多條記錄刪掉在table1中寫觸發器如下:create  trigger table1_trigger on  table1
        for  delete
             as
       begin
         delete table2 where a  in(select a from  deleted)
      end
    GO結果在刪除table1中的某條記錄時,table2中的相關記錄都會刪掉。(deleted是觸發器的虛擬表。)
      

  4.   

    在sql2000上選中表table1---右鍵---所有工作--manage triggers,把觸發器代碼寫在那裡即可。
    下面有一個'check synats'檢測語法功能,它會提示是成功還是有錯誤。
    不知適合你嗎?提供一點點參考。
      

  5.   

    谢谢,不过你误会了我的意思2个表结构如下
    1.商品表( 商品ID   类别ID   名称  价格)
    2.类别表(类别ID    类别)
    用Adodc查询2个表在DataGrid中显示
    商品ID  类别   名称   价格可当我在DataGrid上想删除选中一条记录,(要求在数据库中只删除表1中对应的纪录,表2不变) 用Adodc的.delete方法肯定是不行的。如何解决这个问题?
      

  6.   

    不是ADODC。RECORD。DELETE而是ADODC。RECORDSET。DELETE
      

  7.   

    http://expert.csdn.net/Expert/topic/1651/1651441.xml?temp=.2303125他也出现类似你这样的问题~我的回答只能是那样~既然你的商品ID是唯一字段的话,你为什么要在加类别表呢?这不是给自己找麻烦吗?
    如果你的商品ID不是唯一的话,我权你在最前面设一个自动编号~~~
    根本不需要2个表~
      

  8.   

    因为其他很多地方也要用到类别表。类别表是必须的。这2个表没有建立关联。是在代码中组合查询显示到DataGrid的'
    代码如下:
    ………………
    Adodc1.DataSource="select * from 商品表,类别表 where 商品表.类别ID=类别表.类别ID"
    set DataGrid.DataSource=Adodc1
    …………………Private sub cmdDel_click() '删除记录
      ……
     ……
     Adodc1.recordset.delete
     Adodc1.recordset.updateEnd sub
    ……………
    于是在DataGrid中就显示
    商品ID  类别   名称   价格这正是我需要的结果。但现在问题是:当选中表格上一条记录,然后点删除(要求只删掉商品表中对应的记录) 。但总是不成功!怎么办???
    (这2个表没有建立关联)