127 then strto = strto & chr(Ascb(MidB(str, i, 1))*256+Ascb(MidB(str, i+1, 1))) i = i + 1 else strto = strto & Chr(AscB(MidB(str, i, 1))) end if next BinaryToString=strto End Function function gainformdata(n) dim formsize,formdata,divider,datastart,dataend redim mydata(n-1) formsize = Request.TotalBytes formdata = Request.BinaryRead(formsize) for i=1 to n bncrlf = chrB(13) & chrB(10) divider = leftB(formdata,clng(instrB(formdata,bncrlf))-1) datastart = instrB(formdata,bncrlf & bncrlf)+4 dataend = instrB(datastart+1,formdata,divider) - datastart-2 mydata(i-1) = midB(formdata,datastart,dataend) formdata=rightB(formdata,clng(formsize-instrB(datastart+1,formdata,divider))+1) formsize=lenB(formdata) next gainformdata=mydata end function Demo: a.htm: b.asp: '链接数据库 data=gainfromdata(2) rs("txt")=binarytostring(data(0)) rs("img").appendchunk=data(1) 3.弹出提示信息 , 确定 与 取消 怎么做的 onclick="{if(confirm('确定删除选定的纪录吗?')){this.document.inbox.submit();return true;}return false;}" 4.组合查询的优化,谢谢 sql = "select * from book where bname like '%" & txtbname.Text & "%' and bauthor like '%" & txtauthor.Text & "%' and bpublish like '%" & txtpublish.Text & "%' and bdescription like '%" & txtdescription.Text & "%' order by bookid desc" 组合查询,有是四个组合条件,这样写是不是效率比较低,我该怎么优化一下呢? 谢谢。 分析,在SQL中,用LIKE是比较费时间的,所以最好是少用。 同时 ,四个TEXT框,输入条件是,一定会有没有输入的条件的时候,就会出现 LIKE "%"的情况,其实这种情况下就等于这个条件没有。 所以,把生成SQL语句的代码多写些, Dim WhereStr as string if txtbname.Text"" then WhereStr="bname like '%" & txtbname.Text & "%'" ELSE IF .... ..... ENDIF 这样是一个概率的问题,如果四个全输入的话,是一样的,但如果只输入一个的问,速度会比你的快些! sql = "select * from book where " If txtbname.Text "" Then sql = sql & "bname like '%" & txtbname.Text & "%'" ElseIf txtauthor.Text "" Then sql = sql & "bauthor like '%" & txtauthor.Text & "%'" ElseIf txtpublish.Text "" Then sql = sql & "bpublish like '%" & txtpublish.Text & "%'" ElseIf txtdescription.Text "" Then sql = sql & "bdescription like '%" & txtdescription.Text & "%' " End If 5.如何禁止刷新 document.onkeydown = function() { if(event.keyCode==116) { event.keyCode=0; event.returnValue = false; } } document.oncontextmenu = function() {event.returnValue = false;} 页面已经禁止刷新 6.sql server 用:sql = "update reg set dealtime=getdate() where id= " & request.querystring("id") 因为 SQL SERVER里没有 now() 这个函数,而是用 getdate() 取代了 所以你的会报错. ACCESS没有这个函数:) 只有date()和now() 7.连结其他数据库的方法(*.dbf,*.txt,excel,foxpro等) ----收藏 2002-10-30 18:41:05 浏览次数:145 '连结dbf文件 '连结foxpro文件 '连结excel文件 '连结txt文件 8.画图:-)   StructuredGraphicsControl1.DrawingSurface.ArcDegrees 0,0,0,30,50,60 StructuredGraphicsControl1.DrawingSurface.ArcRadians 30,0,0,30,50,60 StructuredGraphicsControl1.DrawingSurface.Line 10,10,100,100 9.生成excel 下载excel文件 " rs.open sql,conn,3,2 set xlapp=server.createobject("excel.application") xlapp.Visible = False set mybook=xlapp.Workbooks.Add set mysheet=mybook.worksheets(1) myarray=split(title,"|") '增加表头 for i=0 to ubound(myarray)-1 rangex=ucaSE(chr(65+i)) mysheet.range(rangex & 1 ).value=cstr(myarray(i)) next set myarray=nothing if rs.recordcount>0 then j=1 do while not rs.eof j=j+1'行 for i=0 to rs.fields.count-1 if i" if not isnull(rs.fields(i).value) then mysheet.range(rangex & j ).value=cstr(rs.fields(i).value) end if next rs.movenext loop end if 'response.write rs.fields.count & "" 'response.write rs.recordcount & "" randomize myfilename=Session("UserRealName") & date() & "-" & cint(rnd *10000) & ".xls" mypath=server.mappath("excel.asp") myarray=split(mypath,"\") mypath="" for i=0 to ubound(myarray)-1 mypath=mypath & myarray(i) & "\" next 'response.write mypath & myfilename mybook.saveas(mypath & myfilename) mybook.close xlapp.quit set mysheet=nothing set mybook=nothing set xlapp=nothing %> ">下载 10.下载任何文件(尤其是IE关联打开的) ,Bullcn'Blog - 分享、交流、进步。" /> asp 常见问题 - Bullcn'Blog

