搜索
写经验 领红包
 > 育儿

记录集1.打开并过滤()返回什么值(打开记录集发生异常)

打开记录集提取数据,按照固定的要求显示提取结果

大家好今日继续讲解数据库解决方案的第46讲,内容是打开记录集提取数据,按照固定的要求显示提取结果。要求我们首先打开一个记录集,然后按我们的要求来显示结果,什么固定要求呢?就是字段的排序,及显示多少个结果。

今日的内容并不难,我要讲解的是ADO连接EXCEL工作表后完成上述的内容。为什么总要讲EXCEL呢?毕竟这个类型的文件是我们工作表接触最多的,也是我们完成数据处理接触最多的文件类型。

下面看我们的实例,截图是EXCEL的表格,其中"数据"一页是我们要提取的数据源,我们要用ADO连接这个EXCEL,然后选择其中的型号,数量,单价,供应商 四个字段,其中型号要的是升序排序,数量是降序排序,结果要显示是的是前5名。

记录集1.打开并过滤()返回什么值(打开记录集发生异常)

下面看我给出的代码:

Sub mynzRecords_46() '第46讲 打开记录集提取数据,按照固定的要求显示提取结果

Dim cnADO, rsADO As Object

Dim strSQL As String

Set cnADO = CreateObject("ADODB.Connection")

Worksheets("46").Select

strPath = ThisWorkbook.FullName

Set rsADO = CreateObject("ADODB.Recordset")

cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPath

strSQL = "SELECT TOP 5 型号,数量,单价,供应商 FROM [数据$] ORDER BY 型号,数量 DESC"

Set rsADO = cnADO.Execute(strSQL)

Cells.ClearContents

For i = 0 To rsADO.Fields.Count - 1

Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

Range("A2").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set cnADO = Nothing

Set rsADO = Nothing

End Sub

代码截图:

记录集1.打开并过滤()返回什么值(打开记录集发生异常)

代码讲解:

1 strSQL = "SELECT TOP 5 型号,数量,单价,供应商 FROM [数据$] ORDER BY 型号,数量 DESC"

这段SQL语句实现了我们最初的要求,① SELECT TOP 5 是表示显示前5个记录

② 型号,数量,单价,供应商 表示的是提取的字段

③ ORDER BY 型号,数量 DESC" 是排序的结构,ORDER BY 语句用于根据指定的列对结果集进行排序。 语句默认按照升序对记录进行排序。如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

2 For i = 0 To rsADO.Fields.Count - 1

Cells(1, i + 1) = rsADO.Fields(i).Name

Next i

Range("A2").CopyFromRecordset rsADO

上述代码仍是先提出表头,然后复制记录集的内容。

下面看我们的运行结果;

记录集1.打开并过滤()返回什么值(打开记录集发生异常)

结果显示,在型号一列是升序排序,在数量一列是降序的排序,实现了我们的要求。

今日内容回向:

1 如何实现记录集的排序?

2 如何实现显示要求数量的记录集?

温馨提示:通过以上关于打开记录集提取数据,按照固定的要求显示提取结果内容介绍后,相信大家有新的了解,更希望可以对你有所帮助。