以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 填充数据 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135200) |
-- 作者:北狐 -- 发布时间:2019/5/20 16:23:00 -- 填充数据 Dim f1 As New Filler f1.SourceTable =
DataTables("成品入库与领料出库复核检查1") \'指定数据来源 f1.SourceCols = "供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色"
\'指定数据来源列 f1.DataTable = DataTables("成品入库与领料出库复核检查")
\'指定数据接收表 f1.DataCols = "供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色"
\'指定数据接收列 f1.ExcludeExistValue=True f1.Fill() \'填充数据 接收表还有其他字段(这些字段会修改),这样会导致填充过来的数据有重复,如何避免? |
-- 作者:有点甜 -- 发布时间:2019/5/20 16:42:00 -- 参考
http://www.foxtable.com/webhelp/scr/1533.htm
http://www.foxtable.com/webhelp/scr/2137.htm
|
-- 作者:北狐 -- 发布时间:2019/5/20 17:18:00 -- 换成以下代码了,还是不行 Dim Vals As List(of String()) Vals = DataTables("查询表1").GetValues("供应商名称|本单日期|成品入库单号|领料出库单号|成品入库成色|领料出库成色") For i As Integer = 0 To Vals.Count - 1 Dim dr As DataRow = DataTables("成品入库与领料出库复核检查").AddNew() dr("供应商名称") = Vals(i)(0) dr("本单日期") = Vals(i)(1) dr("成品入库单号") = Vals(i)(2) dr("领料出库单号") = Vals(i)(3) dr("成品入库成色") = Vals(i)(4) dr("领料出库成色") = Vals(i)(5) Next 接收表已有的数据,但还是会从来源表那边接收相同的数据过来 接收表中还有正确领料成色,是否忽略错误这两列,其内容分别由表达式和手动编辑得出
[此贴子已经被作者于2019/5/20 17:21:50编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/20 17:27:00 -- Dim Vals As List(of String()) Vals = DataTables("查询表1").GetValues("供应商名称|本单日期|成品入库单号|领料出库单号|成品入库成色|领料出库成色") For i As Integer = 0 To Vals.Count - 1 Dim dr As DataRow = DataTables("成品入库与领料出库复核检查").find("供应商名称 = \'" & Vals(i)(0) & "\' and 本单日期 = \'" & Vals(i)(1) & "\'") If dr Is Nothing Then dr = DataTables("成品入库与领料出库复核检查").addnew dr("供应商名称") = Vals(i)(0) dr("本单日期") = Vals(i)(1) dr("成品入库单号") = Vals(i)(2) dr("领料出库单号") = Vals(i)(3) dr("成品入库成色") = Vals(i)(4) dr("领料出库成色") = Vals(i)(5) Next |
-- 作者:北狐 -- 发布时间:2019/5/20 18:11:00 -- 专门建了与来源表结构一样的接收表进行测试,但还是没排除接收表中已经存在的内容。 (即f1.ExcludeExistValue= True 无效),之前是有效的 Dim f1 As New Filler f1.SourceTable = DataTables("成品入库与领料出库复核检查1") \'指定数据来源 f1.SourceCols = "供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色" \'指定数据来源列 f1.DataTable = DataTables("测试") \'指定数据接收表 f1.DataCols = "供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色" \'指定数据接收列 f1.ExcludeExistValue= True f1.Fill() \'填充数据 [此贴子已经被作者于2019/5/20 18:31:04编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/5/20 20:21:00 -- 只能排除与主键一致的数据。非主键,只能手工排除http://www.foxtable.com/webhelp/scr/1533.htm |
-- 作者:北狐 -- 发布时间:2019/5/21 12:21:00 -- 填充数据 Dim cmd As New SQLCommand Dim dt As DataTable Dim sCols() As String = {"供应商名称","本单日期","成品入库单号","领料出库单号","成品入库成色","领料出库成色"} Dim dCols() As String = {"供应商名称","本单日期","成品入库单号","领料出库单号","成品入库成色","领料出库成色"} cmd.Cfont-size: 9pt; font-family: 宋体;">龙域" cmd.CommandText = "过长就不显示,查询结果为{"供应商名称","本单日期","成品入库单号","领料出库单号","成品入库成色","领料出库成色"}这几个字段" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.DataRows If DataTables("成品入库与领料出库复核检查").Find("供应商名称 = \'" & dr("供应商名称") & "\' and 本单日期= \'" & dr("本单日期") & "\' and 成品入库单号= \'" & dr("成品入库单号") & "\' and 领料出库单号= \'" & dr("领料出库单号") & "\' and 成品入库成色= \'" & dr("成品入库成色") & "\' and 领料出库成色= \'" & dr("领料出库成色") & "\'") Is Nothing Then Dim nr As DataRow = DataTables("成品入库与领料出库复核检查").AddNew() For i As Integer =0 To sCols.Length -1 nr(dCols(i)) = dr(sCols(i)) Next End If Next 使用以上代码后,成品入库与领料出库复核检查中已存在相同的{供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色},但合并数据的时候没跳过,还合并进来 需求:1、当成品入库与领料出库复核检查中已存在完全相同的{供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色}的行,但合并数据则跳过此行,不合并进来: 2、该行{供应商名称,本单日期,成品入库单号,领料出库单号,成品入库成色,领料出库成色}只要有其中一个字段不同,就合并进来
3、成品入库与领料出库复核检查表中还存在其他列 求老师帮看下,上述代码是哪里有问题?谢谢 [此贴子已经被作者于2019/5/21 12:48:38编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/21 13:17:00 -- 1、请确保你各列的值都不为空,弹出条件看看
output.show("供应商名称 = \'" & dr("供应商名称") & "\' and 本单日期= \'" & dr("本单日期") & "\' and 成品入库单号= \'" & dr("成品入库单号") & "\' and 领料出库单号= \'" & dr("领料出库单号") & "\' and 成品入库成色= \'" & dr("成品入库成色") & "\' and 领料出库成色= \'" & dr("领料出库成色") & "\'")
2、如果你有一些列的值为空,需要这样合成条件,如
Dim filter As string = "1=1" If dr("供应商名称") = nothing Then filter &= " and 供应商名称 is null" Else filter &= " and 供应商名称 = \'" & dr("供应商名称") & "\'" End If If dr("本单日期") = nothing Then filter &= " and 本单日期 is null" Else filter &= " and 本单日期 = \'" & dr("本单日期") & "\'" End If
msgbox(filter) |
-- 作者:北狐 -- 发布时间:2019/5/21 14:03:00 -- output.show了,各列都不为空 发现出错的地方了 If DataTables("成品入库与领料出库复核检查").Find("供应商名称 = \'" & dr("供应商名称") & "\' and 本单日期= \'" & dr("本单日期") & "\' and 成品入库单号= \'" & dr("成品入库单号") & "\' and 领料出库单号= \'" & dr("领料出库单号") & "\' and 成品入库成色= \'" & dr("成品入库成色") & "\' and 领料出库成色= \'" & dr("领料出库成色") & "\'") Is Nothing Then 上述代码去掉and 本单日期= \'" & dr("本单日期") & "\'后就能正常了, 如果一定要判断本单日期,本单日期列的数据不能为日期时间类型,只能列的数据类型改成字符类型。
[此贴子已经被作者于2019/5/21 14:38:33编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/21 14:51:00 -- 1、msgbox(dr("本单日期")) 弹出什么?
2、改成这样呢?
本单日期= #" & dr("本单日期") & "# |