Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: hrq145

[已解决]EXCEL+ACCESS记录添加问题!

[复制链接]
 楼主| 发表于 2013-5-10 15:21 | 显示全部楼层
hwc2ycy 发表于 2013-5-10 15:12

能上传附件吗                  
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2013-5-10 15:24 | 显示全部楼层
再完善了下。
  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. Function OpenConnect(strFullname) As Boolean
  8.     Dim StrConn$

  9.     On Error GoTo ErrorHandler
  10.     If AdoConn Is Nothing Then
  11.         Set AdoConn = CreateObject("ADODB.Connection")
  12.     Else
  13.         OpenConnect = True
  14.         Exit Function
  15.     End If

  16.     Select Case Application.Version
  17.         Case Is = "14.0":
  18.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source='" & _
  19.                       strFullname & "';"
  20.         Case Is = "12.0"
  21.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source='" & _
  22.                       strFullname & "';"
  23.         Case Else
  24.             StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  25.                       "Data Source=" & strFullname & "';"
  26.     End Select

  27.     With AdoConn
  28.         .CommandTimeout = 5
  29.         .ConnectionTimeout = 5
  30.         .CursorLocation = adUseClient
  31.         .Mode = adModeReadWrite
  32.         .ConnectionString = StrConn
  33.         .Open
  34.     End With

  35.     OpenConnect = True
  36.     Exit Function

  37. ErrorHandler:
  38.     MsgBox Err.Number & vbCrLf & _
  39.            Err.Description
  40.     Set AdoRst = Nothing
  41.     Set AdoConn = Nothing

  42. End Function

  43. Sub 写入ACC()
  44.     Dim strDatabase$
  45.     Dim strSQL$

  46.     On Error GoTo ErrorHandler

  47.     strDatabase = ThisWorkbook.Path & Application.PathSeparator & "三车间数据库.mdb"

  48.     If Not OpenConnect(strDatabase) Then
  49.         MsgBox "访问 " & strDatabase & " 失败" & vbCrLf & _
  50.                "确定退出", vbCritical + vbOKOnly
  51.         Exit Sub
  52.     End If

  53.     If Len(Range("b4")) = 0 Or Len(Range("b7").Value) = 0 Then
  54.         MsgBox "B4,B7单元格为必填字段"
  55.         Exit Sub
  56.     End If

  57.     Dim arr
  58.     Dim i As Byte

  59.     arr = Range("a3:b11")
  60.     Set AdoRst = CreateObject("adodb.recordset")
  61.     strSQL = "select * from 记录库 where 批号=" & Range("b4").Value
  62.     AdoRst.Open strSQL, AdoConn, 2, 3

  63.     With AdoRst
  64.         If .RecordCount > 0 Then
  65.             If MsgBox("批号已经重复" & vbCrLf & _
  66.                       "确认覆盖记录?", vbCritical + vbOKCancel) = vbOK Then
  67.                 For i = LBound(arr) To UBound(arr)
  68.                     .Fields(arr(i, 1)) = arr(i, 2)
  69.                 Next
  70.             Else
  71.                 Exit Sub
  72.             End If
  73.         Else
  74.             .AddNew
  75.             For i = LBound(arr) To UBound(arr)
  76.                 .Fields(arr(i, 1)) = arr(i, 2)
  77.             Next
  78.         End If
  79.         .Update
  80.         MsgBox "添加完成"
  81.     End With
  82.     Set AdoRst = Nothing
  83.     Exit Sub

  84. ErrorHandler:
  85.     MsgBox Err.Number & vbCrLf & _
  86.            Err.Description
  87. End Sub

  88. Sub 读取ACC()
  89.     Dim strDatabase$
  90.     Dim strSQL$

  91.     On Error GoTo ErrorHandler
  92.     strDatabase = ThisWorkbook.Path & Application.PathSeparator & "三车间数据库.mdb"

  93.     If Not OpenConnect(strDatabase) Then
  94.         MsgBox "访问 " & strDatabase & " 失败" & vbCrLf & _
  95.                "确定退出", vbCritical + vbOKOnly
  96.         Exit Sub
  97.     End If

  98.     If Len(Range("b4")) = 0 Then
  99.         MsgBox "B4单元格为必填字段"
  100.         Exit Sub
  101.     End If

  102.     Dim arr
  103.     Dim i As Byte
  104.     arr = Range("a3:b11")

  105.     Set AdoRst = CreateObject("adodb.recordset")
  106.     strSQL = "select * from 记录库 where 批号=" & Range("b4").Value

  107.     AdoRst.Open strSQL, AdoConn    ', 2, 3
  108.     Application.ScreenUpdating = False
  109.     With AdoRst

  110.         If .RecordCount > 0 Then
  111.             For i = LBound(arr) To UBound(arr)
  112.                 arr(i, 2) = .Fields(arr(i, 1))
  113.             Next
  114.             Range("a3").Resize(UBound(arr), UBound(arr, 2)).Value = arr
  115.             MsgBox "完成"
  116.         Else
  117.             MsgBox "查找不到批号 " & Range("b4").Value & " 的记录"
  118.             Application.ScreenUpdating = False
  119.             Range("b3:b11").ClearContents
  120.         End If
  121.     End With
  122.     Set AdoRst = Nothing
  123.     Application.ScreenUpdating = True
  124.     Exit Sub

  125. ErrorHandler:
  126.     MsgBox Err.Number & vbCrLf & _
  127.            Err.Description
  128. End Sub

  129. Sub 关闭连接()
  130.     If Not AdoConn Is Nothing Then
  131.         AdoConn.Close
  132.         Set AdoConn = Nothing
  133.         MsgBox "连接关闭"
  134.     End If
  135. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-10 15:25 | 显示全部楼层
生产登记.rar (16.82 KB, 下载次数: 25)
回复

使用道具 举报

 楼主| 发表于 2013-5-10 15:33 | 显示全部楼层
hwc2ycy 发表于 2013-5-10 15:25

为什么我把数据库放在一起,还是找不到数据库呢
回复

使用道具 举报

发表于 2013-5-10 15:43 | 显示全部楼层
文件名没改吧。
用的什么版本。
回复

使用道具 举报

 楼主| 发表于 2013-5-10 15:45 | 显示全部楼层
没改  2003版            
回复

使用道具 举报

发表于 2013-5-10 15:50 | 显示全部楼层
hrq145 发表于 2013-5-10 15:33
为什么我把数据库放在一起,还是找不到数据库呢

你用的什么版本?
另外,实际使用的时候数据库的文件名呢。
最好截图。

我是用10测试的,没有问题。
回复

使用道具 举报

 楼主| 发表于 2013-5-10 15:58 | 显示全部楼层
hwc2ycy 发表于 2013-5-10 15:50
你用的什么版本?
另外,实际使用的时候数据库的文件名呢。
最好截图。

的额额.jpg 对对对.jpg
回复

使用道具 举报

发表于 2013-5-10 16:12 | 显示全部楼层
你数据库存的图标不对啊。是不是没有扩展名啊。
你把数据库改下名 三车间数据库.mdb
回复

使用道具 举报

 楼主| 发表于 2013-5-10 16:28 | 显示全部楼层
hwc2ycy 发表于 2013-5-10 16:12
你数据库存的图标不对啊。是不是没有扩展名啊。
你把数据库改下名 三车间数据库.mdb

改了,还不行啊                        
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 00:50 , Processed in 0.626853 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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