问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有没有办法自己设置access里面的数据的排序顺序

发布网友 发布时间:2022-04-22 14:54

我来回答

3个回答

懂视网 时间:2022-04-12 14:30

最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致。 首先在ACCESS数据库中建一个测试表Test,并添加ID、Name等几个字段,如下图所示: 然后在CodeSmith中新建一个模版,并循环输出所有字段名 %@ Cod

最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致。

首先在ACCESS数据库中建一个测试表Test,并添加ID、Name等几个字段,如下图所示:

然后在CodeSmith中新建一个模版,并循环输出所有字段名

 <%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8"%>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="数据表" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>

<%for(int i=0;i
<%=SourceTable.Columns[i].Name%>
<%}%>

运行后得到

Age
ID
IsOK
Name
Remark
Time

我们可以看到,字段是按照字典顺序排序的,而不是实际数据表中的顺序。虽然这不影响什么,但是一想到自动生成的MODEL层的字段和数据表的不对应,总感觉不太爽。
我甚至将SourceTable.Columns[i].ExtendedProperties这个扩展属性全部输出,也没有得到什么有用的信息。

后来无意中,我在.NET的 OleDbConnection.GetOleDbSchemaTable中得到了字段的顺序,新建一个winform项目,代码如下

1 string accessConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123456;Data Source=c:\db1.mdb;Persist Security Info=True";
2 OleDbConnection connection = new OleDbConnection(accessConnection);
3 connection.Open();
4 DataTable schemaColumns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new string[] { null, null, "test", null });
5 dataGridView2.DataSource = schemaColumns;
6 connection.Close();

我将GetOleDbSchemaTable获取到信息都绑定到一个DataGridView控件中,这样对里面的数据可以有一个比较直观的了解

终于看到了字段真正顺序!那么接下来的事情就比较好办了,我们要在CodeSmith中获取这个SchemaTable,然后根据ORDINAL_POSITION的值重新对SourceTable.Columns进行排序,这样后面编写代码模版的时候,字段顺序就是正常的了。CodeSmith代码如下:

<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8"%>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="数据表" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%FixColumns();%>

<%for(int i=0;i
<%=SourceTable.Columns[i].Name%>
<%}%>

代码不难理解,我用了类似插入排序的思路,从排序最后的字段开始往前查找(即ORDINAL_POSITION值从最大到最小),查找到了后就插入到SourceTable.Columns集合的最前面。这样到最后的结果就是SourceTable.Columns集合按ORDINAL_POSITION值从小到大排序了。

热心网友 时间:2022-04-12 11:38

建议你采用添加字段的形式排序方法,很容易做到的。
举例说明:
insert into 表1 (id, name) values (1 ,'adc')
insert into 表1 (id, name) values (2 ,'bcc')
insert into 表1 (id, name) values (3 ,'cbc')
insert into 表1 (id, name) values (4 ,'dac')

select * from 表1 order by name asc

用下面方法排序

select * from 表1 order by Mid(name,2,len(name)) asc

或者

select *, Mid(name,2,len(name)) as 'paixu' from 表1 order by 'paixu' asc

热心网友 时间:2022-04-12 12:56

数据库中的排序无所谓的啊,你可以在查找语句中进行排序,
自己没有试验过,不知道行不行,可以自己尝试一下
order by right(字段,len(字段)-1) asc
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
黄家驹是谁.拜托了各位 谢谢 最近这几天去 蓝调薰衣草庄园 还能赶上薰衣草盛开么 有没有去过的给点... 日本留学大学假期怎么放的 塑料水管怕水泥吗 孕妇腹壁脂肪厚怎么减 孕期肚子赘肉怎么减下去? 孕妇肚子怎么减肥啊 怀孕怎么减肚子上的肉 考研的难度相当于高考吗? 宏基5536笔记本15.6寸屏幕分辨率最高可以设到多少,我用HDMI线连液晶电视... 康姓女宝宝四个字好听的名字!! access二级必背知识点 处理照片用什么软件好呢? ACCESS中的排序问题 蛇年出生的康姓女孩取什么名字好? 用什么软件处理相片最好? Access数据库按字段升序排序怎么排 Access2010中多字段排序的排序过程 在Access数据库中,记录的排序方式分为哪两种? 在excel2007中一输字就会跳出stup这怎么解决 象棋里面的象和士可不可以过河? 关于EXCEL2007 函数问题 如图 天天象棋断线和逃跑有啥区别 现在微信象棋群没有二维码了吗 象棋的揭棋到底有没有软件? 象棋问题!红棋为什么判赢? 象棋中大棋能吃小棋小棋也能吃大棋? 怎样重新安装路由器 第一次路由器坏了重新安装要不要回收旧的? 无线路由器换地方如何从新安装 康姓女孩5月14日22时32分生的求起名 可以处理照片的软件是哪个? 如何让access自动编号从1开始排序实现方法 康姓女宝宝起名 404 Not Found 处理照片的软件哪个比较好用啊?? 康姓女宝宝起名,农历2019年十月初二十一点零二分出生,求名字! Access数据库可以包含哪7个数据库对象?? 康姓宝宝取什么名字好? 在Access中,如果要处理具有复杂条件或循环结构的操作,则应该使用的对象是(  )。 股市中cc1指标在200以上代表什么 有什么处理照片的软件 康姓羊年女宝宝姓名学 access中的记录排序规则 比较好用的照片处理软件有什么? access数据库,排序按什么进行 Access2010中多字段排序的排序过程 你认为炒期炒汇最有效的指标是哪个? access数据库怎样才能排序?请知道的人帮忙解决一下! 股市中cc1的用法