Foxtable(狐表)用户栏目专家坐堂 → 高级筛选里面的时间格式


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

主题:高级筛选里面的时间格式

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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
高级筛选里面的时间格式  发帖心情 Post By:2018/8/12 20:35:00 [显示全部帖子]


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

 

老师,上图中,当输入为日期类型时,右边的时间输入格式是怎么出来的?


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/12 21:32:00 [显示全部帖子]

以下是引用有点甜在2018/8/12 21:00:00的发言:

不同类型,new不同的控件

 

e.Table.grid.cols("内容").Editor = new windows.forms.TextBox

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

        'e.DataRow("操作符") = "等于"
        'e.DataRow("逻辑") = "并且"

'
        If t.cols(e.DataRow("字段")).IsDate Then
           Tables("筛选").grid.cols("值").Editor = new windows.forms.DateTimePicker
        Else 

           Tables("筛选").grid.cols("值").Editor = new windows.forms.TextBox
           Tables("筛选").Cols("值").ComboList = DataTables("person").GetComboListString( e.DataRow("字段"))
        End If
    End If
 End If
End If

 

老师:

1、我的筛选表里面操作符列和逻辑列是数据字典,那么这时候当字段输入后,希望操作符的显示值是等于,实际值是“1”,蓝色那里代码如何写?

2、红色部分您一定看懂,但是,这么一设置 ,筛选表里的值列都成日期输入控件了?怎么设置只让当前行是日期输入控件?


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/12 23:46:00 [显示全部帖子]

以下是引用有点甜在2018/8/12 23:29:00的发言:

上传具体实例说明

 

1、

e.DataRow("操作符") = "1"
e.DataRow("逻辑") = "并且"

 

2、设置editor请在prepareEdit事件设置

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

 

老师,就是类似这个项目,我想实现的是:

1、表B里面每增加一行,字段填写完后,比较那块默认是等于,逻辑那块默认是并且,字段、比较、逻辑都用了数据字典

2、表B里面每增加一行,字段如果是日期类型,那么在值的那一列的输入格式,就变成时间的输入格式

麻烦老师了,我这两天一直试着做,但是老做不出来


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 0:23:00 [显示全部帖子]

If e.Col.Name = "值" Then '如果正在编辑的是县市列
      e.Col.Combolist = DataTables("person").GetComboListString(e.Row.DataRow("字段"))
End If

 

老师,我在prepareEdit里面写这个为啥不起作用呀?


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 9:03:00 [显示全部帖子]

以下是引用有点甜在2018/8/12 23:29:00的发言:

上传具体实例说明

 

1、

e.DataRow("操作符") = "1"
e.DataRow("逻辑") = "并且"

 

2、设置editor请在prepareEdit事件设

If e.DataCol.name = "字段" Then
  If e.DataRow.IsNull("字段") Then
          e.DataRow("操作符") = ""
          e.DataRow("逻辑") = ""
          'Tables("筛选").grid.cols("值").Editor = new windows.forms.TextBox
          Return
  Else
    Dim t As Table = Tables("person")
    If t.cols.contains( e.DataRow("字段")) Then

        e.DataRow("操作符") = "1"
        e.DataRow("逻辑") = "And"
         Tables("筛选").Cols("值").ComboList = DataTables("person").GetComboListString( e.DataRow("字段"))
        'If t.cols(e.DataRow("字段")).IsDate Then
           'e.DataCol.SetDateTimeFormat(DateTimeFormatEnum.Date)
        'Else
           'Tables("筛选").Cols("值").ComboList = DataTables("person").GetComboListString( e.DataRow("字段"))
        'End If

    End If
 End If
End If

 

老师,红色代码我想实现,值的combolist根据字段选择而定?我现在那么写有啥问题么?现在没有效果?



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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 10:16:00 [显示全部帖子]

老师,您写的代码太漂亮了!逻辑很清晰

 

 


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

 

老师,上图中,我想即便鼠标锁定在第一行,点击删除也能把 第二行删除,第一行清空,

 

startedit事件:

If e.Row.index = e.Table.rows.count-1 Then
    e.Table.DataTable.addnew
End If

删除按钮:

 

If Tables("筛选").Current.Index = 0 Then
     Tables("筛选").Current.DataRow("字段")=""
Else
     Tables("筛选").Current.Delete   
End If

 

我现在能实现的就是,鼠标锁定在第一行,就把第一行清空了,剩下第一行第二行都是空的

 

请老师指导一下
 

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


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 12:22:00 [显示全部帖子]

以下是引用有点甜在2018/8/13 11:39:00的发言:

这个意思?

 

Dim t As Table = Tables("表B")
For i As Integer = t.Rows.Count -1 To 0 Step -1
    t.Rows(i).delete
Next
t.AddNew

您太厉害了,

删除按钮代码:

 

If Tables("筛选").Current.Index = 0 Then
      Dim t As Table = Tables("筛选")
      For i As Integer = t.Rows.Count -1 To 0 Step -1
         t.Rows(i).delete
      Next
      t.AddNew
Else
     Tables("筛选").Current.Delete
End If

我是这么写的,然后测试没问题。感谢老师!

 

查询按钮代码

Dim filter As String = ""
Dim mathType As String
Dim t As Table = Tables("person")
For Each r As Row In Tables("筛选").Rows
    If r("字段")="" Then Continue For
    Select Case r("操作符")
            Case "1"
                mathType = " = "
            Case "2"
                mathType = " > "
            Case "3"
                mathType = " < "
            Case "4"
                mathType = "<>"
            Case "5"
                mathType = " <= "
            Case "6"
                mathType = " >= "
    End Select

   If t.cols(r("字段")).IsDate Then
         Dim dvar As Date
         If Date.TryParse(r("值"), dvar) Then
               filter =filter & " " & r("字段") & " " & mathType & " " & "#" & format(dvar,"yyyy-MM-dd") & "#" & " " & r("逻辑")
         Else
               MessageBox.Show("非法日期")
         End If
    Else  
         filter= filter & " " & r("字段") & " " & mathType & " " & "'" & r("值") & "'" & " " & r("逻辑")
    End If
Next
If filter > "" Then
    If filter.EndsWith("And") Then
        filter = filter.SubString(0,filter.Length-3)
    ElseIf filter.EndsWith("Or") Then
        filter = filter.SubString(0,filter.Length-2)
    End If
End If
MessageBox.Show(filter)

 

 

老师,您帮我看看红色代码那里有啥问题么,我点击查询就卡住了?



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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 12:29:00 [显示全部帖子]


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

老师,我可不可以让这个表,每次打开都是这样显示这么多列,操作那里是等于,逻辑那里是并且,字段都摆在那里,用户只需要在值那边选择就可以了,


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 14:29:00 [显示全部帖子]

以下是引用有点甜在2018/8/13 12:30:00的发言:

 

对应的例子、输入数据,发上来测试。

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


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/13 16:48:00 [显示全部帖子]

以下是引用有点甜在2018/8/13 16:13:00的发言:

1、例子和你代码不对应;

 

2、修改表名、列名后测试,代码没问题。

 

3、你可以循环所有列,增加行赋值,如

 

Dim t As Table = Tables("表A")
For Each c As Col In t.Cols
    Dim r As Row = Tables("表B").addnew
    r("字段") = c.name
    r("比较") = 1
Next

老师,对应着了,但是每次那个值列中输入时间,读取为空,并且项目卡住?


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