以文本方式查看主题

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

--  作者:13775189031
--  发布时间:2019/5/14 16:18:00
--  自动删除行
请教:以下代码
自动生成行没问题,自动删除行没反应,是什么问题

Select Case e.DataCol.name
    Case "编制"
        If e.DataRow("编制") = False Then
            DataTables("项目用无损检验资质清单").DeleteFor("生产令号 = \'" & e.DataRow("生产令号") & "\'And 机组 = \'" & e.DataRow("机组") & "\'And 资质名称 = \'" & e.DataRow("编制人资质") & "\' And 姓名 = \'" & e.DataRow("编制人") & "\'And 等级 = \'" & e.DataRow("编制人等级") & "\'")
        Else
            Dim ndr As DataRow = DataTables("项目用无损检验资质清单").Find("生产令号 = \'" & e.DataRow("生产令号") & "\'And 机组 = \'" & e.DataRow("机组") & "\'And 资质名称 = \'" & e.DataRow("编制人资质") & "\' And 姓名 = \'" & e.DataRow("编制人") & "\'And 等级 = \'" & e.DataRow("编制人等级") & "\'")
            If ndr Is Nothing Then
                Dim nr As Row = Tables("项目用无损检验资质清单").AddNew
                nr.Move(0)
                ndr = nr.DataRow
            End If
            ndr("生产令号") = e.DataRow("生产令号")
            ndr("项目名称") = e.DataRow("项目名称")
            ndr("机组") = e.DataRow("机组")
            ndr("姓名") = e.DataRow("编制人")
            ndr("资质名称") = e.DataRow("编制人资质")
            ndr("等级") = e.DataRow("编制人等级")
        End If
End Select

--  作者:有点甜
--  发布时间:2019/5/14 16:29:00
--  

弹出这个信息,看条件是否正确

 

msgbox("生产令号 = \'" & e.DataRow("生产令号") & "\'And 机组 = \'" & e.DataRow("机组") & "\'And 资质名称 = \'" & e.DataRow("编制人资质") & "\' And 姓名 = \'" & e.DataRow("编制人") & "\'And 等级 = \'" & e.DataRow("编制人等级") & "\'")

 

然后再在命令窗口执行

 

Tables("项目用无损检验资质清单").filter = 弹出的条件

 

看是否可以正常筛选数据出来

 


--  作者:13775189031
--  发布时间:2019/5/14 16:49:00
--  
信息可以弹出来
--  作者:13775189031
--  发布时间:2019/5/14 16:51:00
--  
弹出的条件  怎么写?
--  作者:有点甜
--  发布时间:2019/5/14 16:57:00
--  
以下是引用13775189031在2019/5/14 16:51:00的发言:
弹出的条件  怎么写?

 

弹出窗口那里ctrl+c复制内容,粘贴到命令窗口那里测试。

 

贴出你复制的内容,发上来看看。

 

 


--  作者:13775189031
--  发布时间:2019/5/14 17:03:00
--  
---------------------------
生产采购管理系统.DataTable.AtnVxpq9vNIx5hvGG
---------------------------
生产令号 = \'17F8-5\'And 机组 = \'3#\'And 资质名称 = \'VT\' And 姓名 = \'\'And 等级 = \'\'
---------------------------
确定   
---------------------------

[此贴子已经被作者于2019/5/14 17:06:24编辑过]

--  作者:有点甜
--  发布时间:2019/5/14 17:08:00
--  

 

DataTables("项目用无损检验资质清单").DeleteFor("生产令号 = \'" & e.DataRow("生产令号") & "\'And 机组 = \'" & e.DataRow("机组") & "\'And 资质名称 = \'" & e.DataRow("编制人资质") & "\' And 姓名 = \'" & e.DataRow("编制人") & "\'And 等级 = \'" & e.DataRow("编制人等级") & "\'")

 

改成

 

Dim filter As String = "1=1"

If e.DataRow("编制人等级") = Nothing Then

    filter &= " and 等级 is null"

Else

    filter &= " and 等级 = \'" & e.DataRow("编制人等级") & "\'"

End If

If e.DataRow("编制人") = Nothing Then

    filter &= " and 姓名 is null"

Else

    filter &= " and 姓名 = \'" & e.DataRow("编制人") & "\'"

End If

 

......

 

msgbox(filter)

DataTables("项目用无损检验资质清单").DeleteFor(filter)

 

[此贴子已经被作者于2019/5/14 17:08:31编辑过]