Access交流中心

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

Access开发平台新增,修改,删除,查找VBA代码详解

钱玉炜  发表于:2008-11-11 21:15:20  
复制

以Access开发平台专业版报销教程中的报销明细的新增修改删除查找为例来详细说明下各代码的作用
以下代码是制作完成后的各个窗体的所有代码,具体哪一部分代码负责新增,哪一部分代码负责修改,可以在前面的教程中找到

首先是frmBxmx_child窗体,所有功能都做好以后窗体中的代码应该是如下所示:
Private Sub报销编号_GotFocus()                     -------机型代码获得焦点事件
On Error GoTo Err_报销编号_GotFocus:     -------错误处理语句,出错的时候转到Err_机型代码_GotFocus:执行
strSelectID = Me. 报销编号                               -------给变量赋值,使strselectID等于控件机型代码的值      
Forms!usysfrmMain!btnEdit.Tag = 999        -------这是个判断条件,当其大于1时点击"修改"按钮时,平台就会自动打开"_Edit"窗体
Forms!usysfrmMain!labFind.Tag = 1            -------同上,当其等于1时点击查询按钮时,打开平台内的查询窗体  
Exit_报销编号_GotFocus:       
    Exit Sub
Err_机型代码_GotFocus:
    Resume Exit_机型代码_GotFocus
End Sub
Private Sub Form_Timer()                                  ------窗体计时器事件
    Acchelp_FindStrRecord (g_CurrentSelectStrID)  ------利用平台函数acchelp_findstrrecord找到修改前鼠标所选择的记录
    '计时器执行一次后不再执行
    Me.TimerInterval = 0                                        ------设定刷新时间为0
End Sub
Public Sub btnDel()                                             ------删除代码
    If MsgBox("您确认要删除吗?", vbYesNo + vbInformation, Forms!usysfrmLogin.Caption) = vbYes Then -----判断提示框的值,当值为vbyes的时候执行下面代码,vbno的时候跳出代码
        DoCmd.Echo False                           ------防止屏幕闪动
        Call acchelp_deletefldstrrow("tblBxmx ", " mxId ", selectstr)         ------调用平台自定义函数AccHelp_DeleteFldStrRow,函数的详细说明请看平台帮助第九章
        Forms!usysfrmMain!frmChild.SourceObject = "frmBxmx_child" ------重新加载子窗体frmBxmx_child,以刷新数据子窗体数据
        DoCmd.Echo True           ------打开屏幕闪动
    End If
End Sub
Public Sub btnFind()                   -------查询按钮单击事件
    DoCmd.OpenForm "usysfrmFind"   -------打开查询窗体
    '文本型对应 3 ,日期型对应 1 ,数值型对于 2      -------查询不同的字段类型的时候,对应不同的数字来表示
    Forms!usysfrmFind!cobfldName.RowSource = "报销日期;1;类别名称;3;员工姓名;3;报销金额;2;报销摘要;3;"   -------设置需要查询的字段,已经设定该查询字段的数据类型
    '指定查询数据来源
    Forms!usysfrmFind!labDataSource.Caption = "qryBxmx"
End Sub
Public Sub FindEnd()                            ----------------查询结束后执行的过程
    Forms!usysfrmMain!frmChild.Form.RecordSource = Acchelp_ChildFormRecordSource("qryBxmx", "报销编号", True)    -----------刷新子窗体数据
    strRptReSource = Forms!usysfrmMain!frmChild.Form.RecordSource              ---------让定义的变量变量等于当前查询结束后子窗体的数据源
End Sub


 

 

Top
钱玉炜 发表于:2009-01-17 09:00:08
以下是frmBxmx_child_add窗体的所有代码:
Private Sub cmd_Save()            --------------定义cmd_Save过程,执行数据新增
    Dim rst As DAO.Recordset      --------------定义DAO记录集
    If IsNull(Me.bxrq) Then       --------------判断报销日期是否为空,如果为空,则弹出对话框提示,下同
        MsgBox "请输入报销日期!", vbCritical, "提示:"
        Me.bxrq.SetFocus
        Exit Sub
    End If
    If IsNull(Me.lbId) Then
        MsgBox "请输入报销类别!", vbCritical, "提示:"
        Me.lbId.SetFocus
        Exit Sub
    End If
    If IsNull(Me.ygId) Then
        MsgBox "请输入员工姓名!", vbCritical, "提示:"
        Me.ygId.SetFocus
        Exit Sub
    End If
