Foxtable(狐表)用户栏目专家坐堂 → [求助]代码没有实现想要的效果


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

主题:[求助]代码没有实现想要的效果

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
[求助]代码没有实现想要的效果  发帖心情 Post By:2016/1/8 10:14:00 [只看该作者]

For Each ndr As DataRow In DataTables("扫描配货明细").DataRows
    Dim ddr3 As DataRow = DataTables("扫描配货明细统计").Find("工单号 = '" & ndr("工单号") & "' and 行号 = '" & ndr("行号") & "'  and 入库单号 = '" & ndr("入库单号") & "'")
    If ddr3 IsNot Nothing Then
        ddr3("预入库数量") = ddr3("预入库数量") + 1
    Else
        Dim ddr4 As DataRow = DataTables("扫描配货明细统计").AddNew()
        ddr4("工单号") = ndr("工单号")
        ddr4("行号") = ndr("行号")
        ddr4("预入库数量") = 1
        ddr4("入库单号") = rkdh.text
        ddr4("产品态") = ndr("产品态")
        ddr4("产品名称") = ndr("产品名称")
        ddr4("物料编码") = ndr("物料编码")
        ddr4("库位类别") = ndr("库位类别")
    End If
    Dim ddr2 As DataRow = DataTables("工单明细").Find("工单号 = '" & ndr("工单号") & "' and 行号 = '" & ndr("行号") & "' and 入库单号 = '" & ndr("入库单号") & "' ")
    If ddr2 IsNot Nothing Then
        ddr2("预入库数量") = ddr2("预入库数量") + 1
        ddr2("生产结束扫描日期") = Date.now
    Else
        Dim ddr1 As DataRow = DataTables("工单明细").AddNew()
        ddr1("工单号") = ndr("工单号")
        ddr1("行号") = ndr("行号")
        ddr1("预入库数量") = 1
        ddr1("生产完成日期") = ndr("生产完成日期")
        ddr1("预入库日期") = ndr("预计入库日期")
        ddr1("入库单号") = rkdh.text
        ddr1("产品态") = ndr("产品态")
        ddr1("产品名称") = ndr("产品名称")
        ddr1("物料编码") = ndr("物料编码")
        ddr1("库位类别") = ndr("库位类别")
        ddr1("生产结束扫描日期") = Date.now
    End If  
Next

我想要的是在扫描配货明细表每增加一行。然后在工单明细就进行自动统计,根据工单号,行号,入库单号是否都匹配。在工单明细没有找到,那么直接增加一行。如果找到,预入库数量加一。
现在的效果是都是新增一行。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/8 10:36:00 [只看该作者]

只能是你条件有问题,找不到符合的数据。

 

主要是不是要用sqlfind。弹出你的条件好好看看。


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/1/8 11:12:00 [只看该作者]

弹出看来一下,条件是对的。
发现问题是,首次执行这段代码,那么扫描配货明细表首次增加了4行数据。但因为在工单明细首次没有与条件匹配的数据,所以在工单明细也同样增加了4行数据。
但我想要的应该只增加2行。毕竟这4行数据有匹配的2行。但我现在不知道怎么改。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/8 11:13:00 [只看该作者]

做例子发上来。

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/1/12 22:05:00 [只看该作者]

现在才发例子上来,可见最近其他事情有多忙。
麻烦大红袍老师给看看怎么改。多谢。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.foxdb



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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/12 22:20:00 [只看该作者]

datacolchanged事件

 

If e.DataRow.IsNull("工单号") = False AndAlso e.DataRow.IsNull("行号") = False AndAlso e.DataRow.IsNull("入库单号") = False Then
    Dim ndr As DataRow = e.DataRow
    Dim ddr1 As DataRow = DataTables("工单明细").Find("工单号 = '" & ndr("工单号") & "' and 行号 = '" & ndr("行号") & "' and 入库单号 = '" & ndr("入库单号") & "' ")
    If ddr1 IsNot Nothing Then
        ddr1("预入库数量") = e.DataTable.compute("count(工单号)", "工单号 = '" & ndr("工单号") & "' and 行号 = '" & ndr("行号") & "' and 入库单号 = '" & ndr("入库单号") & "' ")
    Else
        ddr1 = DataTables("工单明细").AddNew()
        ddr1("工单号") = ndr("工单号")
        ddr1("行号") = ndr("行号")
        ddr1("入库单号") = ndr("入库单号")
        ddr1("预入库数量") = 1
    End If
   
   
    ddr1("生产完成日期") = ndr("生产完成日期")
    ddr1("预入库日期") = ndr("预计入库日期")
    ddr1("产品态") = ndr("产品态")
    ddr1("产品名称") = ndr("产品名称")
    ddr1("物料编码") = ndr("物料编码")
    ddr1("库位类别") = ndr("库位类别")
    ddr1("生产结束扫描日期") = Date.now
End If


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/1/12 22:33:00 [只看该作者]

是哪个的datacolchange?扫描配货明细?e.DataRow.Delete不是已经删掉了么,再用e.datarow应该有问题吧。

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/1/12 22:34:00 [只看该作者]

还有请看一下,窗体的生成入库单按钮的代码,这个是有问题的。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/12 22:59:00 [只看该作者]

直接写,没问题啊

 

 

DataTables("扫描配货明细统计").DataRows.Clear
For Each ndr As DataRow In DataTables("扫描配货明细").DataRows
    Dim ddr1 As DataRow = DataTables("工单明细").Find("工单号 = '" & ndr("工单号") & "' and 行号 = '" & ndr("行号") & "' and 入库单号 = '" & ndr("入库单号") & "' ")
    If ddr1 IsNot Nothing Then
        ddr1("预入库数量") = ddr1("预入库数量") + 1
    Else
        ddr1 = DataTables("工单明细").AddNew()
        ddr1("工单号") = ndr("工单号")
        ddr1("行号") = ndr("行号")
        ddr1("入库单号") = ndr("入库单号")
        ddr1("预入库数量") = 1
    End If
   
   
    ddr1("生产完成日期") = ndr("生产完成日期")
    ddr1("预入库日期") = ndr("预计入库日期")
    ddr1("产品态") = ndr("产品态")
    ddr1("产品名称") = ndr("产品名称")
    ddr1("物料编码") = ndr("物料编码")
    ddr1("库位类别") = ndr("库位类别")
    ddr1("生产结束扫描日期") = Date.now

Next


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/1/12 23:12:00 [只看该作者]

.NET Framework 版本:2.0.50727.8009
Foxtable 版本:2015.12.22.1
错误所在事件:表,扫描配货明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

 回到顶部
总数 26 1 2 3 下一页