设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2729|回复: 12
打印 上一主题 下一主题

[Access本身] 批量删除子窗体中记录的代码,各位老师有空帮我看看错在哪里。

[复制链接]
跳转到指定楼层
1#
发表于 2015-1-27 16:30:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码是用论坛里一位前辈的,用在我这里就不能实现批量删除,且只能删除一条记录。不知道问题在哪里,各位老师有空帮我看看。我用的access2013,谢谢你们!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-1-27 16:37:40 | 只看该作者
落后了我,我还在用07版的。

点评

不落后,我还在你后边呢  发表于 2015-1-27 16:57
3#
 楼主| 发表于 2015-1-27 16:38:56 | 只看该作者
“城内交易查询”里的“删除记录”按钮事件
4#
 楼主| 发表于 2015-1-27 16:40:56 | 只看该作者
zhidao 发表于 2015-1-27 16:37
落后了我,我还在用07版的。

还是谢谢你!
5#
发表于 2015-1-27 16:53:34 | 只看该作者
贴下代码,帮你看看

点评

为什么不进步一下啊,我是用习惯。  发表于 2015-1-27 17:02

点击这里给我发消息

6#
发表于 2015-1-27 16:55:29 | 只看该作者

你把代码放上吧

点评

换语言了  发表于 2015-1-27 17:08
7#
发表于 2015-1-27 16:57:01 | 只看该作者
代码没错,但DoCmd.RunCommand acCmdDeleteRecord不太适用子窗体模式。原因在于子窗体获取焦点之后,没法进一步多选。建议启用SQL模式,增加一个“是否字段”用来选择,然后再写Docmd runSQL "delete from 表 where 选择=true"
8#
 楼主| 发表于 2015-1-27 18:36:42 | 只看该作者

。。。。。。

本帖最后由 大白菜小白菜 于 2015-1-27 18:42 编辑


Private Sub 删除_Click()
' 删除数据表窗体多条记录并提示的一种方法,与各位探讨
' 小宝(tcl013@126.com) 于2008年4月30日
Dim x As Integer, i As Integer
Dim c As Integer                 '选择删除的记录数
Dim s As String                  '关键字段值
Dim rst As DAO.Recordset         '子窗体记录集
Dim b As Boolean                 '判断是否从上到下选
With Me.交易信息查询子窗体.Form
    c = 1
    If .SelHeight > 1 Then            '判断是否选择多条
        x = .SelWidth - 1
        .SelWidth = x
        If .SelWidth = x Then         '判断是否使用记录选定器来选择,如果能更改SelWidth则不是使用记录选定器
            .SelWidth = x + 1
        Else
            c = .SelHeight
            If .SelTop = .CurrentRecord Then b = True     '判断是否从上到下选
        End If
    End If
   
    If c > 1 Then
        ' 获取并同步子窗体记录集
        Set rst = .RecordsetClone
        If .NewRecord Then                    ' 如果从新记录向上选,则记录集移到最后一条,记录数-1
            rst.MoveLast
            c = c - 1
        Else
            rst.Bookmark = .Bookmark
        End If
        
        Do Until i = c
            s = s & rst!商家名称 & ";"
            i = i + 1
            If b Then
                rst.MoveNext
                If rst.EOF Then c = c - 1     ' 如果向下选,并选择了新记录,则记录数-1
            Else
                rst.MovePrevious
            End If
        Loop
        Set rst = Nothing
        s = Left(s, Len(s) - 1)
    Else
        If .NewRecord Then Exit Sub
        s = .商家名称
        Me.交易信息查询子窗体.SetFocus
        DoCmd.RunCommand acCmdSelectRecord
    End If
End With
    ' 删除记录
    If MsgBox("您确定要删除 " & c & " 条商家名称为:“" & s & _
        "”的记录吗?", vbExclamation + vbYesNo, "删除提示") = vbYes Then
        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        DoCmd.RunCommand acCmdSelectRecord
'        MsgBox "  删除成功。           ", vbInformation, "删除提示"
    End If
End Sub


9#
 楼主| 发表于 2015-1-27 19:55:35 | 只看该作者
roych 发表于 2015-1-27 16:57
代码没错,但DoCmd.RunCommand acCmdDeleteRecord不太适用子窗体模式。原因在于子窗体获取焦点之后,没法进 ...

谢谢你 !
10#
 楼主| 发表于 2015-1-28 23:39:44 | 只看该作者
roych 发表于 2015-1-27 16:57
代码没错,但DoCmd.RunCommand acCmdDeleteRecord不太适用子窗体模式。原因在于子窗体获取焦点之后,没法进 ...

我用的复选框实现了批量删除,可是又出现了这个问题。有空帮我看看代码要怎么改,谢谢你!  http://www.office-cn.net/thread-119399-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-16 01:48 , Processed in 0.116215 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表