注册 登录
编程论坛 ASP技术论坛

求助:添加函数里的判断不知道为什么失效

zasdcx 发布于 2013-01-09 17:20, 557 次点击
程序代码:
Function InsertDt(DataList)
    Set Rs=Server.CreateObject("Adodb.RecordSet")
    Rs.Open "Select * From ["&DataList&"]",Conn,1,3
    Rs.AddNew
    Rs("Item1")=CheckSql(Trim(Request.Form("Item1")))
    Rs("ItemAddDate") = Now()
    On error resume next
    Rs.Update
    If err.number=0 then
    Response.Write "<script>alert('111');location.href='aa.asp';</script>"
    Else
    Response.Write "<script>alert('222');location.href='aa.asp';</script>"
    End If
    Rs.Close : Set Rs=Nothing
End Function


新手问题,我写的这个用于添加数据的函数,为什么在成功的时候可以弹出 111的提示窗口,但是失败的时候却没有反应,应该会弹出 222的提示窗口的呀?



如果把判断的那一小段加到asp页面中,程序就没有问题,出错时会弹出222的提示窗口。

程序代码:

<%
If Action = "Save" Then
    InsertDt
"Dosden"
   
If err.number=0 then
        Response.Write
"<script>alert('111');location.href='aa.asp';</script>"
   
Else
        Response.Write
"<script>alert('222');location.href='aa.asp';</script>"
   
End If
    Rs.Close :
Set Rs=Nothing
End If
%>



哪位老师可以提点提点啊?

[ 本帖最后由 zasdcx 于 2013-1-9 17:29 编辑 ]
4 回复
#2
zasdcx2013-01-10 09:39
是我说得不清楚吗?怎么没人指点啊?
#3
ysf01812013-01-10 10:56
Function InsertDt(DataList)
    On error resume next
    Set Rs=Server.CreateObject("Adodb.RecordSet")
    Rs.Open "Select * From ["&DataList&"]",Conn,1,3
    Rs.AddNew
    Rs("Item1")=CheckSql(Trim(Request.Form("Item1")))
    Rs("ItemAddDate") = Now()
    Rs.Update
    If err.number=0 then
    Response.Write "<script>alert('111');location.href='aa.asp';</script>"
    Else
    Response.Write "<script>alert('222');location.href='aa.asp';</script>"
    End If
    Rs.Close : Set Rs=Nothing
End Function


#4
zasdcx2013-01-10 16:40
回复 3楼 ysf0181
果然是这里的问题。版主大大真是好人,谢谢~~~
我之前 on error resume next 也是写在这个位置的,但是后来看到有文章说是在提交之前写,才把这句放到了Rs.Update之前。

版主大大,我还可以追加提问吗?因为在您给我答案之前,我试了很多修改,有想不通的地方。
就是:为什么我之前的错误写法的话,不用函数形式直接写到执行的页面,或者将判断分开另写一个判断函数的话,程序运行起来还是没有问题的呢?
比如后面我写了两个函数

程序代码:

Function InsertDt(DataList)
Set Rs=Server.CreateObject("Adodb.RecordSet")
Rs.Open "Select * From ["&DataList&"]",Conn,1,3
Rs.AddNew
Rs("Item1")=CheckSql(Trim(Request.Form("Item1")))
On error resume next
Rs.Update
Rs.Close : Set Rs=Nothing
End Function

Function isRight(isOk,isfail,JumpLink)
If err.number=0 then
Response.Write "<script>alert('"&isOk&"');location.href='"&JumpLink&"';</script>"
Else
Response.Write "<script>alert('"&isfail&"');location.href='"&JumpLink&"';</script>"
End If
End Function


然后执行页面用下面这样调用

程序代码:

If Action = "Save" Then
InsertDt "sdown","搞定了,等着收钱吧!","出错了,快找那个苦B的代码男吧!","test.asp"
End If


这样的话,就算on error resume next放在原来的位置,程序运行起来都正常没有问题。
给版主大大添麻烦了,不过真的很想明白到底这种情况是什么原因,如果版主大大有时间可以解答一下吗?万分感谢。
#5
ysf01812013-01-12 15:33
函数出错的字段,如果字符写错或者没这个字段,系统都不提示,下面代码是不执行的,要是没有 on error resume next
1