| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1650 人关注过本帖
标题:有关sql execl表查询排序问题
只看楼主 加入收藏
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:8 
有关sql execl表查询排序问题
诸位先生请教个问题,我在读取execl表时遇到一个编号相没有字段的问题。不知道如何查询排序,请大家指教。谢谢!
如:select*from [sheel1$] order by A列 desc.如何写对A列编号进行排序?
2016-08-16 21:22
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
这个语法就是你写的,不是很清楚excel中字段名是怎么定义的,是第一行的还是列名(也就是A、B)
这个解决很简单,搞清楚字段名就可以了。
一个方法是不排序select*from [sheel1$],在datagrid等控件中显示出来就行。
另外一个聪明的方法,也是先不排序select*from [sheel1$],获取recordset.field(0).name,最后放在SQL语句中进行排序查询

提醒一下,Excel对于你的第一列,A列,的数据认为是什么样的数据类型,对排序的结果是有影响的。
比如 1,2,10 这几个数如果按照数字类型排序,就是前面的顺序,但是如果当成了字符类型的话好像应该是 1 10 2
如果有必要SQL查询语句中加入字段类型的强制转换命令
2016-08-17 08:52
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
首先非常感谢你的帮助与答复!
execl表中没有字段名,如A列(表列名)的数据是:
A
0
1
2
3
5
4
6
等等。我确实是读入datagrid表显示的,但是多execl表查询再集中读取datadrid中,故打算表先排序再显示,故就把我难住了~。你提出的聪明方法我还没搞得太明白,能更详细点指教吗?
再次表示感谢😊
2016-08-17 09:35
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
其实就是先读取field(0).name。这个和datagrid显示的字段是一样。 说聪明是因为这个可以直接用,不管表格结构是不是变化。
2016-08-17 10:09
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
哈哈,兄弟才疏学浅  谢谢!
我想想消化一下你的指教吧。你的意思是先查询出列的项目名如A,然后作为项列名再进行查询并排序~。如果有个小例子就好了。再次表示感谢!
2016-08-17 11:13
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:10 
程序代码:
Sub getFieldName()       ‘this sub function can get the field name
    Dim RS As ADODB.Recordset
    Dim CN As ADODB.Connection
    Dim FN As ADODB.Field
    Set CN = New ADODB.Connection
    Set RS = New ADODB.Recordset
     
    CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=access.mdb;Persist Security Info=False"

 
    RS.Open "Select * from Table1", CN
    For Each FN In RS.Fields
        List2.AddItem FN.Name
    Next
    RS.Close
    Set RS = Nothing
    CN.Close
    Set CN = Nothing
End Sub


[此贴子已经被作者于2016-8-17 20:07编辑过]

2016-08-17 20:03
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:10 
程序代码:
    Dim RS As New ADODB.Recordset
    Dim cn As New ADODB.Connection
    Dim XX As String
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=" & App.Path & "\ABCD.xls;Extended Properties='Excel 8.0;HDR=Yes'"
    RS.Open "Select * From [Sheel1$]", cn, 3, 2
        XX = RS.Fields(0).Name    '取得第一个字段的字段名称
    RS.Close
    Set RS = Nothing
    RS.Open "Select * From [Sheel1$] Order BY " & XX & " Desc", cn, 3, 2    '以第一个字段从大到小排序,注意语句中必须的空格
    Do While Not RS.EOF
    '这里是用控件显示排序后数据的代码
    RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing
    cn.Close
    Set cn = Nothing

应该没有问题,已经通过测试

[此贴子已经被作者于2016-8-17 23:39编辑过]


请不要选我!!!
2016-08-17 23:33
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
收藏
得分:0 
太谢谢以上的二位高人的指教,谢了!
这二天我按着第一位版主的方法采用先查询后排序的方法,搞了半天好歹把程序搞出来了,且效果和目的也达到了~。但我今天一上网一看,第二位版主指教的方法更简单,而且更贴里我的的要求。哈哈真是谢谢!我回头再把程序改改试试,棒!
在谢谢二位!
2016-08-18 20:03
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
恭喜了。
其实是一样的,都是先进行一次查询,把字段名提取之后再来排序,差别就是用代码实现提取还是眼睛看一下
2016-08-19 08:37
快速回复:有关sql execl表查询排序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016676 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved