打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA-数据库查询实例

1.首先我们得做一个窗体,其布局和运行效果如下

2.我们要理清思路,首先窗体在运行时就应该将部门加载进去,并且将重复的部门剔除掉

  1. Private Sub UserForm_Initialize()
  2. Set con = New ADODB.Connection
  3. With con
  4. .Provider = "microsoft.ace.oledb.12.0"
  5. .ConnectionString = "data source=" & ThisWorkbook.Path & "\学生管理.accdb"
  6. .Open
  7. End With
  8. '提取
  9. Dim sql As String
  10. sql = "select distinct 部门 from 员工"
  11. Set rs = New ADODB.Recordset
  12. rs.Open sql, con, adOpenKeyset, adLockOptimistic '产生记录集
  13. Dim i As Integer
  14. '将记录集中的部门名称显示到listbox1 列表框中
  15. With ListBox1
  16. .Clear
  17. For i = 1 To rs.RecordCount
  18. .AddItem rs("部门")
  19. rs.MoveNext '将记录集中的指针指向下一条记录
  20. Next i
  21. End With
  22. rs.Close
  23. End Sub

3.我们要实现的是在选择部门中选择部门后,将这个部门的员工编号,姓名显示在选择员工的列表框中

  1. '单击列表框,查询员工信息
  2. Private Sub ListBox1_Click()
  3. Dim sql As String
  4. sql = "select 编号,姓名 from 员工 where 部门='" & ListBox1.Value & " 'order by 编号"
  5. rs.Open sql, con, adOpenKeyset, adLockOptimistic '产生记录集
  6. Dim i As Integer
  7. With ListBox2
  8. .Clear
  9. For i = 1 To rs.RecordCount
  10. .AddItem rs("编号") & Space(2) & rs("姓名")
  11. rs.MoveNext '将记录集中的指针指向下一条记录
  12. Next i
  13. End With
  14. rs.Close
  15. End Sub

 4.将选择员工后,把员工的对应信息显示在对应的文本框中,便可以实现查询功能

  1. '单击列表框,将对应的信息显示在对应的文本框中
  2. Private Sub ListBox2_Click()
  3. Dim sql As String
  4. sql = "select * from 员工 where 编号='" & Left(ListBox2.Value, 6) & "'"
  5. rs.Open sql, con, adOpenKeyset, adLockOptimistic
  6. Dim arr, i As Integer
  7. arr = Array("TextBox1", "TextBox2", "TextBox3", "TextBox4", "TextBox5", "TextBox6", "TextBox7", "TextBox8", "TextBox9", "TextBox10")
  8. For i = 0 To 7
  9. Me.Controls(arr(i)).Value = rs.Fields(i)
  10. Next i
  11. rs.Close
  12. End Sub

5.完整代码及解释如下

  1. Option Explicit
  2. Dim con As ADODB.Connection
  3. Dim rs As ADODB.Recordset
  4. '关闭数据库连接,关闭窗体,释放变量空间
  5. Private Sub CommandButton1_Click()
  6. con.Close
  7. Set rs = Nothing
  8. Set con = Nothing
  9. Unload Me
  10. End Sub
  11. '单击列表框,查询员工信息
  12. Private Sub ListBox1_Click()
  13. Dim sql As String
  14. sql = "select 编号,姓名 from 员工 where 部门='" & ListBox1.Value & " 'order by 编号"
  15. rs.Open sql, con, adOpenKeyset, adLockOptimistic '产生记录集
  16. Dim i As Integer
  17. With ListBox2
  18. .Clear
  19. For i = 1 To rs.RecordCount
  20. .AddItem rs("编号") & Space(2) & rs("姓名")
  21. rs.MoveNext '将记录集中的指针指向下一条记录
  22. Next i
  23. End With
  24. rs.Close
  25. End Sub
  26. '单击列表框,将对应的信息显示在对应的文本框中
  27. Private Sub ListBox2_Click()
  28. Dim sql As String
  29. sql = "select * from 员工 where 编号='" & Left(ListBox2.Value, 6) & "'"
  30. rs.Open sql, con, adOpenKeyset, adLockOptimistic
  31. Dim arr, i As Integer
  32. arr = Array("TextBox1", "TextBox2", "TextBox3", "TextBox4", "TextBox5", "TextBox6", "TextBox7", "TextBox8", "TextBox9", "TextBox10")
  33. For i = 0 To 7
  34. Me.Controls(arr(i)).Value = rs.Fields(i)
  35. Next i
  36. rs.Close
  37. End Sub
  38. Private Sub UserForm_Initialize()
  39. Set con = New ADODB.Connection
  40. With con
  41. .Provider = "microsoft.ace.oledb.12.0"
  42. .ConnectionString = "data source=" & ThisWorkbook.Path & "\学生管理.accdb"
  43. .Open
  44. End With
  45. '提取
  46. Dim sql As String
  47. sql = "select distinct 部门 from 员工"
  48. Set rs = New ADODB.Recordset
  49. rs.Open sql, con, adOpenKeyset, adLockOptimistic '产生记录集
  50. Dim i As Integer
  51. '将记录集中的部门名称显示到listbox1 列表框中
  52. With ListBox1
  53. .Clear
  54. For i = 1 To rs.RecordCount
  55. .AddItem rs("部门")
  56. rs.MoveNext '将记录集中的指针指向下一条记录
  57. Next i
  58. End With
  59. rs.Close
  60. End Sub
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第6章 查询SQL Server数据库概述
Vba access Excel编程
vba
excel连接ORACLE正确方法
Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库
Excel VBA 连接 MySQL 数据库遇到的“巨坑”
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服