ACCESS软件网 accessoft.com 1 ● 精管理 ● 懂编程 高效率篇 – 运用Access实现降本增效 知识点 张志 微软最有价值专家 2 CONTENTS ACCESS软件网 accessoft.com 目 录 ● 精管理 ● 懂编程 1 VBA常用代码 2 条件语句 3 循环语句 4 Access的函数 VBA常用代码 条件语句 循环语句 Access的函数 3 CONTENTS ACCESS软件网 accessoft.com 目 录 ● 精管理 ● 懂编程 NO.1 VBA常用代码 VBA常用代码 01 02 RunSQL方法 取值与变量 条件语句 循环语句 Access的函数 4 ACCESS软件网 accessoft.com 1.1 RunSQL方法 ● 精管理 ● 懂编程 ● DoCmd.RunSQL 方法 (基于 Access 的对象模型) - 可以使用 RunSQL 操作 Microsoft Access 操作查询相应的 SQL 语句 - 操作查询是指生成表查询、追加查询、更新查询、删除表查询 01 Dim strSQL As String ● 相关参考: ’从销售订单表中生成一个 江苏分公司销售订单表 - CurrentDb.Execute strSQL (基于 DAO 对象模型) strSQL =“SELECT * INTO 江苏公司订单表 FROM 销售订单明细表 WHERE 分公司=‘江苏分公司’ -02CurrentProject.Connection.Execute strSQL (基于 ADO 对象模型) And 月份 =‘201403’“ ’屏蔽系统的警告 03 DoCmd.SetWarnings False ’执行生成表查询 04 DoCmd.RunSQL strSQL 05 DoCmd.SetWarnings True VBA常用代码 条件语句 循环语句 Access的函数 5 ACCESS软件网 accessoft.com 1.2 取值与变量 ● 精管理 ● 懂编程 ● 获取值/变量的方法 - 模块级变量、全局变量 - 窗体间获取值 - 从表中获取值 代码1: Public strCompany 代码1: Forms!窗体名称!控件名称 DLookUp(“[字段名]”,”[表名称]”,”[字段]=某值”) As String ’全局变量,在标准模块的顶部进行变量声明 代码2: Dim strCompany 代码2: Me.子窗体控件的名称.Form!控件名称 DLookUp(“[分公司]”,”tbl参数表”) As String ’模块级变量,在窗体模块的顶部进行变量声明 代码3: 代码3: DLookUp(“[订单号]”,”tbl销售订单表”,”[客户名称]=‘上海盟威软件有限公司’”) Form_窗体名称!控件名称 VBA常用代码 条件语句 循环语句 Access的函数 6 CONTENTS ACCESS软件网 accessoft.com 目 录 ● 精管理 ● 懂编程 NO.2 条件语句 VBA常用代码 01 02 IF…Then… Select Case 条件语句 循环语句 Access的函数 7 ACCESS软件网 accessoft.com 2.1 IF…THEN… ● 精管理 ● 懂编程 ● If...Then...Else语句 当条件是 True 或 False 时会生成分支 Private Sub cmdOK_Click() If Me.FrameReport = 1 Then DoCmd.OpenReport "rpt销售日报表", acViewPreview End If If Me.FrameReport = 2 Then DoCmd.OpenReport “rpt销售周报表", acViewPreview End If End Sub Private Sub cmdOK_Click() If Me. FrameReport = 1 Then DoCmd.OpenReport "rpt销售日报表", acViewPreview Else DoCmd.OpenReport "rpt销售月报表", acViewPreview End If End Sub VBA常用代码 条件语句 循环语句 Access的函数 8 ACCESS软件网 accessoft.com 2.2 SELECT CASE ● 精管理 ● 懂编程 ● Select Case语句 从一个条件设置中选择某一分支 Private Sub cmdOK_Click() Select Case Me.FrameReport Case 1 DoCmd.OpenReport "rpt销售日报表", acViewPreview Case 2 DoCmd.OpenReport "rpt销售周报表", acViewPreview Case 3 DoCmd.OpenReport "rpt销售月报表", acViewPreview End Select End Sub VBA常用代码 条件语句 循环语句 Access的函数 9 CONTENTS ACCESS软件网 accessoft.com 目 录 ● 精管理 ● 懂编程 NO.3 循环语句 VBA常用代码 01 02 DO…LOOP FOR…NEXT 条件语句 循环语句 Access的函数 10 ACCESS软件网 accessoft.com 3.1 DO…LOOP ● 精管理 ● 懂编程 ● Do...Loop 语句 可以使用 Do...Loop 语句去运行语句的块,而它所用掉的时间是不确定的。当条件为 True 或 直到条件变成 True 时,此语句会一直重复。 - While关键字 当条件为 True 时,开始重复语句,否则结束 - Until 关键字 一直重复语句,直到条件为 True 时方结束 Sub ChkWhile() counter = 0 myNum = 20 Do While myNum > 15 myNum = myNum - 1 counter = counter + 1 Loop MsgBox “循环次数为:" & counter End Sub Sub ChkUntil() counter = 0 myNum = 20 Do Until myNum = 5 myNum = myNum - 1 counter = counter + 1 Loop MsgBox “循环次数为:" & counter End Sub - Exit Do 使用 Exit Do 语句来退出 Do...Loop 语句 VBA常用代码 条件语句 循环语句 Access的函数 11 ACCESS软件网 accessoft.com 3.2 FOR…NEXT ● 精管理 ● 懂编程 ● For...Next 语句 可以使用 For...Next 语句去重复一个语句块,而它的次数的 数字是指定的。For 循环使用一个计数变量,当重复每个循环时它的值会增加或 减少。 - Step关键字 可以由所指定的值增加或减少计数变量。 Sub Beeps() For x = 1 To 20 Beep Next x End Sub Sub TwosTotal() i=0 For j = 2 To 10 Step 2 total = total + i i=i+1 Next j MsgBox "循环次数: " & i End Sub VBA常用代码 条件语句 循环语句 Access的函数 12 CONTENTS ACCESS软件网 accessoft.com 目 录 ● 精管理 ● 懂编程 NO.4 ACCESS的函数 VBA常用代码 01 02 函数 自定义函数 条件语句 循环语句 Access的函数 13 ACCESS软件网 accessoft.com 4.1 函数 ● 精管理 ● 懂编程 ● 函数 通俗地说,函数是代入一个或几个变量,得出对应的值。 - Mid 函数 Cdate 函数 Month 函数 DateDiff 函数 VBA常用代码 条件语句 循环语句 Access的函数 14 ACCESS软件网 accessoft.com 4.2 自定义函数 ● 精管理 ● 懂编程 ● 自定义函数 GetBirthday函数 Function GetBirthday(IDcard As String) As Date ‘在此仅为举例,本函数未考虑15位身份证号 On Error GoTo ErrorGetBirthday GetBirthday = CDate(Mid(IDcard, 7, 4) & "-" & Mid(IDcard, 11, 2) & "-" & Mid(IDcard, 13, 2)) Exit_GetBirthday: Exit Function ErrorGetBirthday: GetBirthday = #1/1/1900# Resume Exit_GetBirthday End Function Debug.Print GetBirthday("41002198008084037") VBA常用代码 条件语句 循环语句 Access的函数 ACCESS软件网 accessoft.com 15 ● 精管理 ● 懂编程 您的潜力,我们的动力! 新浪微博: @张志MVP-Access 电子邮箱: [email protected] 扫描二维码关注 获取Access资讯、技术文章、讲座预告 微信公众平台号码:Accessoft THANK YOU! ®