2013-03-25 回答
sql一般用在多条件查询,对数据库读写等。
1. vba如何建立sql连接
a.在vba project 窗口中,“工具—引用—microsoft activex data objects 2.0 library”,如下图所示
b. vba语句
private sub commandbutton1_click()
dim cnn as adodb.connection’定义变量
dim sql$, stext$, i as integer
worksheets(3).cells.clear
stext = iif(textbox1.value = "", "*", textbox1.value)
set cnn = createobject("adodb.connection")’生成对象
cnn.open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & thisworkbook.fullname’打开数据库
if textbox1 = "" then
sql = "select * from [sheet2$]"’sql语句
else
sql = "select * from [sheet2$] where 姓名 like '" & textbox1.value & "'"
end if
worksheets(3).[a1].copyfromrecordset cnn.execute(sql)’执行sql语句
cnn.close
set cnn = nothing
end sub
2. sub text()
dim cnn as adodb.connection’定义变量
dim rs as adodb.recordset
set cnn = createobject("adodb.connection")’生成对象,若定义变量时为dim cnn as new adodb.connection,此句可省略
cnn.open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & thisworkbook.fullname’打开数据库
sql = "select * from [sheet2$] where 姓名 like '" & textbox1.value & "'"
rs.open sql,cnn,adopenkeyset.adlockoptimistic’生成查询记录,为后面出书数据准备
worksheets(3).[a1].copyfromrecordset rs
end sub
________________________________________________________________________
以下根据网络整理
2 select sql语句
select * from table_name where column1 = xxx [and column2 > yyy] [or column3 <> zzz]
'*'表示全部的栏位都列出来,如果不全部列出,则可以写字段名称如 学号,姓名……;where 之后是接条件式,把符合条件的资料列出来,table_name如果为工作表名称,书写格式[工作表名$],下同。
select column1,avg(column2) from table_name group by column1 having avg(column2) > xxx
说明: 1.group by: 以column1 为一组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字一起使用。2.having : 必须和 group by 一起使用作为整合性的限制。
复合性的查询:select * from table_name1 where exists (select * from table_name2 where conditions )
说明:1.where 的 conditions 可以是另外一个的 query。2. 在此是指存在与否。
select column1,columns2,...from table_name
说明:把table_name 的特定栏位资料全部列出来
select count (*) from table_name where column_name = xxx
说明:查询符合条件的资料共有几笔。
1.计算出总和,所选的栏位必须是可数的数字形态。2.除此以外还有 avg() 是计算
select sum(column1) from table_name
说明:平均、max()、min()计算最大最小值的整合
select * from table_name1 where column1 between xx and yy
说明:between 表示 column1 的值介於 xx 和 yy 之间。
3. update sql语句
update table_name set column1='xxx' where conditoins
说明:1.更改某个栏位设定其值为'xxx'。
2.conditions 是所要符合的条件、若没有 where 则整个 table 的那个栏位都会全部被更改。
4. deletesql语句
删除资料: delete from table_name where conditions
说明:删除符合条件的资料。
说明:关于where条件后面如果包含有日期的比较,不同数据库有不同的表达式
5.sql中通配符用
• "%" 表示零个或多个,
• "_"表示任何单一字符
• [charlist] 字符列中的任何单一字符
• [^charlist] [!charlist] 不在字符列中的任何单一字符
• select * from databasename where fieldname like '%xx%'
• select * from persons where city like '[aof]%'
• 从上面的 "persons" 表中选取居住的城市以 "a" 或 "o" 或 "f" 开头的人
• select * from persons where city like '[!aof]%'
• 从上面的 "persons" 表中选取居住的城市不以 "a" 或 "o" 或 "f" 开头的人