MS Access 2003 - 排序列表框的字符串值不是按字母顺序
Posted
技术标签:
【中文标题】MS Access 2003 - 排序列表框的字符串值不是按字母顺序【英文标题】:MS Access 2003 - ordering the string values for a listbox not alphabetical 【发布时间】:2010-03-30 20:00:09 【问题描述】:这是一个愚蠢的问题。假设我有一个为列表框生成的查询,它为三个商店生成值
Store A 18
Store B 32
Store C 54
现在,如果我在 sql 语句中 ORDER BY,它唯一会做的就是按字母顺序降序或升序,但我想要一个特定的顺序(只是因为他们想要一个特定的顺序).....所以我有办法吗在 SQL 中添加一些东西来获取
Store B
Store C
Store A
即基本上逐行我想要什么。谢谢!
【问题讨论】:
【参考方案1】:在包含商店名称的表中添加一个数字字段sequencer。使用 sequencer 值来确定您的排序顺序。
SELECT sequencer, store_name FROM YourTable ORDER BY sequencer;
在列表框中,为sequencer列设置列宽=0。
或者简单地说,就像@dscarr suggested,不要在SELECT
字段列表中包含sequencer,而只是在ORDER BY
中包含它...
SELECT store_name FROM YourTable ORDER BY sequencer;
【讨论】:
这个我有一种预感.....不确定你是否可以在 sql 中添加一些东西来完成交叉表中的月份概念。谢谢汉斯! 您可以按照 asstander 的建议将 Switch 函数添加到您的 SQL 中。但是,如果您的查询返回多于几行,则该方法可能具有挑战性。我宁愿根据需要更改 sequencer 字段中的值,而不是修改 Switch 函数。如果您将序列器设为浮点数据类型,您可以分配小数值以将新行放入现有序列中。 ...老实说老兄,完美地解决了我的需要.....再次(可能是本网站上的第一百次)非常感谢汉斯! 这绝对是我处理它的方式。如果将数据添加到表中或从表中删除,则添加 switch 语句可能会返回不准确的结果。此外,您不需要将 sequencer 列的宽度设置为 0,只是不要将其包含在 SELECT 子句中,如下所示: SELECT store_name FROM YourTable ORDER BY sequencer;即使没有选择它,您仍然可以在 ORDER BY 子句中使用排序器列。 @dscarr 既然你这么说了,这似乎很明显。 :-) 我修改了答案。谢谢。【参考方案2】:你可以做两件事中的一件。
要么使用SWITCH 声明,比如
SELECT Table1.Store,
Table1.Val,
Switch([Store]="StoreB",1,[Store]="StoreC",2,[Store]="StoreA",3) AS Expr1
FROM Table1
ORDER BY Switch([Store]="StoreB",1,[Store]="StoreC",2,[Store]="StoreA",3);
或者使用二级订单表,存储商店名称的值和按值排序。
【讨论】:
我完全不熟悉那种 switch 语句方法。非常感谢!今天学到了很酷的东西!以上是关于MS Access 2003 - 排序列表框的字符串值不是按字母顺序的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2003 - 自动在表单的列表框中显示最后一条记录,而不是第一条