以文本方式查看主题 - 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 -- [求助]求助,数据更新的问题 请各位帮个忙,实例已上传,就是第一次做了“户主信息”,以后每季度都有变动,我如何把村一级管理的已导出数据,直接更新到镇一级的系统里,比如“更新数据源”文件夹里的是村上上报新数据,乍样能智能地自动追加到前面已做好的表里,我设置了个数据更新窗口,里面设置一个数据更新按钮,乍样能点一下数据更新按钮,自动追加数据,(要求:前一次没有的(身份证号)新数据增加在原表里,与原有的数据身份证号相同时不增加记录,身份证后面的每列数据自动覆盖前一次的数据,最好在原表里再显最后更新时间),谢谢各位了 |
-- 作者:Bin -- 发布时间:2013/11/7 10:56:00 -- 编码合并,想怎么样就怎么样! |
-- 作者:良木 -- 发布时间:2013/11/7 15:12:00 -- 请各位帮一下忙啊,谢谢了,用编码合并的只能导入新增加的,新修改的没法覆盖原来的数据啊, |
-- 作者:Bin -- 发布时间:2013/11/7 15:15:00 -- 呵呵,不是让你完全复制他的代码呢. 而是说这样你可以随意操作,合并的时候每读取一条数据 可以利用 datatables("表名").FIND() http://www.foxtable.com/help/topics/0396.htm 找到对应身份证号码的行,如果找到的话,那么就不要增加行了,直接覆盖赋值.
|
-- 作者:狐狸爸爸 -- 发布时间:2013/11/7 16:19:00 -- 以上面的帮助中的例子为例,如果已经存在的更新,不存在的添加,只需将代码改为:
Dim Book As New XLS.Book("c:\\test\\订单.xls") |
-- 作者:良木 -- 发布时间:2013/11/7 21:45:00 -- [求助] 狐爸,我做了还是不对,实例上传,麻烦您给看一上,谢谢 |
-- 作者:有点甜 -- 发布时间: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 -- 谢谢,我试了成功了,谢谢您啊! |