Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5298|回复: 6

[已解决]SQL排序

[复制链接]
发表于 2014-5-17 22:35 | 显示全部楼层 |阅读模式
本帖最后由 张雄友 于 2014-5-18 03:23 编辑

如何按拼音首字母降序排序??见效果。
  1. Sub SQL()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, strSQL As String
  4.     Dim i As Integer, PathStr As String
  5.     Set Conn = CreateObject("ADODB.Connection")
  6.     Set Rst = CreateObject("ADODB.Recordset")
  7.     PathStr = ThisWorkbook.FullName
  8.     Select Case Application.Version * 1
  9.     Case Is <= 11
  10.         strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
  11.     Case Is >= 12
  12.         strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
  13.     End Select
  14.    
  15.     Conn.Open strConn
  16.     strSQL = "SELECT  * FROM [学生$] ORDER BY 姓名 " '如何按拼音首字母降序排序??见效果。
  17.     Set Rst = Conn.Execute(strSQL)
  18.     With Sheets("提取")
  19.         .Cells.Clear
  20.         For i = 0 To Rst.Fields.Count - 1
  21.             .Cells(1, i + 1) = Rst.Fields(i).Name
  22.         Next i
  23.         .Range("A2").CopyFromRecordset Rst
  24.         .Cells.EntireColumn.AutoFit
  25.         .Cells.EntireColumn.AutoFit
  26.     End With
  27.     Rst.Close
  28.     Conn.Close
  29.     Set Conn = Nothing
  30.     Set Rst = Nothing
  31. End Sub
复制代码
最佳答案
2014-5-17 22:54
  1. Sub SQL()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, strSQL As String
  4.     Dim i As Integer, PathStr As String
  5.     Set Conn = CreateObject("ADODB.Connection")
  6.     Set Rst = CreateObject("ADODB.Recordset")
  7.     PathStr = ThisWorkbook.FullName
  8.     Select Case Application.Version * 1
  9.         Case Is <= 11
  10.             strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
  11.         Case Is >= 12
  12.             strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
  13.     End Select
  14.     Conn.CursorLocation = 3
  15.     Conn.Open strConn
  16.     strSQL = "SELECT  * FROM [学生$]"    '如何按拼音首字母降序排序??见效果。
  17.     Set Rst = Conn.Execute(strSQL)
  18.     Rst.Sort = "姓名 desc"
  19.     With Sheets("提取")
  20.         .Cells.Clear
  21.         For i = 0 To Rst.Fields.Count - 1
  22.             .Cells(1, i + 1) = Rst.Fields(i).Name
  23.         Next i
  24.         .Range("A2").CopyFromRecordset Rst
  25.         .Cells.EntireColumn.AutoFit
  26.         .Cells.EntireColumn.AutoFit
  27.     End With
  28.     Rst.Close
  29.     Conn.Close
  30.     Set Conn = Nothing
  31.     Set Rst = Nothing
  32. End Sub
复制代码

SQL排序.rar

19.41 KB, 下载次数: 20

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2014-5-17 22:36 | 显示全部楼层
回复

使用道具 举报

发表于 2014-5-17 22:54 | 显示全部楼层    本楼为最佳答案   
  1. Sub SQL()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, strSQL As String
  4.     Dim i As Integer, PathStr As String
  5.     Set Conn = CreateObject("ADODB.Connection")
  6.     Set Rst = CreateObject("ADODB.Recordset")
  7.     PathStr = ThisWorkbook.FullName
  8.     Select Case Application.Version * 1
  9.         Case Is <= 11
  10.             strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
  11.         Case Is >= 12
  12.             strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
  13.     End Select
  14.     Conn.CursorLocation = 3
  15.     Conn.Open strConn
  16.     strSQL = "SELECT  * FROM [学生$]"    '如何按拼音首字母降序排序??见效果。
  17.     Set Rst = Conn.Execute(strSQL)
  18.     Rst.Sort = "姓名 desc"
  19.     With Sheets("提取")
  20.         .Cells.Clear
  21.         For i = 0 To Rst.Fields.Count - 1
  22.             .Cells(1, i + 1) = Rst.Fields(i).Name
  23.         Next i
  24.         .Range("A2").CopyFromRecordset Rst
  25.         .Cells.EntireColumn.AutoFit
  26.         .Cells.EntireColumn.AutoFit
  27.     End With
  28.     Rst.Close
  29.     Conn.Close
  30.     Set Conn = Nothing
  31.     Set Rst = Nothing
  32. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-5-18 03:22 | 显示全部楼层
hwc2ycy 发表于 2014-5-17 22:54

14句代码有何用??
回复

使用道具 举报

发表于 2014-5-18 06:56 | 显示全部楼层
张雄友 发表于 2014-5-18 03:22
14句代码有何用??

要使用recordset的sort属性,必须设置CursorLocation属性的值为adUseClient(对应的值为3)

回复

使用道具 举报

 楼主| 发表于 2014-5-18 07:22 | 显示全部楼层
hwc2ycy 发表于 2014-5-18 06:56
要使用recordset的sort属性,必须设置CursorLocation属性的值为adUseClient(对应的值为3)

姓名不是在第二列吗?怎么是3?难道3代表什么?
回复

使用道具 举报

发表于 2014-5-18 21:32 | 显示全部楼层
张雄友 发表于 2014-5-18 07:22
姓名不是在第二列吗?怎么是3?难道3代表什么?

3列游标类型,不是列号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-21 00:13 , Processed in 0.333988 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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