おそらく、クエリ全体が再度実行されてから、フィルターが適用されます。
すべての項目に対して 1 つのループを作成し、必要なデータをローカル変数に格納してから、独自のフィルターを作成します。最高の効率、はるかに優れた制御。
たとえば、これら 2 つのフィールドでフィルター処理されたデータが必要な場合は、次のように Dictionary を使用します。
Dim oCommodity_CropYear_Data, curKey
Dim curCommodityID, curCropYear, curData
Set oCommodity_CropYear_Data = Server.CreateObject("Scripting.Dictionary")
Do Until rsAvgPrice.EOF
curCommodityID = rsAvgPrice("CommodityID")
curCropYear = rsAvgPrice("CropYear")
curKey = curCommodityID & "_" & curCropYear
curData = "field1: " & rsAvgPrice("somefield") & ", field 2: " & rsAvgPrice("other_field") & "<br />"
oCommodity_CropYear_Data(curKey) = oCommodity_CropYear_Data(curKey) & curData
rsAvgPrice.MoveNext
Loop
rsAvgPrice.Close
次に、ループでデータを抽出します。
For x=1 To 30
For y=1 To 12
curKey = x & "_" y
If oCommodity_CropYear_Data.Exists(curKey) Then
Response.Write("Data for Commodity " & x & " and CropYear " & y & ":<br />" & oCommodity_CropYear_Data(curKey)
End If
Next
Next
これは一般的な考え方です。実際のニーズに合わせて使用できることを願っています。