Access/VBA/Excel-15-表信息整体迁移


Part 1:问题

  1. 有一个原信息表存储着学生的姓名和成绩信息,现在需要对信息进行扩容
  2. 有一个新信息表,不仅有学生的姓名和成绩信息,还有一些其它信息
  3. 问题:将原信息表中满足要求的信息复制到新信息表中去,示例复制张三的信息

原信息数据表
图片

新信息
图片

Part 2:代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub test()        
Dim adConn As New ADODB.Connection '连接
Dim rs As New ADODB.Recordset
Dim SQL As String
Dim tblName
Dim dbAddr

dbAddr = ThisWorkbook.Path & "\信息档案.accdb"
tbl1Name = "原信息"
tbl2Name = "新信息"

'连接数据库
With adConn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "Data Source=" & dbAddr
End With

opFilds = "*"
searchC = "姓名='张三'"

SQL = "Insert Into " & tbl2Name & " Select " & opFilds & " From " & tbl1Name & " Where (" & searchC & ")"
Set rs = adConn.Execute(SQL)End Sub

代码截图
图片

执行结果
图片

Part 3:部分代码解读

  1. **核心*SQL***:Insert Into 新信息 Select * From 原信息 Where (姓名='张三')
  2. 上面SQL由两部分组成:Insert Into 加入新表部分,Select 查询获取拟加入新表的信息
  3. 这种方法要求新信息表中必须有相同的字段

核心*SQL*
图片

Part 4:延伸

  • 只从旧信息表中获取2个字段:姓名,语文
1
Insert Into 新信息 Select 姓名,语文 From 原信息 Where (姓名='李四')

执行结果
图片

  • 旧信息表中获取所有字段所有记录

    1
    Insert Into 新信息 Select * From 原信息

    执行结果
    图片

思考:下面这句***SQL***的结果又是什么效果呢?

1
Insert Into 新信息 (姓名,数学) Select 姓名,语文 From 原信息 Where (姓名='李四')