以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求代码优化思路,谢谢! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=195022) |
-- 作者:chen_sheng -- 发布时间:2025/2/17 18:03:00 -- 求代码优化思路,谢谢! 代码如下 感觉非常累赘 请优化思路谢谢 If r IsNot Nothing Then Forms("SL_销售退货选择").show If PublicJson IsNot Nothing Then Dim ja As JArray = PublicJson If ja.Count > 0 Then Dim t As Table = Tables(eForm.Name & "_Table1") For Each jt As JToken In ja \'只添加不重复行 If t.FindRow("Guid_销售订单=\'" & CStr(jt("Guid_销售订单")) & "\'") = -1 Then Dim nr As Row = t.AddNew() \'不一样的赋值 \'nr(eForm.Name & "单号") = r("单号") \'必须填写关联的主表ID nr("编号") = r("编号") \'必须填写关联的主表ID nr("销售退货单明细ID")= Guid.NewGuid.ToString \'以下完全一样求优化思路协助 nr("产品编号")=CStr(jt("产品编号")) nr("产品名称")=CStr(jt("产品名称")) nr("产品类别")=CStr(jt("产品类别")) nr("规格")=CStr(jt("规格")) nr("数量")=CStr(jt("实际出库数量")) nr("单价")=CStr(jt("单价")) \'nr("金额")=CStr(jt("金额")) nr("单位")=CStr(jt("单位")) nr("产品条码")=CStr(jt("产品条码")) nr("备注")=CStr(jt("备注")) nr("性质")=CStr(jt("性质")) nr("颜色")=CStr(jt("颜色")) nr("颜色型号")=CStr(jt("颜色型号")) nr("分类")=CStr(jt("分类")) nr("型号")=CStr(jt("型号")) nr("材质")=CStr(jt("材质")) nr("上级名称")=CStr(jt("上级名称")) nr("钢板")=CStr(jt("钢板")) nr("属性")=CStr(jt("属性")) nr("结")=CStr(jt("结")) nr("存")=CStr(jt("存")) nr("状态")=CStr(jt("状态")) nr("ID")=CStr(jt("ID")) nr("拼音码")=CStr(jt("拼音码")) nr("底材色")=CStr(jt("底材色")) nr("来源")=CStr(jt("来源")) nr("去向")=CStr(jt("去向")) nr("安全库存_最低")=CStr(jt("安全库存_最低")) nr("安全库存_合理")=CStr(jt("安全库存_合理")) nr("安全库存_最高")=CStr(jt("安全库存_最高")) nr("账面差数")=CStr(jt("账面差数")) nr("安全库存")=CStr(jt("安全库存")) nr("销售退货单ID")= CStr(jt("销售退货单ID")) nr("销售出库单明细ID")= CStr(jt("销售出库单明细ID")) nr("出库单结案")=CStr(jt("出库单结案")) nr("销售订单结案")=CStr(jt("销售订单结案")) nr("Guid_销售订单")=CStr(jt("Guid_销售订单")) nr("Guid_销售生产单")=CStr(jt("Guid_销售生产单")) nr("Guid_主计划")=CStr(jt("Guid_主计划")) nr("Guid_机台计划")=CStr(jt("Guid_机台计划")) End If Next End If Tables(eform.name & "_Table1").Save Tables(eform.name & "_Table1").AutoSizeCols() End If End If |
-- 作者:y2287958 -- 发布时间:2025/2/17 20:00:00 -- 用一个数组或集合遍历一下 |
-- 作者:有点蓝 -- 发布时间:2025/2/17 20:29:00 -- 类似这里第二个例子:http://www.foxtable.com/webhelp/topics/1533.htm Dim Cols1() As String = {"产品编号","来源列二","来源列三"} Dim Cols2() As String = {"产品编号","接收列二","接收列三"} for i as integer = 0 to Cols1.length - 1 nr(Cols2(i))=CStr(jt(Cols1(i))) next
|
-- 作者:listfor -- 发布时间:2025/2/17 20:31:00 -- If r IsNot Nothing Then Forms("SL_销售退货选择").Show() If PublicJson IsNot Nothing Then Try \' 提前获取表格引用减少重复访问 Dim tableName As String = eForm.Name & "_Table1" Dim targetTable As Table = Tables(tableName) Dim jsonArray As JArray = CType(PublicJson, JArray) If jsonArray.Count = 0 Then Exit Try \' 预定义字段映射关系(可根据实际情况扩展) Dim fieldMappings As New Dictionary(Of String, String) From { {"产品编号", "产品编号"}, {"产品名称", "产品名称"}, {\'...其他字段...\', "..."} \' 实际使用时需补全 } \' 批量操作前准备 targetTable.BeginUpdate() For Each item As JToken In jsonArray Dim salesOrderGuid As String = CStr(item("Guid_销售订单")) \' 检查重复行 If targetTable.FindRow($"Guid_销售订单=\'{salesOrderGuid}\'") <> -1 Then Continue For \' 添加新行 Dim newRow As Row = targetTable.AddNew() \' 关键字段赋值 newRow("编号") = r("编号") newRow("销售退货单明细ID") = Guid.NewGuid().ToString() \' 使用循环处理相同逻辑的字段赋值 For Each mapping In fieldMappings newRow(mapping.Key) = CStr(item(mapping.Value)) Next \' 特殊处理字段 newRow("数量") = CStr(item("实际出库数量")) \'...其他特殊字段处理... Next \' 提交修改 targetTable.EndUpdate() targetTable.Save() targetTable.AutoSizeCols() Catch ex As Exception \' 添加异常处理 MessageBox.Show($"数据加载失败:{ex.Message}") \' 记录日志 \' LogError(ex) End Try End If End If
|
-- 作者:chen_sheng -- 发布时间:2025/2/18 9:26:00 -- 感谢各位大佬支持 [此贴子已经被作者于2025/2/18 9:33:20编辑过]
|