|
|
|
| Есть отчет, который надо открыть с разных форм. Отчет имеет встроенный SQL запрос с условием типа Forms![Сотрудники]![КодСотрудника]. Чтобы такой же отчет открывался с поисковой формы пришлось делать его дубликат, открывающийся с формы поиск по тому же условию. Forms![Поиск]![КодСотрудника]. Можно ли как-то подменить название формы в запросе, в зависимости от того, какая форма есть на экране, чтобы был только один отчет.
Условие типа IIF(forms![Поиск].Visible=True;Forms![Поиск]![КодСотрудника];Forms![Сотрудники]![КодСотрудника]) не срабатывает. | |
|
| |
|
|
|
| это стоит на открытие отчета, просто подредактируешь под себя и все будет ок
Dim sq As String
Dim formname As String
Dim x As String
formname = Screen.ActiveForm.Name
x = "Forms!" + formname + "!хирург"
sq = "SELECT доктора.kod, доктора.хирург FROM доктора WHERE (((доктора.хирург)=" & x & "));"
Me.RecordSource = sq | |
|
| |
|
|
|
| Большое спасибо. Разобрался и подредактировал. Но вот проблемка возникла. В одной базе работает без замечаний с двух форм. А в другой базе не хочет. С одной формы запускается и работает как надо, а с другой формы вдруг выдает сообщение:
Ошибка синтаксиса (пропущен оператор) в выражении запроса '((([Протокол исследования].КодПациента)=Forms!Поиск по фамилии!КодПациента))'.
Хотя имя формы показывает правильно. Чего ему может быть надо, если отчет один и на его открытии стоит указанный код?
PS Не знаю что там было, пришлось снести форму и построить другую тоже ленточную. С нее все работает.
PS Все понятно! Работает везде кроме ленточной формы. . Какого ей-то не так? Ставил кнопку на открытие в заголовок - результат тот же. Не работает так же и если критерий попадает в подчиненную форму. Только с главной. Как быть? | |
|
| |
|
|
|
| как открыть из подчиненной формы незнаю но можно попробовать вытащить значение поля КодПациента на главную форму и далее запускать
либо попробуй Select case
но это глюк наверно прописывать каждую форму, хотя если форм не много то можно и так
на открытие отчета
Dim FormName As String
FormName = Screen.ActiveForm.Name
Select Case FormName
Case "Доктора"
Me.RecordSource = "SELECT доктора.kod, доктора.хирург FROM доктора WHERE (((доктора.хирург)='" & Forms![доктора]![хирург] & "'));"
Case "Доктора1"
Me.RecordSource = "SELECT доктора.kod, доктора.хирург FROM доктора WHERE (((доктора.хирург)='" & Forms![доктора1]![доктора2].Form![хирург] & "'));"
End Select
| |
|
| |
|
|
|
| Да нет, не глюк. Положим что если один отчет открываясь с разных форм должен менять критерий отбора. Это ведь, похоже то, что нужно. Не так ли? Зачем делать 3 одинаковых отчета, если можно с разных мест открывать одно и то же по соответствующему критерию отбора? Я иногда делал меняющий свою структуру запрос, в зависимости от критерия, выбираемого из ниспадающего миню. Но это мутно, на мой взгляд.
А с ленточной формы заработал после того, как снес ее и составил другую. Не знаю что там было не так.
И почему-то пишет ошибку, будто лишняя скобка в условии ")". И сколько этих скобок не убирай, все равно будет лишняя. Странно. | |
|
| |