Использование текстовых полей в качестве критерия для списков в Access 2016 - PullRequest
0 голосов
/ 22 мая 2019

У меня есть форма, в которой есть 3 списка, которые я пытаюсь запросить на основе диапазона, заданного из 2 полей ввода / текста. Я не уверен, как заставить скрипт смотреть на текстовые поля.

Me.lstDailytop.RowSource = " SELECT StockCode, SumOfQTY, Date from qrytpdailystck WHERE [Date] BETWEEN  Me.txtStart.Value And Me.txtEnd.Value"

Me.lstMonthlytop.RowSource = " SELECT StockCode, SumOfQTY, Date from qrytpmonthstck WHERE [Date] BETWEEN Me.txtStart.Value AND Me.txtEnd.Value "

Me.lstYearlytop.RowSource = " SELECT StockCode, SumOfQTY, Date from qrytpyearstck WHERE [Date] BETWEEN Me.txtStart.Value AND Me.txtEnd.Value "

Когда я запускаю это, он запрашивает значение Me.txtStart.value и Me.txtEnd.value. Я предполагаю, что есть способ дать VBA знать, что он ссылается на объект, а не на переменную. Я не могу понять это. Надеюсь, кто-то знает, что я делаю не так.

1 Ответ

1 голос
/ 22 мая 2019

Просто объедините значения, которые требуют преобразования даты из строки. Обязательно также 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...