asp 常见问题


1.防止用户直接访问页面(防止自制表单提交,直接通过链接访问)
function checkPrePage()
url=request.ServerVariables("HTTP_REFERER")
url=trim(replace(url,"http://",""))
url=trim(left(url,len(request.ServerVariables("SERVER_NAME"))))
if url<>trim(request.ServerVariables("server_name")) then
response.Write("请通过正当的方法访问本网站")
response.End()
end if
end function



2.通过一下的两个函数可以实现图片,文字的同时提交处理。
Function BinaryToString(str)
strto = ""
for i=1 to lenb(str)
if AscB(MidB(str, i, 1)) > 127 then
strto = strto & chr(Ascb(MidB(str, i, 1))*256+Ascb(MidB(str, i+1, 1)))
i = i + 1
else
strto = strto & Chr(AscB(MidB(str, i, 1)))
end if
next
BinaryToString=strto
End Function

function gainformdata(n)
dim formsize,formdata,divider,datastart,dataend
redim mydata(n-1)
formsize = Request.TotalBytes
formdata = Request.BinaryRead(formsize)
for i=1 to n
bncrlf = chrB(13) & chrB(10)
divider = leftB(formdata,clng(instrB(formdata,bncrlf))-1)
datastart = instrB(formdata,bncrlf & bncrlf)+4
dataend = instrB(datastart+1,formdata,divider) - datastart-2
mydata(i-1) = midB(formdata,datastart,dataend)
formdata=rightB(formdata,clng(formsize-instrB(datastart+1,formdata,divider))+1)
formsize=lenB(formdata)
next
gainformdata=mydata
end function

Demo:
a.htm:
<form name="form1" method="post" action="b.asp" enctype="multipart/form-data">
<textarea name="txt"></textarea>
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
</form>

b.asp:
'链接数据库
data=gainfromdata(2)
rs("txt")=binarytostring(data(0))
rs("img").appendchunk=data(1)



3.弹出提示信息 , 确定 与 取消 怎么做的
onclick="{if(confirm('确定删除选定的纪录吗?')){this.document.inbox.submit();return true;}return false;}"



4.组合查询的优化,谢谢
sql = "select * from book where bname like '%" & txtbname.Text & "%' and bauthor like '%" & txtauthor.Text & "%' and bpublish like '%" & txtpublish.Text & "%' and bdescription like '%" & txtdescription.Text & "%' order by bookid desc"

组合查询,有是四个组合条件,这样写是不是效率比较低,我该怎么优化一下呢?
谢谢。

分析,在SQL中,用LIKE是比较费时间的,所以最好是少用。

同时 ,四个TEXT框,输入条件是,一定会有没有输入的条件的时候,就会出现 LIKE "%"的情况,其实这种情况下就等于这个条件没有。

所以,把生成SQL语句的代码多写些,
Dim WhereStr as string
if txtbname.Text<>"" then
WhereStr="bname like '%" & txtbname.Text & "%'"
ELSE IF ....
.....
ENDIF
这样是一个概率的问题,如果四个全输入的话,是一样的,但如果只输入一个的问,速度会比你的快些!

sql = "select * from book where "
If txtbname.Text <> "" Then
sql = sql & "bname like '%" & txtbname.Text & "%'"
ElseIf txtauthor.Text <> "" Then
sql = sql & "bauthor like '%" & txtauthor.Text & "%'"
ElseIf txtpublish.Text <> "" Then
sql = sql & "bpublish like '%" & txtpublish.Text & "%'"
ElseIf txtdescription.Text <> "" Then
sql = sql & "bdescription like '%" & txtdescription.Text & "%' "
End If



5.如何禁止刷新
<SCRIPT LANGUAGE="JavaScript">
document.onkeydown = function() {
if(event.keyCode==116) {
event.keyCode=0;
event.returnValue = false;
}
}
document.oncontextmenu = function() {event.returnValue = false;}
</SCRIPT>
页面已经禁止刷新



6.sql server 用:sql = "update reg set dealtime=getdate() where id= " & request.querystring("id")
因为 SQL SERVER里没有 now() 这个函数,而是用 getdate() 取代了
所以你的会报错.
ACCESS没有这个函数:)
只有date()和now()



7.连结其他数据库的方法(*.dbf,*.txt,excel,foxpro等) ----收藏
2002-10-30 18:41:05 浏览次数:145

