vba+access基础

vba+access基础

 

Sub 连接数据库()
'第一步:告诉电脑,我们要用ADO,就是引用ADO工具
'引用法
'工具--引用--Microsoft Activex Date Objects 6.1 Library
'工具--引用--Microsoft Activex Date Objects Recordset 6.0 Library
'引用后再声明:
'Dim conn As New Connection 声明链接对象
'Dim rst As New Recordset 声明记录集对象
'创建法
'使用CreateObject函数创建
'Set cnn = CreateObject("adodb.connection") '创建ado对象
'Set rst = CreateObject("ADODB.recordset") '创建记录集

''第二步:创建连接对象
''2-1:给连接对象取名字
'Dim con As ADODB.Connection     '声明对象变量
''2-2:创建对象变量并赋值
'Set con = New ADODB.Connection  '创建对象变量
Dim con As New ADODB.Connection

'第三步:建立Access数据库的连接
'con.Open "provider=Microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.Path & "\学生管理.accdb" '一条写法
'建立Excel的连接
'con.Open "provider=Microsoft.ace.oledb.12.0;extended properties
=excel 12.0;data source="&ThisWorkbook.Path & "\数据.xlsx" '一条写法
With con '多条写法
.Provider = "Microsoft.ace.oledb.12.0" '驱动程序的提供者及版本
(2007以上2003 8.0)
.ConnectionString = ThisWorkbook.Path & "\学生管理.accdb" '连接
字符串数据源的完整路径
.Open '打开数据库
End With
MsgBox "连接成功"
End Sub
Option Explicit
'SQL:结构化查询语言,数据定义、数据操纵
'数据定义:表的创建、表的删除等功能
'数据操纵:对记录的插入、删除、更新、查询

Sub 插入记录()
'1、定义、创建连接变量
Dim con As New ADODB.Connection

'2、建立数据库的连接
con.Open "provider=microsoft.ace.oledb.12.0;data source="&
ThisWorkbook.Path & "\学生管理.accdb"

'3、插入记录:insert into 表名(列1,列2,...) values(值1,值2,...)
    '当向表中所有字段添加记录时,可以省略表名后面()里的内容
    '表名和values有三个一致:数量一致、顺序一致、类型一致
    
'3-1:书写SQL命令
Dim sql0 As String, sql1 As String, arr(), i As Integer
sql0 = "insert into 院系(系号,系名,电话) values('A07','人文学院',
'9999')" sql1 = "insert into 院系 values('A11','明文学院','6666')" '当向表
中所有字段添加记录时,可以省略表名后面()里的内容 arr = Array(sql0, sql1) '3-2:执行SQL命令 For i = 0 To UBound(arr) con.Execute (arr(i)) Next i '4、释放变量空间 con.Close '关闭连接 Set con = Nothing '释放变量 End Sub
Sub 删改记录()
'1、定义、创建连接变量
Dim con As New ADODB.Connection

'2、建立数据库的连接
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.Path & "\学生管理.accdb"

''3、删除记录:delete from 表名 [where 条件],如果忽略条件,那么删除所有记录
Dim sql As String
'sql = "delete from 院系"
'sql = "Delete from 院系 where 系名='明文学院'"
'sql = "Delete from 院系 where 系号='A07'"

'更新记录:update 表名 set 字段1=值1, 字段2=值2 [where 条件],如果忽略条件,
那么更新所有记录 'Dim sql As String 'sql = "update 院系 set 电话='9999' where 系名='明文学院'" 'sql = "update 学生 set 班级='1班',研究方向='会计' where 性别='男'" '在SQL语句中使用变量 Dim str As String, bj As String '用于保存用户输入的条件 str = InputBox("输入性别", "提示") bj = InputBox("输入班级", "提示") 'sql = "update 学生 set 班级='2班' where 性别='" & str & "'" sql = "update 学生 set 班级='" & bj & "' where 性别='" & str & "'" sql = "update 学生 set 性别='女'" '执行SQL命令 con.Execute (sql) '4、释放变量空间 con.Close '关闭连接 Set con = Nothing '释放变量 End Sub
Sub SQL简单查询()
'1、定义、创建连接变量
Dim con As New ADODB.Connection

'2、建立数据库的连接
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.Path & "\学生管理.accdb"

'3、查询记录:select 字段列表 from 表名 [where 条件]
    '从某个表当中提取出满足某个条件的字段值
'    from 表名->select:提取-->[where 条件]-->字段列表的值
Dim sql As String
'3-1:查询表中的全部字段:*
sql = "select * from 院系"
'sql = "select 系号,系名 from 院系"
'sql = "select 系号,系名 from 院系 where 系名='明文学院' AND 系号='A11'"
'sql = "select 系号,系名 from 院系 where 系名='明文学院' OR 系号='A11'"

Dim rs As New ADODB.Recordset  '创建记录集对象
'执行SQL命令之后,提取到的数据会被加载到内存中
Set rs = con.Execute(sql)       '将记录集存到rs中

'MsgBox rs.Fields.Count          '字段个数
Sheets("演示").Range("a1").CurrentRegion.Clear '清空原有数据

'获取字段名,使用循环(0 到 字段个数-1
Dim i As Integer
For i = 0 To rs.Fields.Count - 1
    Sheets("演示").Cells(1, i + 1) = rs.Fields(i).Name
Next i

'将记录集rs中的数据返回到工作表
Sheets("演示").Range("A2").CopyFromRecordset rs

'4、释放对象变量空间
rs.Close: Set rs = Nothing '关闭并释放记录集对象
con.Close: Set con = Nothing '关闭并释放连接对象
End Sub
上一篇:shell脚本-变量


下一篇:00后的一套高可用,惊艳了面试官,当场开了20万年薪