以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如何同代码实现多条件同时判断? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104170) |
-- 作者:magus1123 -- 发布时间:2017/7/24 18:58:00 -- [求助]如何同代码实现多条件同时判断? 现在的表格是这样的: 品名 规格 警戒库存量 标准库存量 当前库存量 补货数量 A A1 10 17 11 A A2 5 12 3 B B1 10 34 30 B B2 20 28 25 C C1 30 46 58 C C2 40 58 17 想要实现:品名相同的产品,任一规格[当前库存量] < [警戒库存量] ,则该品名相同的产品的所有规格都补货至[标准库存量] 比如: 品名 规格 警戒库存量 标准库存量 当前库存量 补货数量 A A1 10 17 11 6 A A2 5 12 3 9 因为品名A 的规格 A2,当前库存是3,低于警戒库存量5,所有同品名的规格A1、规格A2都补货至标准库存量。 而在品名B 中,因为规格B1、规格B2的当前库存量都高于警戒库存量,所以这两个都不补货。 且在品名C 中,因为规格C2的当前库存量低于警戒库存量,所以规格C1、C2都补货至标准库存量,规格C1的当前库存量又大于标准库存量,所以C1补货数量为0。 比如: 品名 规格 警戒库存量 标准库存量 当前库存量 补货数量 A A1 10 17 11 6 A A2 5 12 3 9 B B1 10 34 30 0 B B2 20 28 25 0 C C1 30 46 58 0 C C2 40 58 17 41 这个因为用什么办法实现呢? 感谢老师! [此贴子已经被作者于2017/7/24 18:58:03编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/7/24 20:34:00 -- DataTables("表格").ReplaceFor("补货数量",0) For Each s As String In DataTables("表格").GetValues("品名") If DataTables("表格").Find("当前库存量 < 警戒库存量 and 品名=\'" & s & "\'") IsNot Nothing Then For Each dr As DataRow In DataTables("表格").Select("品名=\'" & s & "\'") If dr("标准库存量") > dr("当前库存量") Then dr("补货数量") = dr("标准库存量") - dr("当前库存量") End If Next End If Next
|
-- 作者:magus1123 -- 发布时间:2017/7/24 22:05:00 -- 感谢老师,用老师的方法已经成功实现了 还有一个问题,程序在运行的时候很流畅,但是在保存环节很慢。这个表是外部表,如果用这种方式来保存的话可以吗?原表数据保存回原表? Dim tran As System.Data.SqlClient.SqlTransaction try Dim conn As new System.Data.SqlClient.SqlConnection("*****") \'改为自己数据库的连接字符串 conn.Open() \'打开链接 tran = conn.BeginTransaction() Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("序", "序") \'改为自己的列名,有多少列就增加多少个 Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("编号", "编号") Dim mapping3 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("名称", "名称") Dim mapping4 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("规格", "规格") Dim mapping5 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("单位", "单位") Dim mapping6 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("数量", "数量") Dim mapping7 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("仓库", "仓库") Dim mapping8 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("货位", "货位") Dim mapping9 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("货位备注", "货位备注") Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran) Copy.ColumnMappings.Add(mapping1) Copy.ColumnMappings.Add(mapping2) Copy.ColumnMappings.Add(mapping3) Copy.ColumnMappings.Add(mapping4) Copy.ColumnMappings.Add(mapping5) Copy.ColumnMappings.Add(mapping6) Copy.ColumnMappings.Add(mapping7) Copy.ColumnMappings.Add(mapping8) Copy.ColumnMappings.Add(mapping9) copy.Destinati \'指定服务器上目标表的名称 copy.BatchSize = 1000 copy.WriteToServer(DataTables("导入待入库审核").basetable) \'你的datatable名字,执行把DataTable中的数据写入DB tran.Commit() \'提交事务 msgbox("导入成功!") catch ex As exception msgbox(ex.message) tran.Rollback() \'返回False 执行失败! |
-- 作者:有点蓝 -- 发布时间:2017/7/24 22:09:00 -- 这种方式 |
-- 作者:magus1123 -- 发布时间:2017/7/24 23:32:00 -- 试验了一下,提醒cmd.c错误 |
-- 作者:有点蓝 -- 发布时间:2017/7/25 8:38:00 -- 具体错误贴上来看看 可能是没有连接到正确的数据源。另外不能使用在关联表中
|
-- 作者:有点甜 -- 发布时间:2017/7/25 8:58:00 -- 以下是引用magus1123在2017/7/24 23:32:00的发言:
试验了一下,提醒cmd.c错误
1、数据源名没写对;
2、如果是sqlserver数据库,你要把内部函数的#号搞成\'号
3、具体的报错,截图上来看看。 |