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

类型不匹配(高手请进)

thbwn 发布于 2008-01-22 09:06, 2532 次点击
我想通过BoardName从数据库取BoardID的值,但网页出现如下错误:

错误类型:
Microsoft VBScript 运行时错误 (0x800A000D)
类型不匹配
/bbs/Archive_view.asp, 第 17 行

<!--#include file="inc.asp"-->
<!--#include file="inc/ubb_Cls.asp"-->
<%
If Not BBS94KK.Founduser then
BBS94KK.GoToErr(10)
End If
Dim Rs,SQL,TopicCaption,UserName,SqlAdd
Dim BBS94KK_ubb,ID
Dim rootid,topic,postbuyuser,bgcolor,EmotPath
SqlAdd=" WHERE  boardid not in(12)" '禁止列出这个版面
        ID=BBS94KK.CheckNum(request.querystring("ID"))
        IF BBS94KK.BoardID=0 or Id=0 or BBS94KK.TB=0 or not BBS94KK.Fun.isInteger(BBS94KK.BoardID) then BBS94KK.GoToErr(1)
        Set BBS94KK_ubb=New BBS94KKubb_Cls
    Dim Tempwrite,Templist,BoardName,BoardID
    BoardName=Request("BoardName")
    sql="select BoardID from KK_Board where BoardName="&BoardName&""
    BoardID=rs("BoardID")  
  
         
        Tempwrite="<div class=pagebody><div id=navbar><a href={$forumurl}Archive_index.asp>{$forumname}</a> >> <a href={$forumurl}Archive_index.asp?boardid={$boardid}&BoardType=&BoardName={$boardname}>{$boardname}</a></div><p class=largefont>查看完全版本: <a href={$forumurl}Show.asp?boardid={$boardid}&id={$announceid}&TB={$TB}>{$topic}</a></p>{$bbslist}<div id=copyright>"&BBS94KK.Info(0)&"文档集 <a href="&BBS94KK.Info(1)&">"&BBS94KK.Info(0)&"</a></div></div>"
        Tempwrite=Replace(Tempwrite,"{$forumname}",BBS94KK.Info(0))
        Tempwrite=Replace(Tempwrite,"{$forumurl}","")
        Tempwrite=Replace(Tempwrite,"{$boardid}",BBS94KK.BoardID)
        Tempwrite=Replace(Tempwrite,"{$boardname}",server.htmlencode(Request("BoardName")))
        Tempwrite=Replace(Tempwrite,"{$announceid}",Id)
        Tempwrite=Replace(Tempwrite,"{$TB}",BBS94KK.TB)
        
        Sql="Select Name,Caption,Content,Addtime,UbbString From [KK_Bbs"&BBS94KK.TB&"] "&SQlAdd&" and (TopicID="&ID&" Or ReplyTopicID="&ID&") And BoardID="&BBS94KK.BoardID&" and IsDel=0 Order by BBSid"

        Set Rs=BBS94KK.Execute(Sql)
        If Rs.Eof And Rs.Bof Then
                BBS94KK.GoToErr(11)
        Else
                topic=Rs("Caption")
                Tempwrite=Replace(Tempwrite,"{$topic}",BBS94KK.Fun.HtmlCode(Rs("Caption")))
                Do While Not Rs.Eof
                BBS94KK_ubb.UbbString=Rs("UbbString")
                Templist=Templist&"<div class=post><div class=username id=u1><b> 作者: "&Rs("Name")&"</b></div><div class=posttext id=p1><i>"&Rs("Addtime")&"</i><br>"&BBS94KK_ubb.UBB(Rs("Content"),1)&"</div></div>"
                Rs.movenext
                loop
                Tempwrite=Replace(Tempwrite,"{$bbslist}",Templist)
%>
<html>
<head>
<title><%=BBS94KK.Info(0)&" - "&server.HtmlEncode(Topic)%></title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" >
<link rel="stylesheet" href="archive.css">
</head>
<body>
<%Response.write Tempwrite
        End if
Set BBS94KK=Nothing
        %>
