Excel精英培训网

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

[已解决]求助各位老师:如何提交浅绿色区域的数据到 Access数据库

[复制链接]
发表于 2013-4-2 10:26 | 显示全部楼层 |阅读模式
本帖最后由 qinhuan66 于 2013-4-2 11:11 编辑

求助各位老师:如何生成浅绿色区域的数据生成到2003Microsoft Access数据库,以委托日期、今收到的姓名和人民币合计金额为准3者相同(如图一)不能重复提交到数据库。
如没数据库自动新建数据库。谢谢。
社会保险基金专用收款收据.rar (10.35 KB, 下载次数: 6)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-4-2 15:06 | 显示全部楼层
  1. Sub 按钮2_Click()


  2.     Dim AccessFile As String, Database As String, SQL As String
  3.     Dim StrConn$, strSql$
  4.     Dim lLastrow&
  5.     Dim arr, i&, j As Byte

  6.     Dim AdoxCat As Object
  7.     Dim AdoCmd As Object
  8.     Dim AdoConn As Object
  9.     Dim AdoRst As Object


  10.     On Error GoTo Errcheck
  11.     AccessFile = ThisWorkbook.Path & "\收款收剧.mdb"
  12.     Database = "收款信息"
  13.     If Dir(AccessFile) = "" Then
  14.         
  15.         '检测文件是否存在,不存在则创建数据库
  16.         Set AdoxCat = CreateObject("adox.catalog")
  17.         AdoxCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessFile
  18.         Set AdoConn = AdoxCat.ActiveConnection
  19.         Set AdoCmd = CreateObject("ADODB.Command")
  20.         Set AdoCmd.ActiveConnection = AdoConn
  21.         AdoCmd.CommandText = "CREATE TABLE " & Database & _
  22.                              " (委托日期 datetime ,缴款人 text(50),项目 text(50),金额 REAL," & _
  23.                              "成年人正常缴费 real,成年人正常缴费人数 INTEGER," & _
  24.                              "未成年人正常缴费 real,未成年人正常缴费人数 INTEGER," & _
  25.                              "备注 text(100),收款方式 text(10));"
  26.         AdoCmd.Execute , , 1    'adCmdText
  27.         Set AdoCmd = Nothing
  28.         Set AdoxCat = Nothing
  29.         Set AdoConn = Nothing

  30.     End If

  31.     StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  32.               "Data Source=" & AccessFile & ";"""

  33.     Set AdoConn = CreateObject("ADODB.Connection")

  34.     AdoConn.CursorLocation = 3
  35.     AdoConn.Mode = 3
  36.     AdoConn.CommandTimeout = 5
  37.     AdoConn.connectionTimeout = 5
  38.     AdoConn.Open StrConn

  39.     If AdoConn.State <> 1 Then MsgBox "数据库连接失败", vbCritical + vbOKOnly: Exit Sub

  40.     strSql = "select * from " & Database & " where 委托日期=#" & [h5] & "# " & " and 缴款人 like '" & [e6] & "' and 金额=" & [j7]
  41.    
  42.     Set AdoRst = AdoConn.Execute(strSql)
  43.     If AdoRst.RecordCount = 0 Then
  44.         strSql = " insert into " & Database & " values(#" & _
  45.                  [h5] & "#,'" & [e6] & "','" & [i6] & "'," & _
  46.                  [j7] & "," & [j9] & "," & [k9] & "," & _
  47.                  [j10] & "," & [k10] & ",'" & [d14] & "','" & [k14] & "')"
  48.         AdoConn.Execute strSql
  49.         MsgBox "添加成功"

  50.     Else
  51.         MsgBox "记录已经存在,不能重复添加"
  52.     End If
  53.    
  54.     AdoConn.Close
  55.     Set AdoConn = Nothing
  56.     Exit Sub
  57. Errcheck:

  58.     MsgBox Err.Number & vbNewLine & _
  59.            Err.Description
  60. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
qinhuan66 + 1 谢谢hwc2ycy老师的热心帮忙。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-4-2 15:21 | 显示全部楼层
hwc2ycy 发表于 2013-4-2 15:06

老师真的很感谢您。能否做到提交后清空黄色这三个单元格的数据,如果三个单元格没值时不能提交到数据库(还有提示)。谢谢
2013-04-02_151722.jpg
回复

使用道具 举报

