设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 726|回复: 3
打印 上一主题 下一主题

[其它] [求助]古老的话题:如何对没有固定规律的记录排序

[复制链接]
跳转到指定楼层
1#
发表于 2005-7-8 20:09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我这里有客户订单表。其中有个叫订单号 字段的记录是这个样子的:

A001/05/06/23

B002/05/07/115

C12/05/08/1

一看好像没有什么规律,但是他由第一个斜杠前的A001;B002;CD12来代表客户号码。然后的05/06;05/07;05/08就是日期拉。表示5月6日等等。后面的就是流水帐号了。那么我怎么做才可以让他们先按日期排序好,然后再按流水帐号排序呢??!!我不知道怎么去取相关的字符出来,因为他们没有固定的长度。唯一有依据的就是他们之间都是用斜杠隔开的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-7-8 21:18:00 | 只看该作者
用Split函数分离订单号字符串。先建一个模块,加入下面自定义函数:Public Function split1(strIn As String, strDe As String) As String

    split1 = Split(strIn, strDe)(0)

End Function

Public Function split2(strIn As String, strDe As String) As String

    split2 = Split(strIn, strDe)(1)

End Function

Public Function split3(strIn As String, strDe As String) As String

    split3 = Split(strIn, strDe)(2)

End Function

Public Function split4(strIn As String, strDe As String) As String

    split4 = Split(strIn, strDe)(3)

End Function

Public Function MySplit(strIn As String, strDe As String) As Variant

    MySplit = Split(strIn, strDe)

End Function

建一个查询,用自定义函数对订单号进行分解为几列,再根据要求进行排序,如:SELECT 表2.a, split1([a],"/") AS 表达式1, split2([a],"/") AS 表达式2, split3([a],"/") AS 表达式3, split4([a],"/") AS 表达式4

FROM 表2

ORDER BY split2([a],"/"), split3([a],"/"), split4([a],"/");
3#
发表于 2005-7-8 23:54:00 | 只看该作者
那在做表设计时就应分三个字段来保存记录。客户号、日期、流水号
4#
 楼主| 发表于 2005-7-9 18:46:00 | 只看该作者
唉,只好这样咯。trynew真的功力深厚啊。青青说的比较实在。不过我们这里的实际情况是已经有1多条纪录了。不照trynew的做可能是没办法的了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 20:29 , Processed in 0.090169 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表