Foxtable(狐表)用户栏目专家坐堂 → 跨表编号


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

主题:跨表编号

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


加好友 发短信
等级:幼狐 帖子:50 积分:497 威望:0 精华:0 注册:2017/9/5 11:59:00
跨表编号  发帖心情 Post By:2017/11/18 12:23:00 [只看该作者]

请教!有“销售明细表”和“销售退换货表”,比如“销售明细表” 中编号为“X20170023”的销售明细退货,复制该明细至“销售退换货表”中,同时“销售明细表”删除该记录。那么,“销售明细表”中新增一条明细时,我希望新增明细的编号是“X20170024”,而非“X20170023”。怎么实现呢???

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


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

同时查“销售明细表”和“销售退换货表”2个表获取编号的最大值,再比较取最大的编号+1


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


加好友 发短信
等级:幼狐 帖子:50 积分:497 威望:0 精华:0 注册:2017/9/5 11:59:00
  发帖心情 Post By:2017/11/18 14:46:00 [只看该作者]

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2017.8.19.1
错误所在事件:表,销售明细表,DataColChanged
详细错误信息:
调用的目标发生了异常。
startIndex 不能大于字符串长度。
参数名: startIndex


这是什么意思?

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


加好友 发短信
等级:超级版主 帖子:110629 积分:563047 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/11/18 15:57:00 [只看该作者]

错误所在事件:表,销售明细表,DataColChanged

应该是substring的参数长度计算错误

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


加好友 发短信
等级:幼狐 帖子:50 积分:497 威望:0 精华:0 注册:2017/9/5 11:59:00
  发帖心情 Post By:2017/11/19 8:32:00 [只看该作者]

If e.DataCol.name="销售日期" Then
    If e.DataRow.Isnull("销售日期") Then
        e.DataRow("销售流水号")=Nothing 
    Else
        Dim d As Date=e.DataRow("销售日期")
        Dim y As Integer=d.year
        Dim fd As Date=new Date(y,1,1)
        Dim ld As Date=new Date(y,12,31)
        Dim yh As String=Format(d,"yyyy")
        If e.DataRow("销售流水号").startswith("X" & yh)=False Then   
            Dim idx As Integer
            Dim max1 As String 
            Dim max2 As String
            max1=e.DataTable.compute("max(销售流水号)","销售日期>=#" & fd & "# and 销售日期<=#" & ld & "# and [_identify]<>" & e.DataRow("_identify"))
            max2=DataTables("销售作废退换货明细表").compute("max(销售流水号)")
            If max1>"" And max2>"" Then
                Dim max As String=IIF(max1> max2,"max1","max2")
                idx=Cint(max.Substring(5,6))+1
            ElseIf max1>"" And max2="" Then
                Dim max As String=max1
                idx=cint(max.Substring(5,6))+1
            Else
                idx=1
            End If
            e.DataRow("销售流水号")="X" & yh & Format(idx,"000000")
        End If
    End If 
End If


请老师帮我看看代码哪里有问题?或者不严谨?谢谢

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


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


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


加好友 发短信
等级:幼狐 帖子:50 积分:497 威望:0 精华:0 注册:2017/9/5 11:59:00
  发帖心情 Post By:2017/11/21 11:44:00 [只看该作者]

If e.DataCol.name="销售日期" Then
    If e.DataRow.Isnull("销售日期") Then
        e.DataRow("销售流水号")=Nothing 
    Else
        Dim d As Date=e.DataRow("销售日期")
        Dim y As Integer=d.year
        Dim fd As Date=new Date(y,1,1)
        Dim ld As Date=new Date(y,12,31)
        Dim yh As String=Format(d,"yyyy")
        Dim qz As String="X" & yh
        Dim idx As Integer
        Dim max1 As String 
        Dim max2 As String
        max1=e.DataTable.compute("max(销售流水号)","销售流水号 like'" & qz & "%' and 销售日期>=#" & fd & "# and 销售日期<=#" & ld & "# and [_identify]<>" & e.DataRow("_identify"))
        max2=DataTables("销售作废退换货明细表").compute("max(销售流水号)","销售流水号 like'" & qz & "%'")
        If max1>"" And max2>"" Then
            Dim max As String=IIF(max1> max2,"max1","max2")
            idx=Cint(max.Substring(qz.length))+1
        ElseIf max1>"" And max2="" Then
            Dim max As String=max1
            idx=cint(max.Substring(qz.length))+1
        Else
            idx=1
        End If
        e.DataRow("销售流水号")=qz & Format(idx,"000000")
    End If 
End If



怎么写都写不对!!!startIndex 不能大于字符串长度!!!请老师看看哪里有问题?

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


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

改成

 

            Dim max As String=IIF(max1> max2,max1,max2)


 回到顶部