Foxtable(狐表)用户栏目专家坐堂 → [求助]字典排序问题


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

主题:[求助]字典排序问题

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


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
[求助]字典排序问题  发帖心情 Post By:2016/4/20 16:18:00 [只看该作者]

一字典,键为日期型,值为字符型。

问题:如何字典中的项将键按日期排序?谢谢


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


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

dim dmp As New TableDataMap
dmp.DataTable = "客户" '指定数据来源表
dmp.ValueCol = "ID" '指定取值列
dmp.DisplayCol = "公司" '指定显示列
'指定下拉列表时显示哪些列的数据
dmp.ListCols = "ID,公司,姓氏,名字,职务,业务电话,传真号,地址,城市,邮政编码"
dmp.Sort = "城市" '指定排序方式
Tables("订单").Cols("客户 ID").DataMap = dmp.CreateDataMap() '生成并设置DataMap

 

 


http://www.foxtable.com/help/topics/2653.htm

 

[此贴子已经被作者于2016/4/20 16:26:09编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/4/20 16:42:00 [只看该作者]

不是动态字典。

 


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


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

Dim dic As New SortedDictionary(of Date, String)
dic.add("2016-01-05", "广东")
dic.add("2015-05-15", "湛江")
dic.add("2016-03-03", "中国")


For Each i As String In dic.Keys
    msgbox(i & " " & dic(i))
Next


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


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/4/20 16:46:00 [只看该作者]

假设字典项有:

键                值

A2014年3月:C

A2013年1月:A

B2013年1月:B

 

 

键为字符型,但可以转换为日期型,

经按日期排序后实现:

键 值

A2013年1月:A

B2013年1月:B

A2014年3月:C

 

日期中存在相同的年月。

[此贴子已经被作者于2016/4/20 16:48:09编辑过]

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


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

 不可以直接排序。

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


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/4/20 16:53:00 [只看该作者]

如果键为字符型,值为日期型,

如何按值排序呢

[此贴子已经被作者于2016/4/20 16:57:35编辑过]

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


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

mark 选择排序

 

Dim dic As New Dictionary(of String, String)
dic.add("A2016-01-05", "广东")
dic.add("B2015-05-15", "湛江")
dic.add("A2016-03-03", "中国")

Dim keys As new List(Of String)
For Each key As String In dic.Keys
    keys.add(key)
Next

Dim i As Integer, j As Integer

For i = 0 To keys.count - 1
    For j = i + 1 To keys.count -1
        If right(keys(i), 10) > right(keys(j), 10) Then
            Dim temp = keys(i)
            keys(i) = keys(j)
            keys(j) = temp
        End If
    Next j
Next i

For Each key As String In keys
    msgbox(dic(key))
Next

 


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


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/4/20 17:04:00 [只看该作者]

老师,如果值相同,排序后如何找到对应的键?

 

如:Dim dic As New Dictionary(of String, Date)
dic.add("A", "2015-01-01")
dic.add("B", "2015-03-01")
dic.add("C", "2015-01-01")

 

按值排序后为:

"A", "2015-01-01"

"C", "2015-01-01"
"B", "2015-03-01"

[此贴子已经被作者于2016/4/20 17:11:26编辑过]

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


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

 键相同?键是唯一的啊。

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