使用ado连接本身的数据库,需要先创建一个 adodb.connection的连接对象
Set cn = CreateObject("ADODB.Connection")
数据库的提供者
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
CurrentProject.Path是取得当前access数据库程序所在的路径
strCn = "Data Source = " & CurrentProject.Path & "\Accessdatabase.accdb;Jet OLEDB:Database Password= "
打开连接
cn.Open (strCn)
创建recorderset,用来接收查询到的数据
Set rs = CreateObject("ADODB.Recordset")
需要执行的检索sql文
rs.Open "SELECT * FROM tablename " & wherecondition, cn, 3, 1
rs.fields() 取得表中字段的值,列头的序号是从0开始的,这个例子中我写的是1,也就是表格中的第二列
kkn = rs.fields(1) 删除的sql文
使用连接的execute方法,第一个参数是sql文,第二参数是删除的记录条数,如果成功则返回1,失败返回0
cn.Execute "DELETE FROM tablename WHERE name = '" & Value & "' AND birthday = CDate('" & Value & "') ", cnt 更新的sql文
参数同上,cnt是返回更新的记录条数,1是成功,0是失败
cn.Execute “UPDATE tablename SET 更新字段=更新的值 WHERE name = '" & Value & "' AND birthday = CDate('" & Value & "') ", cnt 插入的sql文
参数同上,cnt是返回插入的记录条数,1是成功,0是失败
cn.Execute ”insert into tablename values(每个字段的值)",cnt 查询count(*)的sql文
因为这个查询后只有一个字段,所以使用rs.fields(0),1是已存在,0是不存在
rs.Open "SELECT COUNT(1) FROM tablename WHERE name = '" & Value & "' AND birthday = CDate('" & Value & "') ", cn, 3, 1
cnt = rs.fields(0)
checkbox是否选中的判断
Me.chk.Value = -1是选中 IsNull()判断是否为null
Len()判断数据的长度 email地址的判断
Set tkExp = CreateObject("VBScript.RegExp")
tkExp.Pattern = "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
If tkExp.Test(email) = False Then
MsgBox "email 格式不正確。", 48
Me.自宅email .SetFocus
Exit Function
End If
带有返回结果的msgbox,33的含义是 32+1,32是带有问号图标的提示框,1是显示“确定”和“取消”按钮,所以当你需要指定按钮和图标的时候可以把它们代表的数字加起来
当你点击取消的时候返回值是2,而vbCancel 的值是2,如果返回值和vbcancel的值一致的话,那么你点击的就是取消按钮,msgbox之后会详细列出来
msgRet = MsgBox("msg", 33)
If msgRet = vbCancel Then
Exit Sub
End If
打开新窗体,用法单独说明
DoCmd.OpenForm "openedFormName", , , , , , "需要传递的参数"
openedFormName中接收的写法是,变量=strTransitFormName = Me.OpenArgs 子窗体调用主窗体的方法并关闭自己
Dim main As MainForm
Set main = MainForm
main.検索_Click
DoCmd.Close acForm, "ChildForm"
子窗体右键可以删除数据的设置,设计视图许可设成 否