以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  字符流水号问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=100236)

--  作者:ming8604
--  发布时间:2017/5/7 17:08:00
--  字符流水号问题
专家,你好,请问字符流水号我应该怎样写代码?
不同的物料分类,有不同的流水号,部分流水号是三位的,有部分流水号是四位。先要判断原流水号字符长度,再转换成数字,再加一,再保存新流水号为字符(原来是三位的,现在还是三位,原四位的就是现在就是四位)。



我此数据表datacolchanged代码是:


If e.DataCol.Name = "物料分类代码" Then \'如果内容发生变动的是物料分类代码列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是物料分类代码内容为空
        e.DataRow("流水号") = Nothing \'那么清空此行的内容
    Else
        Dim dr As DataRow
        
        \'否则在物料编码表查找同名的物料分类代码行,将找到的行赋值给变量dr
        
        dr = DataTables("物料编码").Find("[物料分类代码] = \'" & e.NewValue & "\' and _Identify <> " & e.DataRow("_Identify"), "_Identify  desc")
        
        If dr IsNot Nothing  Then \'如果找到了同名的物料分类代码行,也就是dr不是Nothing
                e.DataRow("主组码") = dr("主组码")
                e.DataRow("分类码") = dr("分类码")
                e.DataRow("物料分类描述") = dr("物料分类描述")
                e.DataRow("主组描述") = dr("主组描述")

            
        End If
    End If
End If


请问如何编写?  谢谢
[此贴子已经被作者于2017/5/7 17:09:12编辑过]

--  作者:有点色
--  发布时间:2017/5/7 17:14:00
--  
 上传具体foxtable例子说明问题。
--  作者:ming8604
--  发布时间:2017/5/7 17:23:00
--  
目的是,新创建一个物料,在原物料流水号上,加一。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编码.zip


--  作者:有点色
--  发布时间:2017/5/7 22:07:00
--  
If e.DataCol.Name = "物料分类代码" Then \'如果内容发生变动的是物料分类代码列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是物料分类代码内容为空
        e.DataRow("流水号") = Nothing \'那么清空此行的内容
    Else
        Dim dr As DataRow
       
        \'否则在物料编码表查找同名的物料分类代码行,将找到的行赋值给变量dr
       
        dr = DataTables("物料编码").Find("[物料分类代码] = \'" & e.NewValue & "\' and _Identify <> " & e.DataRow("_Identify"), "_Identify  desc")
       
        If dr IsNot Nothing  Then \'如果找到了同名的物料分类代码行,也就是dr不是Nothing
            e.DataRow("主组码") = dr("主组码")
            e.DataRow("分类码") = dr("分类码")
            e.DataRow("物料分类描述") = dr("物料分类描述")
            e.DataRow("主组描述") = dr("主组描述")
            Dim str As String = dr("流水号")
            e.DataRow("流水号") = format(val(str)+1, "".PadLeft(str.Length, "0"))
        End If
    End If
End If

--  作者:ming8604
--  发布时间:2017/5/25 9:54:00
--  

专家,你好。

 

现在我的这张表的流水排序乱了。这样我的语句应该是要修改的,是查找历史同物料分类最大流水号的行。

 

请问这样的数据上万、几万会不会运算就卡很多了?  另,请问代码如何改。谢谢


--  作者:有点色
--  发布时间:2017/5/25 11:52:00
--  

        dr = DataTables("物料编码").Find("[物料分类代码] = \'" & e.NewValue & "\' and _Identify <> " & e.DataRow("_Identify"), "_Identify  desc")
       

改成

 

        dr = DataTables("物料编码").Find("[物料分类代码] = \'" & e.NewValue & "\' and _Identify <> " & e.DataRow("_Identify"), "流水号  desc")

 

运算不会慢,因为只是查找一行数据。