php和vba哪个难,VBA与SQL哪个比较难?哪个比较高效?

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" 开头的人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值