Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

删除记录Requery后,如何显示该记录删除前的上一条记录?

54.℡80後2oO  发表于:2012-09-22 21:14:18  
复制

删除记录Requery后,如何显示该记录删除前的上一条记录?

窗体中有:项目编号为自动编号,假如总共有10条记录,但项目编号不是连续的,假如现在在第5条,我删除第5条记录,Requery刷新后,要定位到第4条,要如何做才行?

 

我自己有个思路就是,在删除前记录项目编号小于当前记录的记录数,这里为4,删除Requery后,让记录指针指向前面第4条记录,试过,没成功!!!

 

Top
54.℡80後2oO 发表于:2012-09-23 09:18:06

自己顶起来



54.℡80後2oO 发表于:2012-09-23 20:10:23
就这么难吗?不会吧???

双精度 发表于:2012-09-23 20:50:20

http://www.accessoft.com/article-show.asp?id=6907

 

把 ChildFormRequery函数模块代码复制到随便一个模块里,然后窗体里找到下面这段代码

DoCmd.Echo False
Forms!usysfrmmain!frmChild.SourceObject = "frm收入_child"
DoCmd.Echo True

替换成         Call ChildFormRequery 就行了

 

 

'=================================================
'函数名称: ChildFormRequery
'功能描述: 用于刷新主数据窗体.
'输入参数: FindWhereCondition   可选的,表名称
'返回参数: 无
'使用说明:
'兼 容 性: 仅用于UMV平台
'作    者: 红尘如烟
'创建日期: 20011-8-1
'=================================================
Function ChildFormRequery(Optional FindWhereCondition As String)
    On Error Resume Next
    Dim sfr As SubForm
    Dim lngPos As Long

    Set sfr = Forms!usysfrmmain!frmChild
    Forms!usysfrmmain.Painting = False
    lngPos = sfr.Form.Recordset.AbsolutePosition
    sfr.SourceObject = sfr.SourceObject
    If Len(FindWhereCondition) > 0 Then
        sfr.Form.Recordset.FindFirst FindWhereCondition
    Else
        sfr.Form.Recordset.AbsolutePosition = lngPos
        If Err <> 0 Then sfr.Form.Recordset.MoveLast
    End If
    Forms!usysfrmmain.Painting = True
End Function



沈军 发表于:2012-09-23 23:09:35

http://www.accessoft.com/blog/article-show.asp?userid=2469&Id=7482

 

刚做了一个,你看看是不是你要的

 

Private Sub Command4_Click()
'删除子窗体记录
    If MsgBox("确定要删除 " & Forms!窗体1!子窗体!姓名 & " 记录吗?", 36, "删除") = 6 Then
        Dim sjBL1 As Long
        sjBL1 = Me.子窗体.Form.SelTop       '将原记录指针值赋给变量
        DoCmd.RunSQL "Delete 用户.* FROM 用户 Where 用户.ID=forms!窗体1!子窗体!ID"  '执行删除查询
       
        'Me.子窗体.Requery                  '本次刷新记录指针没有移动,所以不要运行
        Me.子窗体.SourceObject = "子窗体"   '重新载入子窗体 记录指针移动到第一位
        Me.子窗体.Form.SelTop = sjBL1       '记录指针回到原来位置
        'Me.子窗体.Form.SelTop = sjBL1 - 1     '记录指针回到原来位置的上一条记录
        'Me.子窗体.Form.SelTop = sjBL1 + 1     '记录指针回到原来位置的下一条记录
       
    End If
End Sub



54.℡80後2oO 发表于:2012-09-24 21:07:42
多谢两位的热心解答,上午自己也解决了,呵呵

总记录:5篇  页次:1/1 9 1 :