Foxtable(狐表)用户栏目专家坐堂 → 高级筛选细节实现


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

主题:高级筛选细节实现

美女呀,离线,留言给我吧!
susu312
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/11 16:48:00 [只看该作者]

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

老师 ,代码在表B的datachanged事件中,

想要实现的效果:

 

您根据代码应该能看懂我的 意思

 

麻烦老师了,

 


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


加好友 发短信
等级:超级版主 帖子:106481 积分:541558 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/11 16:59:00 [只看该作者]

测试没有问题,确定你的代码放对了事件??

If e.DataCol.name = "字段" Then
    Dim t As Table = Tables("表A")
    If t.cols.contains( e.newvalue) Then
        e.DataRow("操作符") = "等于"
        e.DataRow("逻辑") = "并且"
        If t.cols(e.newvalue).IsDate Then
            Tables("表B").grid.cols("值").Editor = new windows.forms.DateTimePicker
        Else
            Tables("表B").grid.cols("值").Editor = new windows.forms.TextBox
        End If
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
susu312
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/11 17:10:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

您看上图我输入了出生日期,值那边并没有出现,在datacolchanged事件中,简直神了


 回到顶部
美女呀,离线,留言给我吧!
susu312
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/11 17:13:00 [只看该作者]

好了好了,因为我窗口中引用表,作为副本选择了true,,

 

老师,您看我的代码严谨不,有么有判断不严谨的地方 ,请老师指点?


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


加好友 发短信
等级:超级版主 帖子:106481 积分:541558 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/11 17:23:00 [只看该作者]

严谨不严谨是相对的。结合你的项目看才知道

 回到顶部
美女呀,离线,留言给我吧!
susu312
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/11 17:28:00 [只看该作者]

If e.DataCol.name = "字段" Then
  If e.DataCol.  Then
          e.DataRow("操作符") = ""
          e.DataRow("逻辑") = ""
          Tables("筛选").grid.cols("值").Editor = new windows.forms.TextBox
          Return
  Else

    Dim t As Table = Tables("person")
    Dim Index As Integer=Array.Indexof(nums2,e.newvalue)
    If t.cols.contains(nums1(Index)) Then
        e.DataRow("操作符") = "等于"
        e.DataRow("逻辑") = "并且"
        If t.cols(nums1(Index)).IsDate Then
             Tables("筛选").grid.cols("值").Editor = new windows.forms.DateTimePicker
        Else
             Tables("筛选").grid.cols("值").Editor = new windows.forms.TextBox
        End If
    End If
 End If

End If

 

老师,红色那部分 ,如果字段为空的话,就设置成下面那样的?那个判断条件怎么写呀



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


加好友 发短信
等级:超级版主 帖子:106481 积分:541558 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/11 17:35:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
susu312
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/11 17:38:00 [只看该作者]

感谢老师

 回到顶部
美女呀,离线,留言给我吧!
susu312
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/11 18:33:00 [只看该作者]

Dim frm As winform.Form = e.Form
Dim Tbl As Table = frm.Controls("Table1").Table
Dim FltStr As String
Dim i As Integer
Dim drs As List(of DataRow) = Tbl.DataTable.Select("")
Dim dr As DataRow
Dim dc As DataCol
Dim luoJi As String
Dim caoZuo As String


For i = 0 To drs.Count - 1
    dr = drs(i)
    If dr.IsNull("字段") Then
        msgbox("第" & i+1 & "行字段未填写!")
        Tbl.Select(i,0)
        Return
    Else

        If dr("逻辑")="并且"  Then
            luoJi="And"
        Else
            luoJi="Or"
        End If
       
        Select Case dr("操作符")
            Case "1"
                caoZuo = " = "
            Case "2"
                caoZuo = " > "
            Case "3"
                caoZuo = " < "
            Case "4"
                caoZuo = " >= "
            Case "5"
                caoZuo = " <= "
            Case "6"
                caoZuo = " <> "
        End Select

        FltStr = FltStr & dr("字段") & caoZuo & dr("值") & luoJi
    End If
Next
If FltStr > "" Then
    
    If FltStr.EndsWith(" And ") Then
        FltStr = FltStr.SubString(5)
    ElseIf FltStr.EndsWith(" Or ") Then
        FltStr = FltStr.SubString(4)
    End If
End If
'筛选代码
If Tbl.Rows.Count > 0 Then Tbl.Select(0,0)
Tables("person").Filter = FltStr

 

 

老师,您帮我看看我这段代码哪里有问题呀?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/12 23:04:00 [只看该作者]

Dim frm As winform.Form = e.Form
Dim Tbl As Table = frm.Controls("Table1").Table
Dim FltStr As String = ""
Dim i As Integer
Dim drs As List(of DataRow) = Tbl.DataTable.Select("")
Dim dr As DataRow
Dim dc As DataCol
Dim luoJi As String
Dim caoZuo As String


For i = 0 To drs.Count - 1
    dr = drs(i)
    If dr.IsNull("字段") Then
        msgbox("第" & i+1 & "行字段未填写!")
        Tbl.Select(i,0)
        Return
    Else

        If dr("逻辑")="并且"  Then
            luoJi=" And "
        Else
            luoJi=" Or "
        End If
       
        Select Case dr("操作符")
            Case "等于"
                caoZuo = " = "
            Case "大于"
                caoZuo = " > "
            Case "小于"
                caoZuo = " < "
            Case "大于等于"
                caoZuo = " >= "
            Case "小于等于"
                caoZuo = " <= "
            Case "不等于"
                caoZuo = " <> "
        End Select

        FltStr = FltStr & dr("字段") & caoZuo & "'" & dr("值") & "'" & luoJi
    End If
Next
If FltStr > "" Then    
    If FltStr.EndsWith(" And ") Then
        FltStr = FltStr.SubString(0, fltstr.length-5)
    ElseIf FltStr.EndsWith(" Or ") Then
        FltStr = FltStr.SubString(0, fltstr.length-4)
    End If
End If
'筛选代码
If Tbl.Rows.Count > 0 Then Tbl.Select(0,0)
msgbox(fltstr)
'Tables("person").Filter = FltStr


 回到顶部
总数 20 上一页 1 2