'连结dbf文件
<%
' 建立Connection 对象
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Visual FoxPro Driver};"
SourceType = "SourceType=DBF;"
DBPath = "SourceDB=" & Server.MapPath( "Dbf" )

' 调用Open 方法连接数据库
conn.Open Driver & SourceType & DBPath

Set rs = Server.CreateObject("ADODB.Recordset")
' 打开数据源,参数二为Connection对象
rs.Open "Select * From sample", conn, 2, 2
%>
'连结foxpro文件
<%
' 建立Connection 对象
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Visual FoxPro Driver};"
SourceType = "SourceType=DBC;"
DBPath = "SourceDB=" & Server.MapPath( "Dbf/Sample.dbc" )

' 调用Open 方法连接数据库
conn.Open Driver & SourceType & DBPath

Set rs = Server.CreateObject("ADODB.Recordset")
' 打开数据源,参数二为Connection 对象
rs.Open "Select * From sample", conn, 2, 2
%>

'连结excel文件
<%
' 建立Connection对象
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls)};"
DBPath = "DBQ=" & Server.MapPath( "Sample.xls" )

' 调用Open 方法连接数据库
conn.Open Driver & DBPath

Set rs = Server.CreateObject("ADODB.Recordset")
' 打开数据源,参数二为Connection对象
rs.Open "Select * From [成绩单$]", conn, 2, 2
%>

'连结txt文件
<%
'  建立Connection 对象
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Text Driver (*.txt; *.csv)};"
DBPath = "DBQ=" & Server.MapPath( "Text" )

' 调用Open 方法连接数据库
conn.Open Driver & DBPath

Set rs = Server.CreateObject("ADODB.Recordset")
' 打开数据源,参数二为Connection 对象
rs.Open "Select * From sample.txt", conn, 2, 2
%>


8.画图:-)
<OBJECT id=StructuredGraphicsControl1 style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px"
height=240 width=392 classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6">

</OBJECT>
<P> </P>
<SCRIPT LANGUAGE=vbscript>

StructuredGraphicsControl1.DrawingSurface.ArcDegrees 0,0,0,30,50,60
StructuredGraphicsControl1.DrawingSurface.ArcRadians 30,0,0,30,50,60
StructuredGraphicsControl1.DrawingSurface.Line 10,10,100,100

</SCRIPT>


9.生成excel
<!-- #include file=../inc/connect.asp -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>下载excel文件</title>
</head>

<body>
<%
set rs=server.CreateObject("adodb.recordset")
dbopen
sql=request("sql")
sql=replace(sql,"|百分号|",ucase("%"))
title=request("title")
'response.write sql & "<br/>"
rs.open sql,conn,3,2


set xlapp=server.createobject("excel.application")
xlapp.Visible = False
set mybook=xlapp.Workbooks.Add
set mysheet=mybook.worksheets(1)
myarray=split(title,"|")
'增加表头
for i=0 to ubound(myarray)-1
rangex=ucaSE(chr(65+i))
mysheet.range(rangex & 1 ).value=cstr(myarray(i))
next
set myarray=nothing

if rs.recordcount>0 then
j=1
do while not rs.eof
j=j+1'行
for i=0 to rs.fields.count-1
if i<26 then
rangex=ucaSE(chr(65+i))
'response.write rangex & j & "<br/>"
if not isnull(rs.fields(i).value) then mysheet.range(rangex & j ).value=cstr(rs.fields(i).value)
end if
next
rs.movenext
loop
end if

'response.write rs.fields.count & "<br/>"
'response.write rs.recordcount & "<br/>"
randomize
myfilename=Session("UserRealName") & date() & "-" & cint(rnd *10000) & ".xls"
mypath=server.mappath("excel.asp")
myarray=split(mypath,"\")
mypath=""
for i=0 to ubound(myarray)-1
mypath=mypath & myarray(i) & "\"
next
'response.write mypath & myfilename
mybook.saveas(mypath & myfilename)

mybook.close
xlapp.quit

set mysheet=nothing
set mybook=nothing
set xlapp=nothing
%>
<img src="../i/D_Wealth_Out.gif" width="16" height="16"><a name="download" href="<%="download.asp?filename=" & myfilename%>">下载
<%=myfilename%></a>
</body>
</html>



10.下载任何文件(尤其是IE关联打开的)
<%
Dim Stream
Dim Contents
Dim FileName
Dim FileExt
Const adTypeBinary = 1
FileName = Request.QueryString("FileName")
if FileName = "" Then
Response.Write "无效文件名."
Response.End
End if
' 下面是不希望下载的文件
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
Select Case UCase(FileExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
Response.Write "受保护文件,不能下载."
Response.End
End Select
' 下载这个文件
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename=" & FileName
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
%>

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 问题
相关日志:
评论: 0 | 引用: 0 | 查看次数: 488
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 20 字 | UBB代码 关闭 | [img]标签 关闭