If IsNull(Me.bxje) Then
        MsgBox "请输入报销金额!", vbCritical, "提示:"
        Me.bxje.SetFocus
        Exit Sub
End If
Me.Refresh                  --------------数据输入完毕后刷新一下窗体控件


麥田 发表于:2009-02-09 14:33:04
    If MsgBox("您确认要保存吗?", vbOKCancel + vbInformation, "提示") = vbOK Then      ------弹出对话框,询问用户是否需要保存数据,如果选择是,则执行以下代码
        Set rst = CurrentDb.OpenRecordset("tblBxmx", dbOpenDynaset)            ------设置记录集为表tblBxmx
        rst.AddNew            ---------开始新增数据
        rst("mxId") = acchelp_autoid("M", 10, "tblBxmx", "mxId")             ---------用平台函数设置编号字段
        rst("bxrq") = Me.bxrq          ---------让表中的bxrq字段等于当前窗体bxrq控件的值,下同
        rst("lbId") = Me.lbId
        rst("ygId") = Me.ygId
        rst("bxje") = Me.bxje
        rst("bxzy") = Me.bxzy
        rst.Update                                                     ----------新增完毕后更新一下记录集
        rst.Close            ----------关闭记录集
        Set rst = Nothing                                               ----------清空记录集
        '刷新数据


麥田 发表于:2009-02-09 14:33:44
        If IsLoaded("usysfrmMain") Then
            DoCmd.Echo False
            Forms!usysfrmMain!frmChild.SourceObject = "frmBxmx_child"         --------------重新加载一下子窗体,以刷新数据
            DoCmd.Echo True
        End If
        MsgBox "保存成功!", vbInformation, "提示"
        Me.bxrq = Null                                                     ---------------让窗体里的控件清空,下同
        Me.lbId = Null
        Me.ygId = Null
        Me.bxje = Null
        Me.bxzy = Null
    End If
End Sub
Private Sub cmdOK_Click()
    cmd_Save                                                           ------------单击确定按钮,执行cmd_Save过程
End Sub
Private Sub cmdCancel_Click()
    DoCmd.Close acForm, Me.Name                 -----------单击取消按钮关闭当前窗体
End Sub
Private Sub cmdBX_ButtonClick(ByVal Button As Object)
    DoCmd.OpenForm "frm_CodeBxlb_child_Add"          ----------打开报销类别新增窗体,用来快捷添加
End Sub
Private Sub cmdYG_ButtonClick(ByVal Button As Object)
    DoCmd.OpenForm "frmyg_child_Add"                        --------------打开员工信息新增窗体,快捷添加
End Sub

麥田 发表于:2009-02-09 14:34:00

以下是修改窗体的代码:
Private Sub cmdCancel_Click()       -----------单击取消按钮事件
    Me.Undo          -----------撤销修改
    DoCmd.Close acForm, Me.Name     -----------关闭当前窗体
End Sub

Private Sub cmdOK_Click()       -----------单击确定按钮事件
    If IsNull(Me.bxrq) Then       -----------判断控件是否为空,如果为空则提示要求输入的信息
        MsgBox "请输入报销日期!", vbCritical, "提示:"
        Me.bxrq.SetFocus
        Exit Sub
    End If
    If IsNull(Me.lbId) Then
        MsgBox "请输入报销类别!", vbCritical, "提示:"
        Me.lbId.SetFocus
        Exit Sub
    End If
    If IsNull(Me.ygId) Then
        MsgBox "请输入员工姓名!", vbCritical, "提示:"
        Me.ygId.SetFocus
        Exit Sub
    End If
    If IsNull(Me.bxje) Then
        MsgBox "请输入报销金额!", vbCritical, "提示:"
        Me.bxje.SetFocus
        Exit Sub
    End If
    Me.Refresh         ------------刷新一下窗体
DoCmd.Echo False
Forms!usysfrmMain!frmChild.SourceObject = "frmBxmx_child"         --------------修改完毕后刷新一下子窗体
    DoCmd.Echo True
    '触发子窗体计时器事件
    Forms!usysfrmMain!frmChild.Form.TimerInterval = 300
    DoCmd.Close acForm, Me.Name      ----------关闭当前窗体
End Sub

Private Sub Form_Load()
    Me.RecordSource = "Select * FROM tblBxmx Where mxId = '" & selectstr & "'"      ------------窗体加载事件,加载的时候设置窗体的数据源为后面的SQL语句所查询到的数据
End Sub



pbcwn2008 发表于:2011-12-17 16:52:37
总结的太好了,谢谢楼主,谢谢平台开发团队的辛勤劳动!!!

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