Database 在ASP classic中添加新ID和数据

Database 在ASP classic中添加新ID和数据,database,asp-classic,Database,Asp Classic,我刚刚继承了一个用经典ASP编写的古老网站。目前急需在短期内更新该网站(尽管他们正准备在几个月内推出一个全新的网站) 经过这么多年,代码有点乱。我以前不知道这种语言,但我知道要点,主要页面调用.asp包括所有这些。基本上是直截了当的。我的工作是更新一些时间表和地图。当我快到终点时,我遇到了后者的问题,在这一页上,我得到了一个似乎是数据库错误的信息: 这应显示与以下链接类似的信息(尽管显然是针对10号线而非7号线): 我遇到的问题是:“路线”10号线正在变为“快速”10号线。现有的命名约定——

我刚刚继承了一个用经典ASP编写的古老网站。目前急需在短期内更新该网站(尽管他们正准备在几个月内推出一个全新的网站)

经过这么多年,代码有点乱。我以前不知道这种语言,但我知道要点,主要页面调用.asp包括所有这些。基本上是直截了当的。我的工作是更新一些时间表和地图。当我快到终点时,我遇到了后者的问题,在这一页上,我得到了一个似乎是数据库错误的信息:

这应显示与以下链接类似的信息(尽管显然是针对10号线而非7号线):

我遇到的问题是:“路线”10号线正在变为“快速”10号线。现有的命名约定——或者至少是他们用于为路线提供ID的约定——是对常规路线/路线使用路线编号,对快速路线使用重复编号。例如,路线7使用ID“7”,而快速7使用ID“77”。考虑到这一点,我分配了ID为“1010”的路线10的快速版本。这对于时间表(链接位于左栏)非常有效

但很明显,它正在为地图分崩离析。我已经从我能想到的每个角度看了它,我不知道是什么导致了这个问题。但由于我对ASP一无所知,这也就不足为奇了

我将“rapid 10”左列链接链接到routeid 1010,在index.asp的第151行,它链接到我只是更改了:

<% if introuteid <> 33 AND  introuteid <> 77 AND introuteid <> 111 then %>


只需将1010添加到字符串中(如果你甚至这样称呼它……对新手、朋友和邻居要温柔),这似乎是在处理快速线路。如果你一定要笑,那就笑吧,但到目前为止,这种技巧已经奏效了!;)

使用上面指向Rapid的链接&作为一个工作示例,有人能告诉我为什么Rapid 10不工作吗?它是不是从数据库(我无法访问)中获取了这些地图信息

任何指导都将不胜感激。哦,是的,明天是我的最后期限。大口喝

以下是该页面的完整代码-仅在1010(rapid 10)时中断:


函数winopen(urlname、winname、feature){
window.open(urlname、winname、feature);
}
欢迎来到蓝色大巴士
线条图







是的,数据似乎来自数据库,
ADODB.Command
用于向数据库发出查询并从中返回数据。在您的案例中确实出现的问题是查询没有返回任何内容(我不知道您的数据库结构,但这个错误很明显)

因此,您应该在查询中检查一切是否正常,或者在数据库中检查数据是否存在。如果所有这些都已验证且均为Ok,则表示此查询返回空,然后在显示数据之前进行检查,以查看记录集是否为空,如下所示:

If Not objRS0.EOF Then

' Do something

End If

顺便说一句,命令和记录集对象的名称不好(objRS0,objRS6),我建议您更改它们以获得更好的名称。

问题是您根据ID在数据库中查找公交线路的名称。表“tblbusroute”没有ID为1010的线路的对应名称,因此出现错误

要解决这个问题,您需要稍微更改代码。首先,现在你有这一行:

Set objRS0 = objCommand5.Execute
将这一行改为此代码块:

Dim sBusRouteName
Set objRS0 = objCommand5.Execute
If objRS0.EOF Then
    sBusRouteName = "Route " & request.querystring("routeid")
Else  
    sBusRouteName = objRS0("name")
End If
这会将适当的名称放入变量中,即使它不在数据库中,然后在代码中进一步更改:

<%=objRS0("name")%>

换言之:

<%=sBusRouteName%>


而且它将在不崩溃的情况下显示正确的名称。

更有可能的是,带有
的行是罪魁祸首,因为objRs6内容位于
If(…)introuteid 1010 Then
块中,不应该执行。但建议仍然是一样的。在尝试显示某些内容之前检查记录。
<%=objRS0("name")%>
<%=sBusRouteName%>