加载中...
QQ群:3790902 | 设为首页 | 加入收藏 | sitemap |
 
初级 程序员 网管员 信处技 电商技 中级 数工 软测 监理师 多媒体设计师 软设 信息系统管理 嵌入式 电商设 网工 系统集成 高级 系统分析 网络规划 项目管理 系统架构
数据库 操作系统 数据结构 软件工程 计算机系统 语言 网络 多媒体 标准化 计算机图形学 电子商务 数据挖掘 编译原理 信号处理
VB C\C++ Java ASP PHP JSP Access MSSQL Mysql Oracle DB2 Sybase Delphi 片上系统
Ajax .net Perl Pascal ODS XML 云计算 P2P 工作流 快速工具 设计模式 异构数据 统一过程 软件架构
供应链 ERP CRM UML CMM J2EE 中间件 EAI 产品线 商业智能 极限编程 多核技术 外包ASP SOA
PB WEB Service WSDL UDDI SOAP TSP 虚拟化 AOP SaaS 论文 网格计算 普适计算 敏捷方法 RIA

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

2008-8-13 21:22:48 不详 佚名 【字体:

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

以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

以下是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                  --------------数据输入完毕后刷新一下窗体控件
    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                                               ----------清空记录集
        '刷新数据
        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

以下是修改窗体的代码:
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

相关阅读:

上一篇文章:Access开发平台学习常见问题解答
下一篇文章:UMV平台修改的时候按保存再修改

网友评论:


图文信息
利用AJAX+J2EE开发组织机构管理系统 “老虎”来了 J2SE1.5新功能一览
ACCESS开发教程第4章第7节 Java高手论道:你还在用if else吗?