Asp classic 删除下拉列表ASP CLASSIC中的重复项

Asp classic 删除下拉列表ASP CLASSIC中的重复项,asp-classic,Asp Classic,我从数据库中检索了所有记录,由于将所有记录都推到下拉列表中,所以有很多重复记录 代码: 不使用distinct的原因是此查询需要其他字段 之前: 201320132012013,。。。。。2014,2014... 201520152015 我想筛选下拉列表中的记录,使其成为: 201320142015 我知道在循环之间需要一个条件,但我不知道 请帮忙。谢谢 下面是我的代码: response.write(" <select name=""year1"">") Do While not

我从数据库中检索了所有记录,由于将所有记录都推到下拉列表中,所以有很多重复记录

代码:

不使用distinct的原因是此查询需要其他字段

之前:

201320132012013,。。。。。2014,2014... 201520152015

我想筛选下拉列表中的记录,使其成为:

201320142015

我知道在循环之间需要一个条件,但我不知道

请帮忙。谢谢

下面是我的代码:

response.write(" <select name=""year1"">")
Do While not rs.eof
    nDateHoliday = rs("date_holiday")
    Ndate= year(nDateHoliday)
    response.write("<option value=" & Ndate & ">" & Ndate & "</option>" & vbCrLf)
    rs.MoveNext()
Loop
response.write("</select>")
response.write(“”)
做而不做
nDateHoliday=rs(“日期和假日”)
n日期=年(n日期)
response.write(“&Ndate&”&vbCrLf)
R.MoveNext()
环
回答。写(“”)

您是否可以更改查询以返回不同的年份列表,或者它是否也返回其他数据?

我更喜欢简单地将不同的值存储在动态数组中,在每次迭代中检查当前项是否不存在:

Dim arrDates(),x,blnExists
重拨到达日期(-1)
做而不做
nDateHoliday=rs(“日期和假日”)
n日期=年(n日期)
blnExists=False
对于x=0到UBound(arrDates)
如果到达日期(x)=n则
blnExists=True
退出
如果结束
下一个
如果不是(blnExists),则
ReDim保留到达日期(UBound(到达日期)+1)
到达日期(UBound(arrDates))=数据
下一个
R.MoveNext()
环
rs.Close
回答。写(“”)
对于x=0到UBound(arrDates)
响应。写入(“&arrDates(x)&”&vbCrLf)
下一个
回答。写(“”)
删除日期

注意:如果您在
rs
中有很多记录,例如超过100条,您最好使用字典之类的工具,它具有更快的搜索速度。

如建议阴影向导所示,您可以使用字符串:

Dim sYears, iTmp
sYears = ""
Do while not rs.Eof
    iTmp = CStr(Year(rs("date_holiday")))
    If (InStr(sYear, "," & iTmp) = -1) Then
        sYears = sYears & "," & iTmp
    End If
    rs.MoveNext
Loop
If (Len(sYears) >= 1) Then
    sYears = Mid(sYears, 2)
End If
Dim arrYears
arrYears = Split(sYears, ",")
' print array

谢谢你们的努力,我终于解决了我的问题再次感谢

干杯

Dim arrDates(), x, blnExists



Dim arrYear


arrYear = rs.GetRows()



Set objDictionary = CreateObject("Scripting.Dictionary")



For Each strItem in arrYear

    If Not objDictionary.Exists(strItem) Then
        objDictionary.Add strItem, strItem


    End If

Next

intItems = objDictionary.Count - 1

ReDim arrItems(intItems)

i = 0



For Each strKey in objDictionary.Keys
    arrItems(i) = strKey
    i = i + 1
Next


'display out'
    response.write(" <select name=""year4"">")

For Each strItem in arrItems


   response.write("<option value=" & strItem & ">" & strItem & "</option>" & vbCrLf)
Next

            response.write("</select>")
yearReq4=Request.Form("year4")
Dim arrDates(),x,blnExists
暗淡的阿里年
arrYear=rs.GetRows()
Set objDictionary=CreateObject(“Scripting.Dictionary”)
一年中的每一步
如果不存在objDictionary.Exists(strItem),则
对象描述。添加横线,横线
如果结束
下一个
inititems=objDictionary.Count-1
重拨项目(初始项目)
i=0
对于objDictionary.key中的每个strKey
项目(i)=斯特基
i=i+1
下一个
“显示出来”
回答。写(“”)
每一项中的每一项
响应。写入(“&strItem&”“&vbCrLf)
下一个
回答。写(“”)
yearReq4=请求表(“year4”)

由于其他函数需要,我需要它返回额外的数据,或者有没有办法在一个asp页面中同时运行两个sql查询?
Dim arrDates(), x, blnExists



Dim arrYear


arrYear = rs.GetRows()



Set objDictionary = CreateObject("Scripting.Dictionary")



For Each strItem in arrYear

    If Not objDictionary.Exists(strItem) Then
        objDictionary.Add strItem, strItem


    End If

Next

intItems = objDictionary.Count - 1

ReDim arrItems(intItems)

i = 0



For Each strKey in objDictionary.Keys
    arrItems(i) = strKey
    i = i + 1
Next


'display out'
    response.write(" <select name=""year4"">")

For Each strItem in arrItems


   response.write("<option value=" & strItem & ">" & strItem & "</option>" & vbCrLf)
Next

            response.write("</select>")
yearReq4=Request.Form("year4")