发表于 2013-4-2 15:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2013-4-2 15:32 编辑
  1. Sub 按钮2_Click()


  2.     Dim AccessFile As String, Database As String, SQL As String
  3.     Dim StrConn$, strSql$
  4.     Dim lLastrow&
  5.     Dim arr, i&, j As Byte

  6.     Dim AdoxCat As Object
  7.     Dim AdoCmd As Object
  8.     Dim AdoConn As Object
  9.     Dim AdoRst As Object


  10.     On Error GoTo Errcheck
  11.     AccessFile = ThisWorkbook.Path & "\收款收剧.mdb"
  12.     Database = "收款信息"
  13.     If Dir(AccessFile) = "" Then

  14.         '检测文件是否存在,不存在则创建数据库
  15.         Set AdoxCat = CreateObject("adox.catalog")
  16.         AdoxCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessFile
  17.         Set AdoConn = AdoxCat.ActiveConnection
  18.         Set AdoCmd = CreateObject("ADODB.Command")
  19.         Set AdoCmd.ActiveConnection = AdoConn
  20.         AdoCmd.CommandText = "CREATE TABLE " & Database & _
  21.                              " (委托日期 datetime ,缴款人 text(50),项目 text(50),金额 REAL," & _
  22.                              "成年人正常缴费 real,成年人正常缴费人数 INTEGER," & _
  23.                              "未成年人正常缴费 real,未成年人正常缴费人数 INTEGER," & _
  24.                              "备注 text(100),收款方式 text(10));"
  25.         AdoCmd.Execute , , 1    'adCmdText
  26.         Set AdoCmd = Nothing
  27.         Set AdoxCat = Nothing
  28.         Set AdoConn = Nothing

  29.     End If
  30.     If Len([h5]) = 0 Or Len([j9]) = 0 Or Len([j10]) = 0 Then
  31.         MsgBox "E6,J9,J10数据不完整,请先填好数据再行操作"
  32.         Exit Sub
  33.     End If

  34.     StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  35.               "Data Source=" & AccessFile & ";"""

  36.     Set AdoConn = CreateObject("ADODB.Connection")

  37.     With AdoConn
  38.         .CursorLocation = 3
  39.         .Mode = 3
  40.         .CommandTimeout = 5
  41.         .connectionTimeout = 5
  42.         .Open StrConn
  43.         If .State <> 1 Then MsgBox "数据库连接失败", vbCritical + vbOKOnly: Exit Sub
  44.     End With


  45.     strSql = "select * from " & Database & " where 委托日期=#" & [h5] & "# " & " and 缴款人 like '" & [e6] & "' and 金额=" & [j7]

  46.     Set AdoRst = AdoConn.Execute(strSql)
  47.    
  48.     If AdoRst.RecordCount = 0 Then
  49.         strSql = " insert into " & Database & " values(#" & _
  50.                  [h5] & "#,'" & [e6] & "','" & [i6] & "'," & _
  51.                  [j7] & "," & [j9] & "," & [k9] & "," & _
  52.                  [j10] & "," & [k10] & ",'" & [d14] & "','" & [k14] & "')"
  53.         AdoConn.Execute strSql
  54.         MsgBox "添加成功"
  55.         [e6] = "": [j9] = "": [j10] = ""
  56.     Else
  57.         MsgBox "记录已经存在,不能重复添加"
  58.     End If

  59.     AdoConn.Close
  60.     Set AdoConn = Nothing
  61.     Exit Sub

  62. Errcheck:

  63.     MsgBox Err.Number & vbNewLine & _
  64.            Err.Description
  65. End Sub
复制代码
最好在几个 关键的单元格添加数据有效性。
刚刚没想过空值的问题。



  

评分

参与人数 1 +1 收起 理由
qinhuan66 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-4-2 15:47 | 显示全部楼层
hwc2ycy 发表于 2013-4-2 15:30
最好在几个 关键的单元格添加数据有效性。
刚刚没想过空值的问题。

老师能否做到在黄色区域输入月份能自动从Microsoft Access数据库提取缴款人、成年人正常缴费、未成年人正常缴费、金额到查询这个工作表.谢谢

附件:
社会保险基金专用收款收据.rar (26.8 KB, 下载次数: 1)
回复

使用道具 举报

发表于 2013-4-2 15:49 | 显示全部楼层
qinhuan66 发表于 2013-4-2 15:47
老师能否做到在黄色区域输入月份能自动从Microsoft Access数据库提取缴款人、成年人正常缴费、未成年人正 ...

再次发贴吧,{:912:}
回复

使用道具 举报

 楼主| 发表于 2013-4-2 15:54 | 显示全部楼层
hwc2ycy 发表于 2013-4-2 15:49
再次发贴吧,

论坛新贴:

http://www.excelpx.com/thread-298390-1-1.html

麻烦老师了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 18:02 , Processed in 0.350757 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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