ASP开发44条技巧
1. 几个常用函数
Round(pi, 2) 四舍五入
FormatNumber(k,4) ' 把 k 格式化为带四位小数点的数。
eg. 如果k =20000则显示为20,000.00;如果把formatnumber(k,0)则为20,000
Replace(expression,find,replacewith) '返回一字符串,其中指定的子串已被另一个子串替换
Left(String,Length) '返回指定数目的从字符串的左边算起的字符串。
Split(expression[, delimiter[, count[, start]]]) '返回基于 0 的一维数组,其中包含指定数目的子字符串。
eg. 常用这个 Split(String,[delimiter]) ' 用delimiter(用于标识子字符串界限的字符)来划分字符串
Instr(String1,String2) '返回某字符串在另一字符串中第一次出现的位置
eg1. if instr(addation,"密码配置表")<>0 then '说明存在
eg2. if instr(str,”AP”) >0 不好区分str = (AP,AP&AC),此时只要变为(’AP’,’AP&AC’),再用instr(str,”’AP’”)
2. 弹出窗口Pick值
function pickupSP(spdisid,pjnum,pdcode)
{
window.opener.<%=theForm%>.RefNum<%=Spid%>.value=spdisid;
window.opener.<%=theForm%>.LineS<%=Spid%>.value=pjnum;
window.opener.<%=theForm%>.kokey<%=Spid%>.value=pdcode;
window.close();
}
3. ASP控制图片显示的大小(等比例缩放)
New Document
4. ASP中对数据库表的操作(INSERT/UPDATE/DELETE),可使用事务处理,并支持多事务处理.
在ASP的数据库对象链接对象中,提供了一下属性:
BeginTrans 事务开始
CommitTrans 事务提交
RollbackTrans 事务回滚
<%
On Error Resume Next ’错误发生后继续处理
'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
%>
在ASP中,不提供事务的结束,BeginTrans只作用于自己的域,类似于变量声明一样,如果在函数体内BeginTrans,则事物只作用于本函数体,如果BeginTrans在函数体外,处于页面级,则事务的作用域从BeginTrans开始,到页面的结束均处于事务的管理状态下.
5. EasySales数据库操作
dim objCon,objRst,objsql
dim companyid
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open SYSDNS,SYSNAME,SYSPASSWORD
Set objRst = Server.CreateObject("ADODB.RecordSet")
objsql="Select * from PasswordConfig where companyid='"&session("CompanyID")&"'"
objRst.Open objsql,objCon,1,3
6. html格式邮件发送
HTML = ""
HTML = HTML & "
"
HTML = HTML & "Sending CDONTS Email Using HTML"
HTML = HTML & ""
HTML = HTML & ""
HTML = HTML & ""
HTML = HTML & ""
HTML = HTML & "This is a test mail in html
"
HTML = HTML & "Mail content here ...
"
HTML = HTML & ""
HTML = HTML & ""
dim StrRecEmail,StrPosEmail,StrSubject,StrBody
StrRecEmail=request("email")
StrPosEmail="yufh@alleasy.com.cn"
StrSubject="资料下载通知函"
StrBody=HTML
7. input是下划线
style="BORDER-RIGHT: #f7f7f7 0px solid; BORDER-TOP: #f7f7f7 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #f7f7f7 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #f7f7f7"
8. Session & Cookie
写入一个SESSION:
Session["username"])="aa";
Session("username")="aa"
读取一个SESSINN:
string username= Session["username"];
dim username=Session("username")
Cookie与此用法大致相同
9. 几个VB中的常数
下列常数由 Visual Basic for Applications 中的类型库定义,可用来在代码中的任何地方代替实际值:
常数 等于 描述
vbCrLf Chr(13) + Chr(10) 回车符与换行符结合
vbCr Chr(13) 回车符
vbLf Chr(10) 换行符
vbNewLine Chr(13) + Chr(10) 平台指定的新行字符;适用于当前平台
vbNullChar Chr(0) 值为 0 的字符
vbNullString 值为 0 的字符串 用来调用外部过程;与长度为零的字符串 ("") 不同
vbObjectError -2147221504 用户定义的错误号应当大于该值,例如:
Err.Raise Number = vbObjectError + 1000
vbTab Chr(9) Tab 字。
vbBack Chr(8) 退格字符
10. 按钮为不可用
<%if rsView.eof and rsView.bof then %> ‘ 这里有个大问题,下文再说
<%else%>
<%end if%>
11. 报错并返回
if rs.bof and rs.eof then ‘还是有问题
response.write""
end if
-----------------------------------
这个是跳转。
12. 从VBS到JS,混用
<%
dim checkpwdconfig
checkpwdconfig=split(addation,"/")
%>
13. 弹出窗口
用一个连接调用:
请修改密码 onClick="openaddnew()"
图片调用:
.gif" onClick="openaddnew()">
14. 分页
<%
if request("pageno")<>"" then
pageno=int(request("pageno"))
else
pageno=1
end if
sql="Select * from news where [language]='中文' and bigclassname='新闻' order by id desc"
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,3
rs.pagesize=20
if rs.eof then
pageno=0
else
rs.absolutepage=pageno
end if
%>
==========================================
共<%=rs.recordcount%>条,<%=pageno%>/<%=int(rs.pagecount)%>页,每页<%=rs.pagesize%>条
首页
<%if pageno>1 then%>
上一页
<%
end if
if int(pageno)<>int(rs.pagecount)then
%>
下一页
<%end if%>
尾页
<%rs.close%>
<%
call CloseConn()
%>
15. 数据库更新
sql="Select * from [user] where username='"&request("username")&"'"
rs.Open sql,Conn,1,3
rs("usermail")=Request("usermail")
rs("userhome")=Request("userhome"))
rs.update
rs.close
16. 关闭独立窗口
17. 极细表格
18. 几个正则表达式
Require : /.+/,
Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,
Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,
Currency : /^\d+(\.\d+)?$/,
Number : /^\d+$/,
Zip : /^[1-9]\d{5}$/,
QQ : /^[1-9]\d{4,8}$/,
Integer : /^[-\+]?\d+$/,
Double : /^[-\+]?\d+(\.\d+)?$/,
English : /^[A-Za-z]+$/,
Chinese : /^[\u0391-\uFFE5]+$/,
UnSafe :/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
19. Left应用(控制字数)
function title(str)
if len(trim(str))>=28 then
title=left(trim(str),27)&"..."
else
title=trim(str)
end if
end function
20. 判断浏览器
21. 嵌入另一页
-------------------------------------
其实也可以用
22. 全部选定
引用:
23. 如何处理页面执行时发生的错误?
页面错误报告
错误号:<%= Err.Number %>
错误描述:<%= Err.Description %>
错误源:Source <%= Err.Source %>
错误发生行:<%= Err.Line %>
<%
End If
%>
24. 收藏夹图标.
在 HEAD 部分加入下面的内容:
在地址栏加入图标(图标必须是.ico格式,并且要加入收藏后才有效)
在HEAD里加入
25. 校验提交表单(正则表达式应用)
统一一下,以后都这样写
26. 循环
<%
dim sql,rs
set rs=server.createobject("ADODB.recordset")
sql="Select * from news where bigclassname='解决方案'"
rs.open sql,conn,1,3
for k=1 to rs.recordcount
if rs.eof then
exit for
else
%>
asfasdf |
<%
rs.movenext
end if
next
%>
27. 另一个只能输入数字代码
28. 有选择显示
function showco(va)
{
if (va=="CO")
{
RefNum.style.display=''; //不再用这个可以直接用 block
buttonsp.style.display='none';
}
if (va=="SP")
{
buttonco.style.display='none';
buttonsp.style.display='';
kokey.style.display='';
}
if (va=="Inventory")
{
RefNum.style.display='none'; //不显示
Reftr.style.display="block"; //显示
}
调用:
<Select name="RefType" style='width:77pt' onChange="showco(this.value)">
Select>
选择显示行
也可以用
29. 调试参数显示规范
Response.Write session("LoginCompanyId")&","&Date&","&Request.Form("Owner")&","&Request.Form("Name")&
//注意最后没有"只是在,之间用"," 其他用&&引用即可
//也就是说只是用 &","& 中间加一个逗号,其他的该怎么写,就怎么写
Response.End
30. 从数据库填充下拉菜单
<%
sql = "Select * from BigClass"
rs.open sql,conn,1,1
%>
<Select name="BigClassName" size="1">
<%
rs.movenext //不能少,否则重复
do while not rs.eof
%>
<%
rs.movenext
loop
rs.close
%>
Select>
//以下是新方法
<Select name="SrcNo">
<%do while not SrcRs.eof%>
<%
SrcRs.movenext
loop
SrcRs.close
%>
Select>
31. 确认操作
function ConfirmDel()
{
if(confirm("确定要删除吗?一旦删除将不能恢复!"))
return true;
else
return false;
}