以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  编号  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122371)

--  作者:yetle
--  发布时间:2018/7/24 9:27:00
--  编号
   
需求,复制订单编号为283的行,新增一行的编号变为283*001,再复制订单编号为283的行,新增的行编号为283*002,可下面的代码还是283*001,下面代码应该怎么改?

图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看
    Dim name As String = r("订单编号")

                 Dim max As String
                 Dim idx As Integer

                 max = Tables("报价单").Compute("Max(订单编号)","订单编号 = [_Identify] <> " & r("_Identify")) 
                 If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                 Else
                     idx = 1 \'否则顺序号等于1
                 End If
                 r("订单编号") = name & "*" & Format(idx,"000")
[此贴子已经被作者于2018/7/24 9:28:47编辑过]

--  作者:有点甜
--  发布时间:2018/7/24 10:54:00
--  

Dim name As String = r("订单编号")
Dim max As String
Dim idx As Integer
max = Tables("报价单").Compute("Max(订单编号)","订单编号 like \'" & name.replace("*", "[*]") & "%\' and [_Identify] <> " & r("_Identify"))
If max.Contains("*") Then \'如果存在最大编号
    idx = CInt(max.split("*")(1)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
r("订单编号") = name & "*" & Format(idx,"000")

--  作者:yetle
--  发布时间:2018/7/24 11:07:00
--  
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2018.7.26.1
错误所在事件:窗口,报价记录,Button5,Click
详细错误信息:
未将对象引用设置到对象的实例。


有这个提示
[此贴子已经被作者于2018/7/24 11:07:43编辑过]

--  作者:有点甜
--  发布时间:2018/7/24 11:17:00
--  

Dim name As String = r("订单编号")
Dim max As String
Dim idx As Integer
max = Tables("报价单").Compute("Max(订单编号)","订单编号 like \'" & name & "%\' and [_Identify] <> " & r("_Identify"))
If max > "" andAlso max.Contains("*") Then \'如果存在最大编号
    idx = CInt(max.split("*")(1)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
r("订单编号") = name & "*" & Format(idx,"000")


--  作者:yetle
--  发布时间:2018/7/24 16:17:00
--  
这样写定位到当前行哪一行?怎么之前当前行是被复制的行,现在是复制出来的新行
我是需要定位到复制出来的新行,将复制出来的其中一列单元值改写

--  作者:有点甜
--  发布时间:2018/7/24 16:20:00
--  
以下是引用yetle在2018/7/24 16:17:00的发言:
这样写定位到当前行哪一行?怎么之前当前行是被复制的行,现在是复制出来的新行
我是需要定位到复制出来的新行,将复制出来的其中一列单元值改写

 

贴出你写的全部代码


--  作者:yetle
--  发布时间:2018/7/24 16:25:00
--  
我知道怎么做了
[此贴子已经被作者于2018/7/24 16:28:03编辑过]

--  作者:yetle
--  发布时间:2018/8/16 11:34:00
--  
复制新增这段代码怎么用着用着,1、原报价明细直接被替换成新的报价明细了,(之前是原报价明细不变,新的报价明细复制新增了)

Dim Result As DialogResult

If  Tables("报价单").Current("研发部_总监审核")="研发-总监" Then
Result = MessageBox.Show("确认要新增版本吗?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
 If Result = DialogResult.Yes  Then
      Dim r As Row = Tables("报价单").Current
      Dim dnew As Row = Tables("报价单").AddNew
      Dim name As String = r("订单编号")
      Dim max As String
      Dim idx As Integer

    If usna Like "业务*" Or usna="admin" Or usna="研发-祝炫丽" Then
      max = Tables("报价单").Compute("Max(订单编号)","订单编号 like \'" & name & "%\' and [_Identify] <> " & r("_Identify"))
       If max > "" AndAlso max.Contains("*") Then \'如果存在最大编号
         idx = CInt(max.split("*")(1)) + 1 \'获得最大编号的后三位顺序号,并加1
       Else
       idx = 1 \'否则顺序号等于1
       End If

      For Each c As Col In Tables("报价单").Cols
          If c.Name <> "研发管理费" And c.Name <> "后勤管理费" And c.Name <> "制造费"   Then

             If c.Name = "订单编号" Then

                dnew(c.Name) = name
                ElseIf c.Name <> "_Identify" AndAlso c.name <> "业务跟单"  Then
                 dnew(c.Name) = r(c.Name)
             End If
          End If 
      Next
      dnew("订单编号") = name & "*" & Format(idx,"000")
      dnew("材料成本")=Tables("报价单.报价明细").Compute("Sum(金额)","订单编号=\'" & Tables("报价单").Current("订单编号") & "\'")

      dnew("财务审核") = Nothing
      dnew("总经理审批") = Nothing
      dnew("订单量") = 10000
      dnew("业务跟单") = usna



      Dim drs As List(Of DataRow)
      drs = r.DataRow.GetChildRows("报价明细")
      Dim rc As DataRow
      For Each dr As DataRow In drs
         rc = dr.Clone
         rc("订单编号") = dnew("订单编号")
      Next
    End If

 Else
    MessageBox.show("你无此操作权限!")
 End If
Else
     MessageBox.show("未审核报价款式不能复制新增版本!")
End If

--  作者:有点甜
--  发布时间:2018/8/16 11:42:00
--  
上传具体出错的实例测试。
--  作者:yetle
--  发布时间:2018/8/16 12:34:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.foxdb

我在新项目里面做了测试了,点复制新增后,确实旧的报价明细没有了
[此贴子已经被作者于2018/8/16 12:35:17编辑过]