以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动增行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=79686)

--  作者:cold
--  发布时间: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

截图不能上传。


--  作者:大红袍
--  发布时间: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
--  发布时间:2016/1/7 13:12:00
--  
谢谢版主,可是我试了,表[入库标签]没有自动增行。

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

--  作者:cold
--  发布时间: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
图片点击可在新窗口打开查看



--  作者:大红袍
--  发布时间: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
--  发布时间: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,就好了。但还有一个问题,如果把检验结果修改后,如果自动增加一行后,“检验结果”中的值也跟着改变,不管是合格还是退货,不会自动删除行。不过这个是另一个表中设计的事件了。  谢谢!!!!


--  作者:大红袍
--  发布时间:2016/1/7 14:40:00
--  


 

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

--  作者:大红袍
--  发布时间: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编辑过]