0

データベースからすべてのレコードを取得しましたが、すべてのレコードをドロップダウン リストにプッシュしたため、多くの重複があります。

コード:

SQL = "SELECT * FROM insite.holiday where calendar_Type= '" &sCalendarType& "' order by date_holiday"

個別を使用しない理由は、このクエリに他のフィールドが必要であるためです。

前:

2013,2013,2013,2013,..... 2014,2014... 2015,2015,2015...

ドロップダウンリストのレコードをフィルタリングして、次のようにしたい:

2013,2014,2015

ループの間に条件が必要なのはわかっていますが、わかりません。

助けてください。ありがとう

以下は私のコードです:

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>")
4

4 に答える 4

0

年の別のリストを返すようにクエリを変更できませんでしたか、それとも追加のデータも返していますか?

于 2013-06-17T09:28:20.270 に答える
0

個々の値を動的配列に単純に格納し、現在のアイテムがまだ存在しないことを各反復でチェックすることを好みます。

Dim arrDates(), x, blnExists
ReDim arrDates(-1)
Do While not rs.eof
    nDateHoliday = rs("date_holiday")
    Ndate= year(nDateHoliday)
    blnExists = False
    For x=0 To UBound(arrDates)
        If arrDates(x)=Ndate Then
            blnExists = True
            Exit For
        End If
    Next
    If Not(blnExists) Then
        ReDim Preserve arrDates(UBound(arrDates) + 1)
        arrDates(UBound(arrDates)) = Ndate
    Next
    rs.MoveNext()
Loop
rs.Close
response.write(" <select name=""year1"">")
For x=0 To UBound(arrDates)
    response.write("<option value=""" & arrDates(x) & """>" & arrDates(x) & "</option>" & vbCrLf)
Next
response.write("</select>")
Erase arrDates

: に多数のレコードrs(たとえば 100 以上) がある場合は、検索が高速な Dictionary などを使用することをお勧めします。

于 2013-06-17T10:54:32.073 に答える
0

Shadow Wizard が提案するように、年を収集するために配列を使用する代わりに、文字列を使用できます。

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
于 2013-06-17T13:18:18.690 に答える
0

あなたのハードワークに感謝します。私はついに私の質問を解決しました。ありがとう。

乾杯

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")
于 2013-06-19T08:28:38.697 に答える