Откройте отчет, созданный на основе запроса через VBA, и введите данные для запроса, чтобы создать форму. - PullRequest
1 голос
/ 02 мая 2019

У меня есть 2 отчета (оба из запросов), и мне нужно открыть другой, в зависимости от ввода пользователя, и я попытался использовать DoCmd для установки параметров, а затем открыть форму, но это не работает (мой это потому, что я пытаюсь ввести информацию в запрос, но открываю форму).

Sub macro1()

Dim year As Integer
Dim month As Integer

year = InputBox("What year would you want to get data from?")
month = InputBox("What month would you want to get data from")

DoCmd.SetParameter "[äëðñ ùðä]", year
DoCmd.SetParameter "[äëðñ çåãù]", month

If Not IsNull(DLookup("[÷åã èåøðéø]", "[àãîéðñèøöéä ùì úçøåéåú]", "DateDiff('m', [úàøéê çæøä îäèåøðéø], DateSerial(" & year & ", " & month & ", 1)) = 0")) Then
DoCmd.OpenReport "äëðñåú äåöàåú", acViewNormal
Else
DoCmd.OpenReport "äëðñåú äåöàåú ìôé çåãù", acViewNormal
End If
End Sub

прямо сейчас он только что показал ошибку при переходе на открытую строку отчета (любую). ошибка говорит о том, что открытый отчет не поддерживает параметры передачи.

Ответы [ 2 ]

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

Я бы использовал

DoCmd.OpenReport "MyReport",acviewnormal, , ,

В запросе, основанном на отчете, укажите критерии для полей, для которых вы хотите иметь всплывающие окна.Например, в поле даты критерием будет [Какой год вы хотите получить данные?]

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

Вместо использования параметров, используйте параметр WHERE Condition, равный OpenReport

Пример:

DoCmd.OpenReport "My Report", acViewNormal, , "Year(MyDateField)=" & year & " AND Month(MyDateField)=" & month
...