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