Foxtable(狐表)用户栏目专家坐堂 → 自动增行


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

主题:自动增行

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


加好友 发短信
等级:婴狐 帖子:29 积分:325 威望:0 精华:0 注册:2015/9/25 0:22:00
自动增行  发帖心情 Post By:2016/1/7 11:51:00 [只看该作者]

今天写了一些代码在事件编程(DataColChanged):
在[检验结果]表中,新增一行记录,输入批号,同时检测表[入库标签]中,是否有相同批号,如果没有就判断“检测结果”列中输入的信息,如果是“合格”或“让步接受”,就自动在表[入库标签]中增加一行,同时把批号、日期、检验结果等值都带到该表中,否则表[入库标签]没有操作。

但好像有些问题,可以自动增行,但判断条件上,不论“检测结果”列中输入什么,表[入库标签]都会自动增加行。
请老师看看,谢谢!

Select Case e.DataCol.name
    Case "检验结果" 
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.OldValue & "'")
        Dim hg As DataRow=DataTables("检验结果").Find("检验结果='合格'")
        Dim rb As DataRow=DataTables("检验结果").Find("检验结果='让步接受'")
               
        If dr Is Nothing Then
            If hg IsNot Nothing Then
                ElseIf rb IsNot Nothing Then
               
                dr = DataTables("入库标签").AddNew()
                dr("批号") = e.DataRow("批号")
                dr("检验结果") = e.DataRow("检验结果")
                dr("检验日期") = e.DataRow("检验日期")
            Else
                dr("批号") = e.DataRow("批号")
            End If
        End If
        
        Case "检验日期","检验结果"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.DataRow("批号") & "'")
        If dr IsNot Nothing Then
        dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

截图不能上传。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/7 12:06:00 [只看该作者]

Select Case e.DataCol.name
    Case "批号"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.OldValue & "'")
       
       
        If dr Is Nothing Then
            If e.DataRow("检验结果")="合格" AndAlso e.DataRow("检验结果")="让步接受" Then
                dr = DataTables("入库标签").AddNew()
                dr("批号") = e.DataRow("批号")
                dr("检验结果") = e.DataRow("检验结果")
                dr("检验日期") = e.DataRow("检验日期")
            End If
        Else
            dr("批号") = e.DataRow("批号")
        End If
       
    Case "检验日期","检验结果"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.DataRow("批号") & "'")
        If dr Is Nothing AndAlso e.DataRow("检验结果")="合格" AndAlso e.DataRow("检验结果")="让步接受" Then
            dr = DataTables("入库标签").AddNew()
            dr("批号") = e.DataRow("批号")
            dr("检验结果") = e.DataRow("检验结果")
            dr("检验日期") = e.DataRow("检验日期")
        End If
       
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

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


加好友 发短信
等级:婴狐 帖子:29 积分:325 威望:0 精华:0 注册:2015/9/25 0:22:00
  发帖心情 Post By:2016/1/7 13:12:00 [只看该作者]

谢谢版主,可是我试了,表[入库标签]没有自动增行。

有两张表[检验结果]和[入库标签]。

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


加好友 发短信
等级:婴狐 帖子:29 积分:325 威望:0 精华:0 注册:2015/9/25 0:22:00
  发帖心情 Post By:2016/1/7 13:16:00 [只看该作者]

以下是引用大红袍在2016/1/7 12:06:00的发言:
Select Case e.DataCol.name
    Case "批号"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.OldValue & "'")
       
       
        If dr Is Nothing Then
            If e.DataRow("检验结果")="合格" AndAlso e.DataRow("检验结果")="让步接受" Then
                dr = DataTables("入库标签").AddNew()
                dr("批号") = e.DataRow("批号")
                dr("检验结果") = e.DataRow("检验结果")
                dr("检验日期") = e.DataRow("检验日期")
            End If
        Else
            dr("批号") = e.DataRow("批号")
        End If
       
    Case "检验日期","检验结果"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.DataRow("批号") & "'")
        If dr Is Nothing AndAlso e.DataRow("检验结果")="合格" AndAlso e.DataRow("检验结果")="让步接受" Then
            dr = DataTables("入库标签").AddNew()
            dr("批号") = e.DataRow("批号")
            dr("检验结果") = e.DataRow("检验结果")
            dr("检验日期") = e.DataRow("检验日期")
        End If
    

        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select
   
图片点击可在新窗口打开查看此主题相关图片如下:fj.png
图片点击可在新窗口打开查看



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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/7 14:26:00 [只看该作者]

Select Case e.DataCol.name
    Case "批号"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.OldValue & "'")
       
       
        If dr Is Nothing Then
            If e.DataRow("检验结果")="合格" orelse e.DataRow("检验结果")="让步接受" Then
                dr = DataTables("入库标签").AddNew()
                dr("批号") = e.DataRow("批号")
                dr("检验结果") = e.DataRow("检验结果")
                dr("检验日期") = e.DataRow("检验日期")
            End If
        Else
            dr("批号") = e.DataRow("批号")
        End If
       
    Case "检验日期","检验结果"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.DataRow("批号") & "'")
        If dr Is Nothing AndAlso (e.DataRow("检验结果")="合格" orelse e.DataRow("检验结果")="让步接受") Then
            dr = DataTables("入库标签").AddNew()
            dr("批号") = e.DataRow("批号")
            dr("检验结果") = e.DataRow("检验结果")
            dr("检验日期") = e.DataRow("检验日期")
        End If
       
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

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


加好友 发短信
等级:婴狐 帖子:29 积分:325 威望:0 精华:0 注册:2015/9/25 0:22:00
  发帖心情 Post By:2016/1/7 14:27:00 [只看该作者]

以下是引用大红袍在2016/1/7 12:06:00的发言:
Select Case e.DataCol.name
    Case "批号"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.OldValue & "'")
       
       
        If dr Is Nothing Then
            If e.DataRow("检验结果")="合格" AndAlso e.DataRow("检验结果")="让步接受" Then
                dr = DataTables("入库标签").AddNew()
                dr("批号") = e.DataRow("批号")
                dr("检验结果") = e.DataRow("检验结果")
                dr("检验日期") = e.DataRow("检验日期")
            End If
        Else
            dr("批号") = e.DataRow("批号")
        End If
       
    Case "检验日期","检验结果"
        Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.DataRow("批号") & "'")
        If dr Is Nothing AndAlso e.DataRow("检验结果")="合格" AndAlso e.DataRow("检验结果")="让步接受" Then
            dr = DataTables("入库标签").AddNew()
            dr("批号") = e.DataRow("批号")
            dr("检验结果") = e.DataRow("检验结果")
            dr("检验日期") = e.DataRow("检验日期")
        End If
       
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select
找到问题了,是AndAlso的问题,修改成Or,就好了。但还有一个问题,如果把检验结果修改后,如果自动增加一行后,“检验结果”中的值也跟着改变,不管是合格还是退货,不会自动删除行。不过这个是另一个表中设计的事件了。  谢谢!!!!


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/7 14:40:00 [只看该作者]


 

[此贴子已经被作者于2016/1/7 14:39:57编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/7 14:43:00 [只看该作者]

Case "检验日期","检验结果"
    Dim dr As DataRow = DataTables("入库标签").Find("批号 = '" & e.DataRow("批号") & "'")
    If e.DataRow("检验结果")="合格" OrElse e.DataRow("检验结果")="让步接受" Then
        If dr Is Nothing Then
            dr = DataTables("入库标签").AddNew()
            dr("批号") = e.DataRow("批号")
            dr("检验结果") = e.DataRow("检验结果")
            dr("检验日期") = e.DataRow("检验日期")
        End If
        dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
    Else
        If dr IsNot Nothing Then
            dr.Delete
        End If
    End If


End Select

[此贴子已经被作者于2016/1/7 14:43:20编辑过]

 回到顶部