ACCESS的函数 - 51CTO.COM

Download Report

Transcript ACCESS的函数 - 51CTO.COM

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!
®