以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 导入数据时重复行的部分列内容导入 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148663) |
||||
-- 作者:cxmxjwlmq -- 发布时间:2020/4/12 22:26:00 -- 导入数据时重复行的部分列内容导入 各位老师:在外部表导入数据时,如果有相同则部分导入数据,但现在有两行以上的相同数据,第一行以下的不能部分导入,代码如下标红的部分: Dim d As Date = Date.Today ‘处理第二行相同的数据 表数据如下:有两个编号图号的部件名称。
代码只能执行第一行的部分列导入。即两个编号图号相同的部件,部件名称只导入了一个,另一个相同编号图号的部件名称不一样。 执行后如下图:
我想要的效果是,在导入时,如下图第二行也能部分列导入。即两个编号图号相同的部件,部件名称两个都导入,即部件名称相同。 如下图
注:导入的数据表中,只有一行编号图号相同的:1203095-KW100,部件名称是一样的:T型卡箍!
请各位老师费心修改一下代码!谢谢! [此贴子已经被作者于2020/4/12 22:43:18编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/4/12 23:29:00 -- …… Dim nms() As String = {"编号图号","部件名称","交检","保管员","投料工位","适用车型","检验员","投料周数"}
For n As Integer = 2 To Sheet.Rows.Count-1 \'如有表头,开始的数字为表头行数 Dim bh As String = sheet(n,0).Text if bh > "" Dim 部件名称 As String = sheet(n,1).Text Dim dr As DataRow = DataTables("部品质量管理").Find("日期>= \'" & d1 & "\' And 日期<= \'" & d & "\' And 编号图号 = \'" & bh & "\' and 部件名称=\'" & 部件名称 & "\' And 投料周数 Is Null ") If dr Is Nothing Then \'如果不存在同编号图号的部件 dr = DataTables("部品质量管理").AddNew() dr("日期") = Date.Today If dr("编号图号") <> "" Then dr("序号") = 0 dr("判定") = "合格" dr("检验区分") = "其它" Else dr("序号") = 3 End If End If For m As Integer = 0 To nms.Length-1 dr(nms(m)) = Sheet(n,m).Value Next end if Next Tables("部品质量管理").ResumeRedraw DataTables("部品质量管理").DeleteFor("[编号图号] Is Null ") End If e.Form.Controls("Label3").Visible = False …… |
||||
-- 作者:cxmxjwlmq -- 发布时间:2020/4/13 16:12:00 -- 蓝老师,不行呀!
这样等于全新导入了,没有将原来的覆盖掉! |
||||
-- 作者:有点蓝 -- 发布时间:2020/4/13 16:27:00 -- 请上传实例说明 |
||||
-- 作者:cxmxjwlmq -- 发布时间:2020/4/13 17:32:00 -- 老师:请查收!
请老师费心! |
||||
-- 作者:有点蓝 -- 发布时间:2020/4/13 17:46:00 -- 测试没有问题 如果重复导入,就会新增,是因为条件【And 投料周数 Is Null 】导致的,第一次导入有部分数据投料周数就不会是空值了
|
||||
-- 作者:cxmxjwlmq -- 发布时间:2020/4/13 17:59:00 -- 老师:我想要的效果如下:
就是当重复后,部件名称变成统一的,投料周数导入! 如果没有重复的,则全部一行导入!
此主题相关图片如下:微信图片_20200413180328.jpg [此贴子已经被作者于2020/4/13 18:03:36编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/4/13 20:23:00 -- Dim d As Date = Date.Today Dim d1 As Date = Tables("表A").Compute("max([日期])") \'找出表中最大的日期并赋值 Dim dlg As new OpenFileDialog dlg.Filter = "excel|*.xls;*.xlsx" If dlg.ShowDialog = DialogResult.OK Then Dim Book As New XLS.Book (dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(3) Tables("表A").StopRedraw \'Tables("数据导入_Table1").Filter = "日期 = # " & d & "# " Dim nms() As String = {"编号图号","部件名称","交检","保管员","投料工位","适用车型","检验员","投料周数"} For n As Integer = 2 To Sheet.Rows.Count-1 \'如有表头,开始的数字为表头行数 Dim bh As String = sheet(n,0).Text If bh > "" Dim drs As List(of DataRow) = DataTables("表A").Select("日期>= \'" & d1 & "\' And 日期<= \'" & d & "\' And 编号图号 = \'" & bh & "\' And 投料周数 Is Null ") If drs.Count = 0 Then \'如果不存在同编号图号的部件 Dim dr As DataRow = DataTables("表A").AddNew() dr("日期") = Date.Today dr("序号") = 0 dr("判定") = "合格" dr("检验区分") = "其它" For m As Integer = 0 To nms.Length-1 dr(nms(m)) = Sheet(n,m).Value Next Else For Each dr As DataRow In drs For m As Integer = 0 To nms.Length-1 dr(nms(m)) = Sheet(n,m).Value Next Next End If End If Next Tables("表A").ResumeRedraw DataTables("表A").DeleteFor("[编号图号] Is Null ") End If |
||||
-- 作者:cxmxjwlmq -- 发布时间:2020/4/13 22:06:00 -- 谢谢蓝老师,感谢! |