Foxtable(狐表)用户栏目专家坐堂 → [求助]如何同代码实现多条件同时判断?


  共有1641人关注过本帖树形打印复制链接

主题:[求助]如何同代码实现多条件同时判断?

帅哥哟,离线,有人找我吗?
magus1123
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
[求助]如何同代码实现多条件同时判断?  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106287 积分:540564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By: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 执行失败!


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106287 积分:540564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/24 22:09:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
magus1123
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2017/7/24 23:32:00 [只看该作者]

试验了一下,提醒cmd.c错误

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106287 积分:540564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/25 8:38:00 [只看该作者]

具体错误贴上来看看

可能是没有连接到正确的数据源。另外不能使用在关联表中

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/25 8:58:00 [只看该作者]

以下是引用magus1123在2017/7/24 23:32:00的发言:
试验了一下,提醒cmd.c错误

 

1、数据源名没写对;

 

2、如果是sqlserver数据库,你要把内部函数的#号搞成'号

 

3、具体的报错,截图上来看看。


 回到顶部