以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  出入库无法直接输入采购单号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172309)

--  作者:edisontsui
--  发布时间:2021/10/8 8:47:00
--  出入库无法直接输入采购单号

图片点击可在新窗口打开查看此主题相关图片如下:出入库无法输入采购单号.jpg
图片点击可在新窗口打开查看
请看上图:出入库这个数据表里面有两列,一列是“采购单号”,一列是“销售单号”,它们都设置了输入窗口。在“销售单号”可以直接输入数据,但是在“采购单号”那里却不可以直接输入数据。我检查了它们的列属性设置和代码,都是一样的。请教还有什么因素会导致这个情况呢?我希望也能够在“采购单号”里面直接输入数据。谢谢。

--  作者:有点蓝
--  发布时间:2021/10/8 8:51:00
--  
有没有什么表事件?

确定列属性设置一样?
在单元格中显示按钮的方法很简单,只需将该列的列表项目设为“...”或“|...”即可,差别是前者不能编辑单元格的内容,后者则可以。

--  作者:edisontsui
--  发布时间:2021/10/8 10:45:00
--  
自定义项目用了“|...”就可以了。
--  作者:edisontsui
--  发布时间:2021/10/8 14:27:00
--  
If e.DataCol.name = "数量个"
\'自动给(出入库)输入数据
        Dim dr22 As DataRow 
        dr22 = DataTables("销售报价").Find("产品代号 = \'" & e.DataRow("产品型号") & "\' And  客户简称 = \'" & "施耐德广州" & "\'")

        Dim jkdh As String = e.DataRow("送货单号") & "-ZZJK"
        Dim dr1 As DataRow = DataTables("出入库").Find("出入库单号 = \'" & jkdh & "\' and 物料编号 = \'" & e.DataRow("产品型号") & "\'")
        If dr1 IsNot Nothing Then
            dr1("入库数量") = dr1("入库数量") + e.newvalue - e.oldvalue

\'下面这段不起作用
            If dr1("入库数量") = 0
               dr1("录入员核对") = False
               dr1.delete
            End If

        Else
            Dim dr3 As DataRow = DataTables("出入库").AddNew()
            dr3("出入库单号") = jkdh
            dr3("出入库日期") = e.DataRow("送货日期")
            dr3("出入原因") = "入库-生产入库"
            dr3("部供客简称") = "组装车间"
            dr3("物料编号") = e.DataRow("产品型号") 
            dr3("入库数量") = e.newvalue - e.oldvalue

            dr3("录入员核对") = True

        End If

        Dim ckdh As String = e.DataRow("送货单号") & "-ZZCK"
        Dim dr2 As DataRow = DataTables("出入库").Find("出入库单号 = \'" & ckdh & "\' and 物料编号 = \'" & e.DataRow("产品型号") & "\'")
        If dr2 IsNot Nothing Then
            dr2("出库数量") = dr2("出库数量") + (-1) * (e.newvalue - e.oldvalue)

\'下面这段不起作用
            If dr2("出库数量") = 0
               dr2("录入员核对") = False
               dr2.delete
            End If

        Else
            Dim dr4 As DataRow = DataTables("出入库").AddNew()
            dr4("出入库单号") = ckdh
            dr4("出入库日期") = e.DataRow("送货日期")
            dr4("出入原因") = "出库-客户出货"
            dr4("部供客简称") = "施耐德广州"
            dr4("物料编号") = e.DataRow("产品型号") 
            dr4("出库数量") = (-1) * e.newvalue - e.oldvalue
            dr4("单价") = dr22("单价") 

            dr4("录入员核对") = True

        End If

End If

上面代码是放在“组装送货单”这个数据表之“Datacolchanged”里面的,但是红色的那些代码起不了作用,尤其是“录入员核对”这两句更是奇怪, dr3("录入员核对") = True 这句起作用,而 dr4("录入员核对") = True 则不起作用。不知道是什么原因?


--  作者:有点蓝
--  发布时间:2021/10/8 14:34:00
--  
既然都删除了,还赋值干啥

            If dr1("入库数量") = 0
               dr1.delete
dr1.save
            End If

调试一下代码有没有执行
msgbox(1)
            dr4("录入员核对") = True
msgbox(dr4("录入员核对"))

--  作者:edisontsui
--  发布时间:2021/10/8 15:59:00
--  
1. 
If dr1("入库数量") = 0
    dr1.delete
    dr1.save
End If

上面那段还是不起作用,dr1("入库数量") 为 0 的行,还是保留在那里。

2.

msgbox(1)
            dr4("录入员核对") = True
msgbox(dr4("录入员核对"))

上面那段还是不起作用,没有任何提示,"录入员核对" 那里也还是没有打钩。




--  作者:有点蓝
--  发布时间:2021/10/8 16:02:00
--  
说明红色代码根本没有执行到,也就是前面的条件都不符合,学会调试

Dim jkdh As String = e.DataRow("送货单号") & "-ZZJK"
        Dim dr1 As DataRow = DataTables("出入库").Find("出入库单号 = \'" & jkdh & "\' and 物料编号 = \'" & e.DataRow("产品型号") & "\'")
msgbox(dr1 IsNot Nothing)
        If dr1 IsNot Nothing Then
            dr1("入库数量") = dr1("入库数量") + e.newvalue - e.oldvalue
msgbox(dr1("入库数量"))
\'下面这段不起作用
            If dr1("入库数量") = 0
               dr1("录入员核对") = False
               dr1.delete
            End If

        Else
msgbox(1)
            Dim dr3 As DataRow = DataTables("出入库").AddNew()
            dr3("出入库单号") = jkdh
            dr3("出入库日期") = e.DataRow("送货日期")
            dr3("出入原因") = "入库-生产入库"

--  作者:edisontsui
--  发布时间:2021/10/8 17:10:00
--  
我在 datarowdeleting 里面也加上类似下面的代码,上面两个问题就都解决了。
        If dr1("入库数量") = 0
               dr1("录入员核对") = False
               dr1.delete
        End If