ASP VBScript开发技巧

来源:互联网 发布:网络办公平台 编辑:程序博客网 时间:2024/05/18 02:21

现在ASP已经落伍了,没有完全学习的必要,主要的作用是维护和更新一些旧系统。因此,不讲语法,讲操作。

语法可参照:http://www.w3school.com.cn/asp/index.asp

1、 运行环境

Windows 最好是Server,没有那么XP也行。

IIS 5.0以上版本,如果是6.0,那么默认的ASP功能是不开放的。如需开放,请参照:

asp脚本在目前的网页开发方面使用的很广泛,但windows 2003中自带的iis 6.0默认情况下不支持asp脚本,但可以运行aspx程序,这给运行和调试asp代码带了不便。其实,在windows 2003的internet信息管理器中稍加调整,就可以解决这一问题。

点击“开始/程序/管理工具/internet信息管理器”,在iis管理器窗口中,在窗口左侧面板选中“web 服务扩展”,在窗口右侧的属性列表中点击“active server pages”项,可以在状态栏看到该项处于禁止状态(如图1),点击“允许”按钮将该项状态设为允许。此外,在网站列表中选中网站名,在其右键菜单上选择属性,在网站属性窗口中选中“主目录”面板,点击“配置”按钮,在应用程序配置窗口中选中“选项”面板,勾选“启用父路径”项(如图2),这样,iis6.0就可以支持asp了。

2、  连接数据库

新建一个XX.udl的文件,双击打开就是ADO连接字符串生成器了,一路Next即可。

如果是ACCESS数据库,那么请确认是否允许用户名为IIS_XXXXXX的,否则访问ASP页面时会出现拒绝访问数据库的问题。

3、  Ajax及乱码问题

对于服务端脚本,在脚本开头:

PHP:header('Content-Type:text/html;charset=UTF-8');

ASP:Response.Charset="UTF-8"

JSP:response.setHeader("Charset","UTF-8");

注意ASP,很多地方是Response.Charset("UTF-8"),这是不正确的,Charset是属性不是方法,误导了很多人。

 

对于HTML

<head> 

<meta name="description"content="Free Web tutorials" /> 

<meta name="keywords"content="HTML,CSS,XML,JavaScript" /> 

<meta name="author" content="HegeRefsnes" /> 

<meta http-equiv="content-type"content="text/html;charset=UTF-8" /> 

</head> 

charset=编码名称。

对于<script>

<scriptetype="text/javascript" charset="UTF-8">

但是,在实际应用中,特别是页面转换时,会出现前一个页面是UTF-8的,后面页面突然跳到了GB2312,然后乱码了,怎么办?

在服务器asp(PHP,JSP自行查方法)脚本开头中写入

Session.CodePage=65001

保持在这个Session中一直是UTF-8。

如果你想统一成GB2312,那么记得把上面的UTF-8换成GB2312,65001换成936。

这三部完成,基本可以解决乱码问题。

4、  关于<!--include file=”XX.asp”-->

XX.asp可以使用..\conn.asp

Include包含的是代码段,因此,如果包含了on error resume next,那么在整个include该文件的,asp页面中,执行错误语句均不报错。小心慎用。

同名变量也是如此。

5、  代码技巧

5.1组织SQL

Dimsql,rs

Sql=”select* from db1 where 1=1”

iff1<>”” then

       sql=sql & “f1=’” &f1&”’”

endif

iff2<>”” then

       sql=sql & “f2=’” &f2&”’”

endif

注意点是1=1,在没有附加条件情况下,SQL语句各个部分完整照样可以运行。

5.2查询页面包含多个表格

<%if lx=”lx1” then%>

<table id=table1 …..>

</table>

<%else if=”lx2” %>

<table id=table1 …..>

</table>

……

<%end if%>

5.3查询结果导出Excel文件

可以把这部分做成include文件,放在需要导出的页面开头执行

<meta http-equiv="Content-Type"content="application/vnd.ms-excel">

<meta http-equiv="Content-Disposition"content="attachment; filename=ex.xls">

也可以用asp脚本

<%Response.ContentType ="application/vnd.ms-excel"%>

替代原有HTML中的<meta>标签即可。

       导出word,则替换ms-excel为ms-word,ex.xls为wo.doc

5.4打开强制变量声明

<%Option Explicit%>

好处,不好出现笔误引起的错误,比如

Sqll=”select * from db1”

Set rs=conn.execute(sql1)

你跑一辈子都是错的,而且还很难看出错误,debug也很困难。有了强制变量声明,程序会发现sql1不是sqll,那么就好办多了。

 

5.5ADO的特殊设置

游标引起的各种问题

Set rs=conn.Execute(sql),rs会继承conn.CursorLocation,因此,conn.CursorLocation=3,不然rs.RecordCount=-1,,而且不设置游标会影响move方法和addnew,update,updatebatch

当需要rs.update时,请用

Set rs=Server.CreateObject(“ADODB.RecordSet”)

rs. Open sqlstr,conn,1,3

当需要updatebatch时

Open sqlstr,conn,1,4

快速生成表格

<%str=rs.GetString(,,"</td><td>","</td></tr><tr><td>","&nbsp;")%>

<table border="1"width="100%">

  <tr>

   <td><%Response.Write(str)%></td>

  </tr>

</table>

GetString格式:Setstr=objRecordset.GetString(format,n,coldel,rowdel,nullexpr)

 

原创粉丝点击