我之前从未使用过这样的代码,并且在如何将代码输出到asp经典页面时迷失了方向。 我试过简单地调用rs(“theFile”)然而,这不起作用。 它打破并给我一个错误。
这是带有演示线的代码输出。 我需要在经典ASP页面中将代码与SSMS中输出的代码相同。
Set sqlGetSong = Server.CreateObject("ADODB.Command")
sqlGetSong.ActiveConnection=EV_WikiConn
sqlGetSong.Prepared = true
sqlGetSong.commandtext = "DECLARE @seperator INT;" & vbCrLf & _
"Declare @String nvarchar(max);" & vbCrLf & _
"Declare @Tab TABLE (DT VARCHAR(100));" & vbCrLf & _
"set @String='File_Date_(Jan_21,_1976) / File_Date_(Mar_18,_1996) / File_Date_(Jan_22,_1983) / File_Date_(Jan_20,_1983) / File_Date_(Jan_14,_1976) / File_Date_(Jan_18,_1979) / File_Date_(Dec_18,_1979)';" & vbCrLf & _
"WHILE (CHARINDEX('/', @String, 0) > 0) BEGIN" & vbCrLf & _
"SET @seperator = CHARINDEX('/', @String, 0);" & vbCrLf & _
"INSERT INTO @Tab (DT) SELECT RTRIM(LTRIM(SUBSTRING(@String, 0, @seperator)));" & vbCrLf & _
"SET @String = STUFF(@String, 1, @seperator, '');" & vbCrLf & _
"END" & vbCrLf & _
"INSERT INTO @Tab (DT) SELECT RTRIM(LTRIM(@String));" & vbCrLf & _
"select DT as theFile from" & vbCrLf & _
"(select right(REPLACE(DT,right(DT,7),''),2)DY, right(REPLACE(DT, ')',''), 4)YR, * from @Tab) A" & vbCrLf & _
"order by YR, DY;"
set rsSongs = sqlGetSong.execute
if rsSongs.eof then
' show records here
end if
这给我一个错误:
if rsSongs.eof then
关闭对象时不允许操作。
有人可以告诉我如何将此代码输出到Classic ASP。 谢谢 韦恩
答案 0 :(得分:1)
我已使用Lankymart提供的信息更新了代码。现在一切都很美妙。
Lankymart,如果您想获取此信息并将其作为您自己的信息,我会接受您作为答案。
Set sqlGetSong = Server.CreateObject("ADODB.Command")
sqlGetSong.ActiveConnection=EV_WikiConn
sqlGetSong.Prepared = true
sqlGetSong.commandtext = "SET NOCOUNT ON DECLARE @seperator INT;" & vbCrLf & _
"Declare @String nvarchar(max);" & vbCrLf & _
"Declare @Tab TABLE (DT VARCHAR(100));" & vbCrLf & _
"set @String='File_Date_(Jan_21,_1976) / File_Date_(Mar_18,_1996) / File_Date_(Jan_22,_1983) / File_Date_(Jan_20,_1983) / File_Date_(Jan_14,_1976) / File_Date_(Jan_18,_1979) / File_Date_(Dec_18,_1979)';" & vbCrLf & _
"WHILE (CHARINDEX('/', @String, 0) > 0) BEGIN" & vbCrLf & _
"SET @seperator = CHARINDEX('/', @String, 0);" & vbCrLf & _
"INSERT INTO @Tab (DT) SELECT RTRIM(LTRIM(SUBSTRING(@String, 0, @seperator)));" & vbCrLf & _
"SET @String = STUFF(@String, 1, @seperator, '');" & vbCrLf & _
"END" & vbCrLf & _
"INSERT INTO @Tab (DT) SELECT RTRIM(LTRIM(@String));" & vbCrLf & _
"select DT as theFile from" & vbCrLf & _
"(select right(REPLACE(DT,right(DT,7),''),2)DY, right(REPLACE(DT, ')',''), 4)YR, * from @Tab) A" & vbCrLf & _
"order by YR, DY;"
set rsSongs = sqlGetSong.execute
while not rsSongs.eof%>
<%=rsSongs("theFile")%><br />
<%rsSongs.movenext
Wend
'set rsSongs = rsSongs.Nextrecordset ' was not needed
谢谢 韦恩
答案 1 :(得分:0)
您需要在使用记录集之前打开连接:
EV_WikiConn.Open
另外:这似乎是一种非常尴尬的方式来做一些简单的字符串操作。人们想知道为什么你在这里连接到数据库,这个数据可以按照正确的顺序硬编码到一个数组中。