<br><br>
</body></html><%
Function SimJsReplace(str)
        If IsNull(str) Or str="" Then Exit Function
        str=Replace(str,"\","\\")
        str=Replace(str,"'","\'")
        SimJsReplace=str
End Function
%>
<%
Response.write ""&BoardID&""
%>


[[italic] 本帖最后由 thbwn 于 2008-1-22 09:07 编辑 [/italic]]
15 回复
#2
madpbpl2008-01-22 10:29
sql="select BoardID from KK_Board where BoardName='"&BoardName&"'"
改成这样试试
#3
thbwn2008-01-22 11:12
问题依然存在
错误类型:
Microsoft VBScript 运行时错误 (0x800A000D)
类型不匹配
/bbs/Archive_view.asp, 第 17 行

17行代码是:
BoardID=rs("BoardID")

[[italic] 本帖最后由 thbwn 于 2008-1-22 11:14 编辑 [/italic]]
#4
永夜的极光2008-01-22 11:22
少了一句
rs.open sql,conn,1,1
#5
thbwn2008-01-22 12:00
加后出现新情况
BoardName=Request("BoardName")
    sql="select BoardID from KK_Board where BoardName="&BoardName&""
    rs.open sql,conn,1,1   '17行
    BoardID=rs("BoardID")   

错误提示:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: ''
/bbs/Archive_view.asp, 第 17 行

[[italic] 本帖最后由 thbwn 于 2008-1-22 12:02 编辑 [/italic]]
#6
madpbpl2008-01-22 12:03
不会缺少数据库链接文件吧
#7
Kettyjin19832008-01-22 13:44
sql语句写成这样
sql="select BoardID from KK_Board where BoardName='"&BoardName&"'"
rs.open sql,conn,1,1
#8
thbwn2008-01-22 15:22
连接文件不缺:<!--#include file="inc.asp"-->


错误提示:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: ''
/bbs/Archive_view.asp, 第 17 行
#9
skybirdzw2008-01-22 23:53
回复 8# 的帖子
set rs=server.createobject("adodb.recordset")
有这句吗?
#10
madpbpl2008-01-23 00:39
原帖由 [bold][underline]skybirdzw[/underline][/bold] 于 2008-1-22 23:53 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1186064&ptid=198261][/url]
set rs=server.createobject("adodb.recordset")
有这句吗?

这点我也考虑过,但是有这样一句
Set Rs=BBS94KK.Execute(Sql)
#11
flynet2008-01-23 01:11
原帖由 [bold][underline]madpbpl[/underline][/bold] 于 2008-1-23 00:39 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1186082&ptid=198261][/url]

这点我也考虑过,但是有这样一句
Set Rs=BBS94KK.Execute(Sql)

这个相当于conn 你定义了 set BBS94KK =Server.CreateObject("ADODB.Connection")了吗
#12
madpbpl2008-01-23 01:54
原帖由 [bold][underline]flynet[/underline][/bold] 于 2008-1-23 01:11 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1186092&ptid=198261][/url]

这个相当于conn 你定义了 set BBS94KK =Server.CreateObject("ADODB.Connection")了吗

楼主的意思是定义了,在头部包含的文件里。
#13
thbwn2008-01-23 08:08
相关文件代码,供高手参考!
inc.asp代码:

<!-- #include File="Conn.asp" -->
<!-- #include File="Inc/94kk_Cls.asp" -->
<!-- #include File="Inc/Fun_Cls.asp" -->
<%
Dim BBS94KK
Set BBS94KK = New Cls_94KK
BBS94KK.Config()
'If Instr(BBS94KK.BbsURL,"admin_")=0 Then
BBS94KK.CheckUser()
%>


conn.asp代码:
<%@LANGUAGE="VBSCRIPT"%>
<%
Option Explicit
Response.Buffer = True
'Session.CodePage=936
Const Timeset=0 '时区相对东八区(北京时间)
Dim Conn,StartTime,PageUrl,CacheName
StartTime = Timer()
PageURL=Lcase(Request.ServerVariables("URL"))
CacheName="94KK"&Replace(left(PageURL,instrRev(PageURL,"/")),"/","")
Sub ConnectionDatabase
    Dim Db,ConnStr
    on error resume next
    '======================
    Db="Data/94kk.asp"     '修改双引号里面数据库名称
    '======================
    Set conn=Server.CreateObject("ADODB.Connection")
    ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.mappath(Db)
    Conn.Open ConnStr
    If Err Then
        Err.Clear
        Set Conn = Nothing
        Response.Write "数据连接错误!"
        Response.End
    End If
End Sub
%>
#14
dhdhzzw2008-01-23 09:18
把time()改成getdate 试一试。。
Const Timeset=0 '时区相对东八区(北京时间)
Dim Conn,StartTime,PageUrl,CacheName
StartTime = Timer()                 ///////----getdate
PageURL=Lcase(Request.ServerVariables("URL"))
#15
madpbpl2008-01-23 11:05
1.检查是否调用sub ConnectionDatabase
这个模板程序还是楼主自己测试比较方便,肯定是数据库链接的问题。
2.试试
Set Rs=BBS94KK.Execute(Sql)
改成
Set Rs=Conn.Execute(Sql)
#16
gdk20062008-01-23 13:41
一般的“类型不匹配”可能是SQL语句的问题,但是有时候也是因为你多处用RS,而在前面一个RS中没有清除掉的原因,还有就是在一个RS记录集中调用了其他的RS。比如:
set rs=conn.Execute(SQL)
……
中间这里调用了一个函数或者过程,而这个函数或者过程中也有RS记录集,这样就可能导致下面RS类型不匹配。

tt=rs("tt")'=这里可能会提示类型不匹配=
……
set rs=nothing
1