Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2744|回复: 5

[已解决]如何根据黄色单元的单位名称和姓名在ACCESS数据提取相符的资料到绿色单元格

[复制链接]
发表于 2014-1-23 12:02 | 显示全部楼层 |阅读模式
本帖最后由 qinhuan66 于 2014-1-23 19:33 编辑

如何根据黄色单元的单位名称和姓名在ACCESS数据提取相符的资料到绿色单元格.工作表密码:695360052
数据库密码:695360052

个人信息.rar (238.82 KB, 下载次数: 10)
发表于 2014-1-23 18:19 | 显示全部楼层
还是用SQL查询呀,相关的RECORD直接写到相对应的单元格。
如果有多条相符的记录,如何取舍?
回复

使用道具 举报

 楼主| 发表于 2014-1-23 18:27 | 显示全部楼层
hwc2ycy 发表于 2014-1-23 18:19
还是用SQL查询呀,相关的RECORD直接写到相对应的单元格。
如果有多条相符的记录,如何取舍?

应该同一个单位相同名字极少数的,如果碰到相同的弹出提示需要那条信息。谢谢。
例如:
2014-01-23-182654.png
回复

使用道具 举报

发表于 2014-1-23 18:46 | 显示全部楼层    本楼为最佳答案   
  1. Option Explicit
  2. Const adUseClient = 3
  3. Const adModeShareDenyWrite = 8
  4. Const adModeReadWrite = 3
  5. Const adModeRead = 1

  6. Dim AdoConn As Object, AdoRst As Object
  7. Sub Main()
  8.     Dim strSql$
  9.     If Len([c2].Value) = 0 Or Len([b3].Value) = 0 Then
  10.         MsgBox "信息不完整"
  11.         Exit Sub
  12.     End If
  13.     If Not OpenConnect(ThisWorkbook.Path & Application.PathSeparator & "data.mdb", "695360052") Then
  14.         Exit Sub
  15.     End If
  16.     strSql = "select * from 个人信息 where 单位名称='" & [c2].Value & "' and 姓名='" & [b3].Value & "'"
  17.     If Not RunSql(strSql) Then
  18.         Exit Sub
  19.     End If
  20.     With AdoRst
  21.         If .RecordCount < 1 Then
  22.             MsgBox "无符合条件的记录"
  23.             .Close
  24.             Exit Sub
  25.         End If
  26.         Range("j2").Value = .Fields("单位性质").Value    '单位性质
  27.         Range("n2").Value = .Fields("参保类别").Value   '参保类别
  28.         Range("h3").Value = .Fields("身份证号").Value    '身份证号
  29.         Range("q2").Value = .Fields("参保时间").Value    '时间
  30.         Range("q3").Value = .Fields("参加工作时间").Value    '参加工作时间
  31.         Range("t3").Value = .Fields("联系地址").Value    '地址
  32.     End With
  33.     MsgBox "ok"
  34.     Set AdoRst = Nothing
  35. End Sub

  36. Function OpenConnect(strFullname As String, Optional dbpasswd As String = "") As Boolean
  37.     Dim StrConn$
  38.     On Error GoTo ErrorHandler
  39.     If AdoConn Is Nothing Then
  40.         Set AdoConn = CreateObject("ADODB.Connection")
  41.     Else
  42.         OpenConnect = True
  43.         Exit Function
  44.     End If

  45.     Select Case Application.Version
  46.         Case "14.0", "12.0"
  47.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source='" & _
  48.                       strFullname & "';Jet OLEDB:Database Password='" & dbpasswd & "';"
  49.         Case Else
  50.             StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  51.                       "Data Source='" & strFullname & "';Jet OLEDB:Database Password='" & dbpasswd & "';"
  52.     End Select

  53.     With AdoConn
  54.         .CommandTimeout = 5
  55.         .ConnectionTimeout = 5
  56.         .CursorLocation = adUseClient
  57.         .Mode = adModeRead
  58.         .ConnectionString = StrConn
  59.         .Open
  60.     End With

  61.     OpenConnect = True
  62.     Exit Function

  63. ErrorHandler:
  64.     MsgBox Err.Number & vbCrLf & Err.Description
  65.     Set AdoRst = Nothing
  66.     Set AdoConn = Nothing

  67. End Function

  68. Function RunSql(sql As String) As Boolean
  69.     On Error GoTo ErrorHandler
  70.     Set AdoRst = AdoConn.Execute(sql)
  71.     RunSql = True
  72.     Exit Function
  73. ErrorHandler:
  74.     MsgBox Err.Number & vbCrLf & Err.Description
  75. End Function
复制代码
回复

使用道具 举报

发表于 2014-1-23 18:48 | 显示全部楼层
基本的模型有了,其余的你就自己试着完善吧。
回复

使用道具 举报

发表于 2014-1-23 21:28 | 显示全部楼层
可以要选择文件用这个貌似更简单Application.GetOpenFilename
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 22:29 , Processed in 0.347540 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表