Просто объедините значения, которые требуют преобразования даты из строки. Обязательно также Requery
после назначения оператора
Dim whereClause As String
whereClause = " WHERE [Date] BETWEEN CDate('" & Me.txtStart.Value & "')" _
& " AND CDate('" & Me.txtEnd.Value & "')"
Me.lstDailytop.RowSource = "SELECT StockCode, SumOfQTY, [Date] FROM qrytpdailystck " & whereClause
Me.lstDailytop.Requery
Me.lstMonthlytop.RowSource = "SELECT StockCode, SumOfQTY, [Date] FROM qrytpmonthstck " & whereClause
Me.lstMonthlytop.Requery
Me.lstYearlytop.RowSource = "SELECT StockCode, SumOfQTY, [Date] FROM qrytpyearstck " & whereClause
Me.lstYearlytop.Requery
Кроме того, вы можете отказаться от создания объединенной строки SQL и использовать один оператор запроса непосредственно в элементах управления формы с абсолютной ссылкой. Использование NZ()
запросов может вместить, если значения даты в форме пустые или нет.
SQL (сохранить нижеприведенные операторы в качестве назначений по умолчанию в каждом поле со списком RowSource
в разделе свойств, никогда не будет изменено)
SELECT StockCode, SumOfQTY, [Date]
FROM qrytpdailystck
WHERE [Date] BETWEEN NZ(Forms!myFormName!txtStart, [Date])
AND NZ(Forms!myFormName!txtEnd, [Date])
SELECT StockCode, SumOfQTY, [Date]
FROM qrytpmonthstck
WHERE [Date] BETWEEN NZ(Forms!myFormName!txtStart, [Date])
AND NZ(Forms!myFormName!txtEnd, [Date])
SELECT StockCode, SumOfQTY, [Date]
FROM qrytpyearstck
WHERE [Date] BETWEEN NZ(Forms!myFormName!txtStart, [Date])
AND NZ(Forms!myFormName!txtEnd, [Date])
VBA (запустить ниже при необходимости триггерного события в макросе или модуле)
Me.lstDailytop.Requery
Me.lstMonthlytop.Requery
Me.lstYearlytop.Requery