三、构建SQL语句从上面我们对ADO工作步骤的了解,已经知道要让ADO有效工作,关键是我们给它发出什么样的SQL指令。 在概念部分,我们已经简单介绍了SQL的有关情况。现在我们来详细探讨它。 SQL语句从功能上可以分为两大类:数据定义语言(DDL)和数据操纵语言(DML)。前者主要用于对数据库中表及字段,还有我们没有提到的索引的创建、删除、修改;后者用于对记录的查询、更新、插入、删除等操作。就EXCEL而言,我们通常使用的是DML部分语句。下面将对常用的语句进行介绍。
(一)简单查询句法1:Select 查询表达式 From 数据区域前面我们使用的SQL语句就属于此类。 查询表达式请粘贴下面的过程: Sub Ado1() Dim cnn As New ADODB.Connection Dim Sql As String cnn.Open "Provider=Microsoft.Jet.OleDb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName Sql = "Select * from [一年级$]" Sheet7.Cells.Clear Sheet7.[a2].CopyFromRecordset cnn.Execute(Sql) cnn.Close Set cnn = Nothing End Sub 查询表达式可以是下列之一或其组合,对多种方式的组合,用逗号搁开: (1)星号(*) 表示“数据区域”的所有字段。 (2)字段名 (3)常量表达式 (4)任何有效的计算表达方式
下面是一些SQL语句,请分别替换Sub Ado1的Sql句,并查看运行结果。 Sql = "Select '一年级',* from [一年级$]" Sql = "Select 姓名,语文+数学+英语 from [一年级$]" Sql = "Select 姓名,iif(语文>=60,'及格','不及格') from [一年级$]" 使用AS重新命名列名称当查询表达式使用(2)字段名时,字段名就是其本身,使用(3)常量表达式和(4)任何有效的计算表达方式时,系统将为该字段重新命名一个字段名,这个字段名通常没有意义,这时可以在表达式中使用AS为字段重新命名,当然对字段名也可以通过使用AS为其重新命名。使用AS通常在需要使用字段名的场合(在对HDR=NO的EXCEL数据源更为常见),如我们前面提过的将字段名写入第一行,也可用在多表查询时简化构造语句或者因特殊处理需要。后面我们或许会看到有关的例子。AS并不对查询结果造成实质影响。下面是使用AS的一个例子: Sql = "Select 班级,姓名 AS 名字,语文+数学+英语 AS 总成绩 from [一年级$]" 数据区域请粘贴下面的过程: Sub Ado2() Dim cnn As New ADODB.Connection Dim Sql As String cnn.Open "Provider=Microsoft.Jet.OleDb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName Sql = "Select * from [一班$]" Sheet7.Cells.Clear Sheet7.[a2].CopyFromRecordset cnn.Execute(Sql) cnn.Close Set cnn = Nothing End Sub 数据区域可以是下列之一: (1)当要查询的数据区域是从工作表的第一行、第一列开始的整个表格时,可以使用[工作表名$]的形式 (2)如果不是(1)的情形,则需要使用[工作表名$区域范围]的形式 'A:C列 Sql = "Select * from [一班$A:C]" '《不规范表》的A2:H19 Sql = "Select * from [不规范表$A2:H19]" 上面两中方式中的方括号和美元符号不能省略。 (3)如果工作表中定义了名称,则可以直接使用名称。 '《不规范表》的A2:H19已经定义名称为DATA Sql = "Select * from DATA" (4)数据区域是多个区域的情况我们后面再讲 |