set xlapp = server.createobject("excel .application")
strsource=filepath & "test.xls"'打开一个已经存在的test.xls文件,filepath为物理绝对路径
xlapp.workbooks.open(strsource)
set xlbook = xlapp.activeworkbook '打开book
set xlsheet = xlbook.worksheets(1) '打开其中的一个sheet
xlsheet.cells(1,1).value="test" '通过设置cell(i,j)里面的i,j来访问sheet里面任意一个cell
xlbook.save '保存该excel 文件
xlbook.saveas filepath & "test2.xls" '另存一个文件
set xlsheet=nothing '一定要关闭,否则以后会一直存在一个无法释放的excel 进程
set xlbook=nothing
xlapp.quit
asp运行端的一些设置
1excel 文件所在的路径目录,要让iuser_即asp运行的用户有读写权限,否则
会报错。
2服务器端还必须要设置com组件的操作权限。在命令行键入“dcomcnfg”,
进入com组件配置界面,选择microsoft excel 后点击属性按钮,将三个单选
项一律选择自定义,编辑中将everyone加入所有权限。保存完毕后重新启动
服务器。
如何使用事务处理、存储过程和视图?
⑴.使用存储过程
①.定义好存储过程
create procedure [output_1]
@sid int output
as
set @sid=2
create procedure [return_1]
(@user_name varchar(40),@password varchar(20))
as
if exists(select id from user_info where user_name=@user_name and password =@password )
return 1
else
return 0
create procedure [user_info_1]
(@user_name varchar(40),@password varchar(20))
as
select id from user_info where user_name=@user_name and password =@password
create procedure [user_info_2]
(@user_name varchar(40),@password varchar(20))
as
set xact_abort on
begin transaction
delete from user_info where user_name=@user_name and password =@password
commit transaction
set xact_abort off
create procedure [user_info_3] as
select * from user_info
②.在asp中调用
use_proc.asp
<!-- #include virtual="/adovbs.inc" -->
<%
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password "
'使用recordset调用带两个输入参数和返回纪录集的存储过程
'create procedure [user_info_1]
'(@user_name varchar(40),@password varchar(20))
'as
'select id from user_info where user_name=@user_name and password =@password
response.write "普通的调用方法:<br>"
set rs=server.createobject("adodb.recordset")
sql="user_info_1 '"&request.querystring("user_name")&"','"&request.querystring("password ")&"'"
rs.open sql,conn,1,1
response.write rs("id")&"<br>"
rs.close
'使用recordset调用无输入参数,返回纪录集的存储过程,可以使用recordcount等属性
'create procedure [user_info_3] as
'select * from user_info
response.write "<br>返回纪录集,可以使用recordcount等属性:"
sql="exec user_info_3"
rs.open sql,conn,1,1
for i=1 to rs.recordcount
response.write "<br>"&rs("user_name")
rs.movenext
next
rs.close
set rs=nothing
'使用command调用带输出参数的存储过程
'create procedure [output_1]
'@sid int output
'as
'set @sid=2
response.write "<br><br>调用带输出参数的存储过程:<br>"
set cmd=server.createobject("adodb.command")
cmd.activeconnection=conn
cmd.commandtext = "output_1"
cmd.parameters.append cmd.createparameter("@sid",adinteger,adparamoutput)
cmd("@sid")=10
cmd.execute()
bbb=cmd("@sid")
response.write bbb&"<br>"
set cmd=nothing
'使用command调用带两个输入参数和返回值的存储过程
'create procedure [return_1]
'(@user_name varchar(40))
'as
'if exists(select id from user_info where user_name=@user_name)
'return 1
'else
'return 0
response.write "<br>调用带两个输入参数和返回值的存储过程:<br>"
set cmd=server.createobject("adodb.command")
cmd.activeconnection=conn
cmd.commandtype = adcmdstoredproc
cmd.commandtext = "return_1"
cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue)
cmd.parameters.append cmd.createparameter("@user_name",advarchar,adparaminput,40)
cmd.parameters.append cmd.createparameter("@password ",advarchar,adparaminput,20)
cmd("@user_name")="tuth"
cmd("@password ")="yyuyu"
cmd.execute()
rrr=cmd("@return_value")
response.write rrr
set cmd=nothing
conn.close
set conn=nothing
%>
效果:
访问http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password =ttt时,出现如下
普通的调用方法:
12
返回纪录集,可以使用recordcount等属性:
ahyi
tet
tuth
调用带输出参数的存储过程:
2
调用带两个输入参数和返回值的存储过程:
1
注意:若存储过程无参数,则调用的sql语句综合 直接为存储过程名,一个参数为“存储过程名 参数”,若是多个参数,则“存储过程名 参数1,参数2,……,参数n”;如果在sql语句综合 中加入exec,则在返回的记录集中可以使用recordcount等属性;如果想获得存储过程的返回值或输出参数,可以使用command对象。
⑵.使用事务处理
①.asp内嵌的事务支持
例子:
use_transaction_1.asp
<%
'asp中使用事务
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password "
conn.begintrans '开始事务
sql="delete from user_info"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
if conn.errors.count>0 then '有错误发生
conn.rollbacktrans '回滚
set rs=nothing
conn.close
set conn=nothing
response.write "交易失败,回滚至修改前的状态!"
response.end
else
conn.committrans '提交事务
set rs=nothing
conn.close
set conn=nothing
response.write "交易成功!"
response.end
end if
%>
②.其他数据库 级的事务
i.创建存储过程
create procedure [user_info_2]
(@user_name varchar(40),@password varchar(20))
as
set xact_abort on
begin transaction
delete from user_info where user_name=@user_name and password =@password
commit transaction
set xact_abort off
ii.在asp中调用
use_transaction_2.asp
<%
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password "
sql="user_info_2 '"&request.querystring("user_name")&"','"&request.querystring("password ")&"'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
set rs=nothing
conn.close
set conn=nothing
%>
讨论:两种方式的优劣?
⑶.使用视图
在其他数据库 中定义好视图之后,在asp中如同使用一个表一样来使用视图