ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1501|回复: 1

用excel数据更新access数据库问题请教

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-12-21 14:11 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下面代码是我找来的高手写的,用excel数据更新access数据库。如果立案号相同,则赔偿金额累加更新。如不同,则追加1条记录。我的需求比这个简单:不用再看日期大小,如果立案号相同,则整条记录更新更新。如不同,则追加1条记录。怎么做呢?
Private Sub 追加_Click()
     Dim rsE As New ADODB.Recordset
     Dim ssql As String
     Dim i As Integer, m1 As Integer, m2 As Integer
     ssql = "select a.立案号,min(a.起保日期) as 起保日期,min(a.终保日期) as 终保日期,min(a.立案日期) as 立案日期,max(a.赔付日期) as 赔付日期,sum(a.赔付金额) as 赔付金额 from (" & Me.Excel表.RowSource & ") as a group by a.立案号"
     rsE.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
     m1 = 0: m2 = 0
     For i = 1 To rsE.RecordCount
         If DCount("立案号", "tblP09_yj", "立案号='" & rsE!立案号.Value & "'") > 0 Then
             If DLookup("赔付日期", "tblP09_yj", "立案号='" & rsE!立案号.Value & "'") < rsE!赔付日期.Value Then
                 ssql = "update tblP09_yj set 赔付日期=#" & rsE!赔付日期.Value & "#,"
                 ssql = ssql & "赔付金额=赔付金额+" & rsE!赔付金额.Value
                 ssql = ssql & " where 立案号='" & rsE!立案号.Value & "'"
                 CurrentDb.Execute ssql
                 m1 = m1 + 1
             End If
         Else
             ssql = "insert into tblP09_yj (立案号,起保日期,终保日期,立案日期,赔付日期,赔付金额) "
             ssql = ssql & "values ('" & rsE!立案号.Value & "',#"
             ssql = ssql & rsE!起保日期.Value & "#,#"
             ssql = ssql & rsE!终保日期.Value & "#,#"
             ssql = ssql & rsE!立案日期.Value & "#,#"
             ssql = ssql & rsE!赔付日期.Value & "#,"
             ssql = ssql & rsE!赔付金额.Value & ")"
             CurrentDb.Execute ssql
             m2 = m2 + 1
         End If
         rsE.MoveNext
     Next
     rsE.Close: Set rsE = Nothing
     Me.tblP09_yj.Requery
     MsgBox "修改赔付金额记录数:" & m1 & Chr(13) & Chr(10) & "追加新纪录数:" & m2
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-21 14:15 | 显示全部楼层
就是这段怎么改呢?
If DCount("立案号", "tblP09_yj", "立案号='" & rsE!立案号.Value & "'") > 0 Then
              If DLookup("赔付日期", "tblP09_yj", "立案号='" & rsE!立案号.Value & "'") < rsE!赔付日期.Value Then
                  ssql = "update tblP09_yj set 赔付日期=#" & rsE!赔付日期.Value & "#,"
                  ssql = ssql & "赔付金额=赔付金额+" & rsE!赔付金额.Value
                  ssql = ssql & " where 立案号='" & rsE!立案号.Value & "'"
                  CurrentDb.Execute ssql
                  m1 = m1 + 1
              End If
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 15:41 , Processed in 0.025462 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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