Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

用Excel表更新和追加数据表记录示例-新问题请教

bjdzdy  发表于:2013-12-20 10:50:32  
复制

原帖就煮江品茶大侠的,链接是http://www.accessoft.com/blog/article-show.asp?userid=10802&Id=7268。现在我的需求比这个例子简单:如果excel中的立案号与access中都有,则用excel数据更新覆盖(excel中立案号唯一)。如没有,则追加 。怎么办呢?我是初学,没太看懂窗体代码。谢谢了。

 

Top
煮江品茶 发表于:2013-12-20 12:11:58
使劲看

bjdzdy 发表于:2013-12-20 12:21:07
我基础太差,看了1天了,也试着改了改,还是不行。主要是在if dcount这一段要改。求教呀。

叶海峰 发表于:2013-12-20 16:23:33
做一个删除查询,把access中和excel中重复的先删除,然后再把excel中所有的追加就是了.不理会覆盖.

bjdzdy 发表于:2013-12-20 16:25:36
删除不行的。access中数据是总数据,excel是用来更新、添加的。

bjdzdy 发表于:2013-12-20 18:04:16

还有就是我不需要判断日期,所以试着把  min(a.起保日期) as 起保日期 变成了 a.起保日期,结果报错,如下:


试图执行的查询中不包含作为聚合函数一部分的特定表达式‘起保日期’。  为什么呢?求指教。



bjdzdy 发表于:2013-12-20 21:23:18

为方便大家指教,把链接中煮江品茶老师代码的主要部分贴出来:

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



总记录:6篇  页次:1/1 9 1 :