CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

怎样在 Datagrid 控件中删除一行 ?

楼主Boible()2002-04-26 06:49:56 在 VB / 控件 提问

当用户选择控件中的一个记录选择器并按了   DEL   键或   CTL+X   键时,选定的行被删除,而如何用代码在程序中实现呢,还望不吝赐教! 问题点数:100、回复次数:13Top

1 楼zhongminsheng(小生)回复于 2002-04-26 08:03:55 得分 0

核心:  
  adodc1.recordset.delete  
   
   
  另外在合适的地方加上判断是否有当前记录。Top

2 楼zzq3197(宋兵乙)回复于 2002-04-26 08:13:29 得分 0

Dim   response  
          response   =   MsgBox("你确定要删除此条记录?",   vbYesNo)  
          If   response   =   vbYes   Then  
          adodc1.Recordset.DeleteTop

3 楼zzq3197(宋兵乙)回复于 2002-04-26 08:16:42 得分 0

Dim   response  
          response   =   MsgBox("你确定要删除此条记录?",   vbYesNo)  
          If   response   =   vbYes   Then  
          adodc1.Recordset.Delete  
  以上代码在必要控件的KeyPress事件中添加。  
  或Top

4 楼zzq3197(宋兵乙)回复于 2002-04-26 08:22:48 得分 0

在keypress事件中  
  判断keyascii是否为你要求的键,是,执行上述代码。Top

5 楼smilejiangjun(smile将军)回复于 2002-04-26 08:41:47 得分 0

adodc1.recordset.delete  
  adodc1.recordset.movenextTop

6 楼sngmd(稻草人)回复于 2002-04-26 09:25:19 得分 100

 
  if   adodc1.recordset.bof=false   and   adodc1.recordest.eof=false   then  
        adodc1.recordset.delete  
        adodc1.recordset.movenext    
  end   if  
   
  adodc1.recordset.bof=false   and   adodc1.recordest.eof=false    
  是为了防止数据库为bof或者eof状态,就是数据库指针在  
  最开始或者最后的位置,删除这两个位置相当于没有记录的,  
  删除时会出错!  
   
   
  如果加入确认机制就是:  
  Dim   response  
  if   adodc1.recordset.bof=false   and   adodc1.recordest.eof=false   then  
        response   =   MsgBox("你确定要删除此条记录?",   vbYesNo)  
        If   response   =   vbYes   Then  
                adodc1.recordset.delete  
                adodc1.recordset.movenext  
        end   if    
  end   if          
           
           
  以上代码在必要控件的KeyPress事件中添加。  
   
  如果再要复杂点,就是更安全一点,像上面的代码  
  实现的情况是确认按钮是默认的,而取消按钮不是默认的,  
  防止用户以回车键错选确认可以这样修改,使取消按钮  
  变为默认,这样更好!更安全!  
  给你一段代码,自己研究吧!  
   
   
      '释放窗体前确认过程  
  Private   Sub   MDIForm_QueryUnload(Cancel   As   Integer,   UnloadMode   As   Integer)  
        Dim   response   As   Integer  
        Dim   MsgStyle   As   Integer  
        Dim   msg   As   String  
         
             
        msg   =   "确定退出?"   +   Chr(13)   +   "选择“是”"  
        msg   =   msg   +   "将彻底退出自动广播系统"   +   Chr(13)   +   Chr(13)  
        msg   =   msg   +   "选择“否”将取消退出操作"  
        MsgStyle   =   vbYesNo   +   vbCritical   +   vbQuestion   +   _  
            vbDefaultButton2   +   vbApplicationModal  
         
        response   =   MsgBox(msg,   MsgStyle,   "操作提示")  
        If   response   =   vbOK   Then  
         
            End  
        ElseIf   response   =   vbNo   Then  
            Cancel   =   1  
        End   If  
  End   Sub  
   
   
  给分啊!  
  哈哈!Top

7 楼Boible()回复于 2002-04-26 15:15:07 得分 0

感谢以上各位!  
   
          以上各位的做法也对,但我的体会是在使用   DataGrid   控制和操作数据库时,如果再去直接用代码操作数据库在很多时候会不稳定,  
   
          比如我们在   DataGrid   中修改数据,就不能再用下面的代码去操作数据库  
   
          adodc1.recordset   .fields("A1")   =   "aaaa   "  
          adodc1.recordset   .fields    
   
          我也是用以上各位的方法去做数据库记录的删除的,执行中不太理想,我的做法如下  
   
                          If   Adodc6.Recordset.RecordCount   >   1   Then  
                                  Adodc6.Recordset.MoveLast  
                                  Do   While   Not   Adodc6.Recordset.EOF  
                                          Adodc6.Recordset.Delete  
                                          Adodc6.Recordset.MovePrevious  
                                          i   =   i   +   1  
                                  Loop  
                                  Adodc6.Refresh  
                          End   If  
   
          在   DataGrid   中有没有类似   MSHFlexGrid   的   Remove   方法去删除一行记录呢?  
   
  望各位不吝赐教!必当重谢!  
   
  Top

8 楼wangluoxing(最后一天)回复于 2002-04-26 21:34:45 得分 0

你这种方法不能删除指定的记录,而是全不的所有的记录。这行吗?  
  datagrid中的delete与mshflexgrid   中的remove是一样的功能,都可以删除  
  记录Top

9 楼Boible()回复于 2002-04-26 23:28:02 得分 0

楼上的你好,谢谢!  
   
   
          我的示例代码是想删除全部的记录的。  
   
          delete   不是   datagrid   的方法或属性,是ado   的。  
   
          我想知道   datagird   本身有没有删除功能。  
   
  Top

10 楼sngmd(稻草人)回复于 2002-04-27 21:58:51 得分 0

楼上的,datagird是有删除功能的,  
  你在datagird上单击右键,选择属性...,  
  会出现属性页,通用的那一页上的左侧有几个  
  选项:允许添加、允许删除等等!  
   
  自己看吧!  
  Top

11 楼Boible()回复于 2002-04-28 03:35:22 得分 0

稻草人,  
   
   
  你讲的那些,   三岁小孩都知道的!  
   
  不过还是要说句谢谢你!Top

12 楼Boible()回复于 2002-04-29 18:12:00 得分 0

稻草人  
   
   
  我的问题虽然没有得到满意的答案,不过在众说纷纭中,我决定把100分全给你,希望以后能有所合作!Top

13 楼sngmd(稻草人)回复于 2002-05-14 14:52:10 得分 0

谢谢!  
  Top

相关问题

  • 如何实现将在DataGrid控件中选中的一行记录,通过程序删除掉?
  • 怎么样用工具栏的按钮删除DataGrid控件中的一行,谢谢!!
  • datagrid中删除一行
  • 大家帮帮忙阿,谢谢了大哥大姐,为什么我在datagrid控件中删除一行,需要点2次删除按钮???????????
  • 怎么删除或移动StringGrid1控件的一行
  • 如何删除CEdit控件中的完整一行?
  • ado 控件datagrid 删除记录问题
  • 关于Datagrid控件删除的问题?
  • help!!!怎样从datagrid中删除一行?
  • 在webapplicationzhong 中的datagrid删除一行。

关键词

  • 代码
  • 控件
  • 数据库
  • datagrid
  • 属性
  • adodc
  • 删除
  • recordset
  • 记录
  • msgstyle

得分解答快速导航

  • 帖主:Boible
  • sngmd

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo