以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 跨表编号 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109742) |
-- 作者:SZCD111 -- 发布时间:2017/11/18 12:23:00 -- 跨表编号 请教!有“销售明细表”和“销售退换货表”,比如“销售明细表” 中编号为“X20170023”的销售明细退货,复制该明细至“销售退换货表”中,同时“销售明细表”删除该记录。那么,“销售明细表”中新增一条明细时,我希望新增明细的编号是“X20170024”,而非“X20170023”。怎么实现呢??? |
-- 作者:有点蓝 -- 发布时间:2017/11/18 14:11:00 -- 同时查“销售明细表”和“销售退换货表”2个表获取编号的最大值,再比较取最大的编号+1 |
-- 作者:SZCD111 -- 发布时间:2017/11/18 14:46:00 -- .NET Framework 版本:2.0.50727.3655 Foxtable 版本:2017.8.19.1 错误所在事件:表,销售明细表,DataColChanged 详细错误信息: 调用的目标发生了异常。 startIndex 不能大于字符串长度。 参数名: startIndex 这是什么意思?
|
-- 作者:有点蓝 -- 发布时间:2017/11/18 15:57:00 -- 错误所在事件:表,销售明细表,DataColChanged 应该是substring的参数长度计算错误
|
-- 作者:SZCD111 -- 发布时间: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 请老师帮我看看代码哪里有问题?或者不严谨?谢谢
|
-- 作者:有点甜 -- 发布时间:2017/11/19 15:57:00 -- 处理断号,参考
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=85293&skin=0
|
-- 作者:SZCD111 -- 发布时间: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 不能大于字符串长度!!!请老师看看哪里有问题?
|
-- 作者:有点甜 -- 发布时间:2017/11/21 12:22:00 -- 改成
Dim max As String=IIF(max1> max2,max1,max2) |