excel能否与access进行信息的部分导入和导出 5
如果可以,也请告知方法,非常感谢!! 展开
2017-08-29 · 知道合伙人软件行家
通过vba可以实现读取或写入access数据库。
举例说明:
有一个小工厂,需要在车间展示订单的进展状况,实现电子看板功能,实现方案就是用vba+access数据库。
第一步:创建access数据库。下图是该数据库所涉及的表格以及kb表的部分字段。
第二步:插入用户窗体以及模块。
第三步:编制相应代码。由于篇幅所限,无法将整个过程及代码全部展示,先展示部分和数据库连接以及读取access数据库的代码。
这个是程序开始的用户登录界面用户窗体。启动该窗体需要调用数据库的用户密码表格。如图
Private Sub UserForm_initialize()
Dim rst As New ADODB.Recordset
Dim mYpath As String
mYpath = ThisWorkbook.Path & "\rykb.accdb"
Set conn = CreateObject("ADODB.Connection") '这属于后期绑定
conn.ConnectionString = "Provider=Microsoft.Ace.OleDB.12.0;Data Source=" & mYpath
conn.ConnectionString = conn.ConnectionString & ";Jet OLEDB:Database Password=1" ‘数据库连接 密码 1
conn.Open
Sql = "SELECT * from yhgl2 " ‘获取表格yhgl2的所有字段及记录
rst.Open Sql, conn, adopenkeyset, adlockoptimistic
arr = rst.GetRows
For i = 0 To rst.RecordCount - 1
ComboBox1.AddItem arr(0, i) ‘将用户名写入控件,以便于用户选择
Next i
rst.Close
conn.Close
TextBox2.PasswordChar = "*"
End Sub
登录按钮代码如下:
Private Sub CommandButton1_Click()
Dim rst As New ADODB.Recordset
Dim mYpath As String
Dim YHM As String '用户名
Dim MM As String '密码
Dim YHZ As String
YHM = TextBox1.Text
MM = TextBox2.Text
mYpath = ThisWorkbook.Path & "\rykb.accdb"
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=Microsoft.Ace.OleDB.12.0;Data Source=" & mYpath
conn.ConnectionString = conn.ConnectionString & ";Jet OLEDB:Database Password=1"
conn.Open
Sql = "SELECT * from yhgl2 WHERE 用户名 = " & "'" & YHM & "'"
rst.Open Sql, conn, adopenkeyset, adlockoptimistic
BJ = False '标记默认为false
If rst.RecordCount < 1 Then
MsgBox ("该用户不存在!")
Else
arr = rst.GetRows
If arr(2, 0) = MM Then BJ = True
If BJ = False Then
MsgBox ("密码不正确!")
End If
End If
If BJ Then
YHZ = arr(1, 0)
Sql = "SELECT * from yhgl1 WHERE 用户组名 = " & "'" & YHZ & "'"
rst.Close
rst.Open Sql, conn, adopenkeyset, adlockoptimistic
arr = rst.GetRows
qx1 = arr(1, 0)
qx2 = arr(2, 0)
qx3 = arr(3, 0)
qx4 = arr(4, 0)
qx5 = arr(5, 0)
qx6 = arr(6, 0)
qx7 = arr(7, 0)
Unload Me
Call main(qx1, qx2, qx3, qx4, qx5, qx6, qx7)
End If
rst.Close
conn.Close
End Sub
运行代码的效果如图: