Foxtable(狐表)用户栏目专家坐堂 → 装箱单箱号的编程代码


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

主题:装箱单箱号的编程代码

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 10:19:00 [显示全部帖子]

直接从菜单删除这个按钮


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 10:36:00 [显示全部帖子]

那就自己设计重置按钮的代码,判断选定的表和列,符合要求再重置。

 

if  currenttable.Name = "xxx" AndAlso CurrentTable.Cols(CurrentTable.Colsel).Name = "yyy"

   '不重置

Else

  '重置

End If

 

 


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 10:48:00 [显示全部帖子]

是的,放入菜单中替换原来的重置按钮大拿。

不重置的代码是不需要写的,你喜欢的话,可以: Messagebox.Show("此列不能重置")


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 11:00:00 [显示全部帖子]

只要有确定的逻辑关系,都可以用代码表示出来。

但商业逻辑上的问题,别人很难看懂的。

我只觉得,上面两段代码应该换一下位置:

 

If e.DataCol.Name = "口岸"  Then
    If e.DataRow.IsNull("口岸") = False Andalso e.DataRow.IsNull("箱数") = False Then
        Dim dr As DataRow = DataTables("装箱单").Find("[IO] = '" & e.DataRow("IO") & "' And [口岸] = '" & e.DataRow("口岸") & "' And [结束箱号] > 0","_identify Desc")
        If dr IsNot Nothing Then
            e.DataRow("开始箱号") = dr("结束箱号")+1
        Else
            e.DataRow("开始箱号")  = 1
        End If
    End If
End If

If 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

[此贴子已经被作者于2010-8-26 11:03:05编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 11:44:00 [显示全部帖子]

蒙一下:

 

If e.DataCol.Name = "口岸"  Then
    If e.DataRow.IsNull("口岸") = False Then
        Dim dr As DataRow = DataTables("装箱单").Find("[IO] = '" & e.DataRow("IO") & "' And [口岸] = '" & e.DataRow("口岸") & "' And [结束箱号] > 0","_identify Desc")
        If dr IsNot Nothing Then
            e.DataRow("开始箱号") = dr("结束箱号")+1
        Else
            e.DataRow("开始箱号")  = 1
        End If
    End If
End If

If 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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 11:55:00 [显示全部帖子]

不懂你的东东,搞不定的话,就自己做个简单例子上传说明,让大家看看有没有办法。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 12:44:00 [显示全部帖子]

If e.DataCol.Name = "口岸" Orelse e.DataCol.Name = "箱数"  Andalso e.DataRow.IsNull("开始箱号")  Then
    If e.DataRow.IsNull("口岸") = False  Andalso e.DataRow.IsNull("箱数") = False  Then
        Dim dr As DataRow = DataTables("表A").Find("[IO] = '" & e.DataRow("IO") & "' And [口岸] = '" & e.DataRow("口岸") & "' And [结束箱号] > 0","_identify Desc")
        If dr IsNot Nothing Then
            e.DataRow("开始箱号") = dr("结束箱号")+1
        Else
            e.DataRow("开始箱号")  = 1
        End If
    End If
End If
If 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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 13:10:00 [显示全部帖子]

仔细体会:

 

Dim Filter As String
If e.DataCol.Name = "口岸" Orelse e.DataCol.Name = "箱数"  Then
    If e.DataRow.IsNull("口岸") = False  Andalso e.DataRow.IsNull("箱数") = False  Then
        Filter = "[IO] = '" & e.DataRow("IO") & "' And [口岸] = '" & e.DataRow("口岸") & "' And [结束箱号] > 0 And [_Identify] < " & e.DataRow("_Identify")
        Dim dr As DataRow = DataTables("表A").Find(Filter, "_Identify Desc")
        If dr IsNot Nothing Then
            e.DataRow("开始箱号") = dr("结束箱号")+1
        Else
            e.DataRow("开始箱号")  = 1
        End If
    End If
End If
If 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
    Dim lst As List(Of DataRow)
    filter = "[IO] = '" & e.DataRow("IO") & "' And [口岸] = '" & e.DataRow("口岸") & "' And [_Identify] > " & e.DataRow("_Identify")
    DataTables("表A").DataCols("箱数").RaiseDataColChanged(Filter)
End If


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/26 13:23:00 [显示全部帖子]

其实原理不复杂,第一段根据之前的行算出本行的开始箱数,第二段重算之后的行,至于之前和之后行的区分,用_Identify列的值判断,就和帮助中流水账的设计差不多。
[此贴子已经被作者于2010-8-26 13:24:41编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/27 9:14:00 [显示全部帖子]

正常的,从本表计算,计算结果写入本表,运行效率比从其他表计算慢几个数量级。

没必要重置这些列,平时都是都是逐行数据数据的。


 回到顶部
总数 19 1 2 下一页