以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  箱号的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1206)

--  作者:blackzhu
--  发布时间:2008/11/22 11:20:00
--  箱号的代码
我有一张订单表,有两个口岸,每一个口岸的第一箱的箱号全部从1开始。每增加一箱,开始箱号是结束箱号+1,结束箱号+箱数,请帮忙看看这个代码怎么写?

 如图所示
图片点击可在新窗口打开查看此主题相关图片如下:16.jpg
图片点击可在新窗口打开查看

--  作者:czy
--  发布时间:2008/11/22 13:01:00
--  
 

If e.DataCol.Name = "口岸" Then

   If e.NewValue Is Nothing Then

      e.datarow("开始箱号") = Nothing

   Else

      Dim dr As DataRow = DataTables("表名").Find("[订单号] = \'" & e.datarow("订单号") & "\' And [口岸] = \'" & e.NewValue & "\' And [结束箱号] > 0","_identify Desc")

      if dr IsNot Nothing Then

         e.datarow("开始箱号") = dr("结束箱号")+1

      End if

   End if

End if

[此贴子已经被作者于2008-11-22 13:02:49编辑过]

--  作者:czy
--  发布时间:2008/11/22 13:04:00
--  
记了说明,楼上的代码放到datacolchangd事件中。
--  作者:blackzhu
--  发布时间:2008/11/22 17:41:00
--  
以下是引用czy在2008-11-22 13:01:00的发言:
 

If e.DataCol.Name = "口岸" Then

   If e.NewValue Is Nothing Then

      e.datarow("开始箱号") = Nothing

   Else

      Dim dr As DataRow = DataTables("表名").Find("[订单号] = \'" & e.datarow("订单号") & "\' And [口岸] = \'" & e.NewValue & "\' And [结束箱号] > 0","_identify Desc")

      if dr IsNot Nothing Then

         e.datarow("开始箱号") = dr("结束箱号")+1

      End if

   End if

End if

[此贴子已经被作者于2008-11-22 13:02:49编辑过]

  谢谢CZY版主的回复,但我测试了一下没有反映。还有结束箱号的代码没有出来,结束箱号:起始行是等于起始行的箱数,第二行的结束箱号是等于上一行+第二行的箱数,以此类推。请版主看看我的开始箱号和结束箱号的变化。而且新口岸新单子全部是从第一箱开始的。谢谢。


--  作者:blackzhu
--  发布时间:2008/11/22 17:43:00
--  
  我想有变化的列应该是订单号,口岸和箱数,因为每增加一箱,开始箱号和结束箱号随之增加上去的。
--  作者:don
--  发布时间:2008/11/22 18:41:00
--  
1、文件!!!
2、如結束箱号由开始箱号及箱数得到,则应用表达式!
--  作者:blackzhu
--  发布时间:2008/11/24 9:37:00
--  
以下是引用don在2008-11-22 18:41:00的发言:
1、文件!!!
2、如結束箱号由开始箱号及箱数得到,则应用表达式!

  前两日我也在考虑用表达式列,但开始箱号能做结束箱号做不出。
开始箱号不管是同一订单或者同一订单里有两个口岸都是每一口岸或者每一订单的开始箱从第一箱开始。结束箱号都是从开始箱号+箱数。看附件中开始和结束箱号的编号变化,开始箱号的编号是跟订单和口岸的变化。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:狐狸爸爸
--  发布时间:2008/11/24 9:56:00
--  

If e.DataCol.Name = "口岸" Then

   If e.NewValue Is Nothing Then

      e.datarow("开始箱号") = Nothing

   Else

      Dim dr As DataRow = DataTables("装箱单").Find("[订单号] = \'" & e.datarow("订单号") & "\' And [口岸] = \'" & e.NewValue & "\' And [结束箱号] > 0","_identify Desc")

      if dr IsNot Nothing Then

         e.datarow("开始箱号") = dr("结束箱号")+1

      End if

   End if

ElseIf e.DataCol.Name = "开始箱号" OrElse e.Datacol.Name = "结束箱号"  Then

    If e.Datarow.IsNull("开始箱号") = False AndAlso e.Datarow.IsNull("结束箱号") = False Then

        e.DataRow("箱数") = e.Datarow("结束箱号") - e.DataRow("开始箱号") + 1

    End If

End if


--  作者:blackzhu
--  发布时间:2008/11/24 10:30:00
--  
以下是引用狐狸爸爸在2008-11-24 9:56:00的发言:

If e.DataCol.Name = "口岸" Then

   If e.NewValue Is Nothing Then

      e.datarow("开始箱号") = Nothing

   Else

      Dim dr As DataRow = DataTables("装箱单").Find("[订单号] = \'" & e.datarow("订单号") & "\' And [口岸] = \'" & e.NewValue & "\' And [结束箱号] > 0","_identify Desc")

      if dr IsNot Nothing Then

         e.datarow("开始箱号") = dr("结束箱号")+1

      End if

   End if

ElseIf e.DataCol.Name = "开始箱号" OrElse e.Datacol.Name = "结束箱号"  Then

    If e.Datarow.IsNull("开始箱号") = False AndAlso e.Datarow.IsNull("结束箱号") = False Then

        e.DataRow("箱数") = e.Datarow("结束箱号") - e.DataRow("开始箱号") + 1

    End If

End if

  狐爸:结束箱号应该是开始箱号+箱数


--  作者:狐狸爸爸
--  发布时间:2008/11/24 10:40:00
--  
呵呵,原理一样,自行修改一下看看啊。