Office中国论坛/Access中国论坛

标题: 批量删除子窗体中记录的代码,各位老师有空帮我看看错在哪里。 [打印本页]

作者: 大白菜小白菜    时间: 2015-1-27 16:30
标题: 批量删除子窗体中记录的代码,各位老师有空帮我看看错在哪里。
代码是用论坛里一位前辈的,用在我这里就不能实现批量删除,且只能删除一条记录。不知道问题在哪里,各位老师有空帮我看看。我用的access2013,谢谢你们!

作者: zhidao    时间: 2015-1-27 16:37
落后了我,我还在用07版的。
作者: 大白菜小白菜    时间: 2015-1-27 16:38
“城内交易查询”里的“删除记录”按钮事件
作者: 大白菜小白菜    时间: 2015-1-27 16:40
zhidao 发表于 2015-1-27 16:37
落后了我,我还在用07版的。

还是谢谢你!
作者: 风中漫步    时间: 2015-1-27 16:53
贴下代码,帮你看看
作者: zhidao    时间: 2015-1-27 16:55
大白菜小白菜 发表于 2015-1-27 16:40
还是谢谢你!

你把代码放上吧
作者: roych    时间: 2015-1-27 16:57
代码没错,但DoCmd.RunCommand acCmdDeleteRecord不太适用子窗体模式。原因在于子窗体获取焦点之后,没法进一步多选。建议启用SQL模式,增加一个“是否字段”用来选择,然后再写Docmd runSQL "delete from 表 where 选择=true"
作者: 大白菜小白菜    时间: 2015-1-27 18:36
标题: 。。。。。。
本帖最后由 大白菜小白菜 于 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



作者: 大白菜小白菜    时间: 2015-1-27 19:55
roych 发表于 2015-1-27 16:57
代码没错,但DoCmd.RunCommand acCmdDeleteRecord不太适用子窗体模式。原因在于子窗体获取焦点之后,没法进 ...

谢谢你 !
作者: 大白菜小白菜    时间: 2015-1-28 23:39
roych 发表于 2015-1-27 16:57
代码没错,但DoCmd.RunCommand acCmdDeleteRecord不太适用子窗体模式。原因在于子窗体获取焦点之后,没法进 ...

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




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3