以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]求助,数据更新的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42256)

--  作者:良木
--  发布时间:2013/11/7 10:47:00
--  [求助]求助,数据更新的问题
请各位帮个忙,实例已上传,就是第一次做了“户主信息”,以后每季度都有变动,我如何把村一级管理的已导出数据,直接更新到镇一级的系统里,比如“更新数据源”文件夹里的是村上上报新数据,乍样能智能地自动追加到前面已做好的表里,我设置了个数据更新窗口,里面设置一个数据更新按钮,乍样能点一下数据更新按钮,自动追加数据,(要求:前一次没有的(身份证号)新数据增加在原表里,与原有的数据身份证号相同时不增加记录,身份证后面的每列数据自动覆盖前一次的数据,最好在原表里再显最后更新时间),谢谢各位了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:农户信息管理.rar



--  作者:Bin
--  发布时间:2013/11/7 10:56:00
--  
编码合并,想怎么样就怎么样!


--  作者:良木
--  发布时间:2013/11/7 15:12:00
--  
请各位帮一下忙啊,谢谢了,用编码合并的只能导入新增加的,新修改的没法覆盖原来的数据啊,
--  作者:Bin
--  发布时间:2013/11/7 15:15:00
--  
呵呵,不是让你完全复制他的代码呢.

而是说这样你可以随意操作,合并的时候每读取一条数据 可以利用

找到对应身份证号码的行,如果找到的话,那么就不要增加行了,直接覆盖赋值.

--  作者:狐狸爸爸
--  发布时间:2013/11/7 16:19:00
--  

以上面的帮助中的例子为例,如果已经存在的更新,不存在的添加,只需将代码改为:

 

 

Dim Book As New XLS.Book("c:\\test\\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"编号","产品","客户","雇员","单价","折扣","数量","日期"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
    Dim dr As DataRow = DataTables("订单").Find("编号 = \'" & bh & "\'")
    If dr Is Nothing Then \'如果不存在同编号的订单
        dr =  DataTables("订单").AddNew()
    End If
    For m As Integer = 0 To nms.Length - 1
        dr(nms(m)) = Sheet(n,m).Value
    Next
End If
Next
Tables("订单").ResumeRedraw()


--  作者:良木
--  发布时间:2013/11/7 21:45:00
--  [求助]
狐爸,我做了还是不对,实例上传,麻烦您给看一上,谢谢

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:农户信息管理.rar



--  作者:有点甜
--  发布时间:2013/11/7 21:49:00
--  
 我看了一下,你把代码 家庭人口 改成 家庭人口数,就正确了
--  作者:良木
--  发布时间:2013/11/7 21:56:00
--  
导入的是重复的啊,户主身份证号相同时,其数据不会覆盖,面是重复一条,不知乍会事?
--  作者:有点甜
--  发布时间:2013/11/7 22:06:00
--  
 如下代码,测试有效

Dim Book As New XLS.Book(ProjectPath & "更新数据源\\户主信息表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("户主信息").StopRedraw()
\'\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"户主姓名","户主身份证号","镇","村","社","家庭人口数","耕地面积","林地面积","退耕还林面积","家庭年收入","计生信息","家庭情况","贫困原因","是否双联户","拥有农机具情况"}
For n As Integer = 1 To Sheet.Rows.Count -1
    If sheet(n, 1).text <> "" Then
        Dim sfzh As String = sheet(n,1).Text
        Dim dr As DataRow = DataTables("户主信息").Find("户主身份证号 = \'" & sfzh & "\'")
        If dr Is Nothing Then \'如果不存在同编号的订单
            dr = DataTables("户主信息").AddNew()
        End If
        For m As Integer = 0 To nms.Length - 1
            dr(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("户主信息").ResumeRedraw()
MessageBox.show("户主信息已成功更新")

--  作者:良木
--  发布时间:2013/11/7 22:22:00
--  
谢谢,我试了成功了,谢谢您啊!