Гиперссылка отчета MS Access на форму

Привет, я создал базу данных, и я пытаюсь сделать так, чтобы при нажатии на поле в отчете он переходил к форме с соответствующим полем.

У меня есть таблица «tblPagers», форма «frmPagers» и отчет «Отчет о клиентах».

В таблице у меня есть поле PagerID и имя пользователя... В моем отчете я хочу щелкнуть имя пользователя, и оно приведет меня к моим frmPagers в текущей записи. У меня проблемы с моим условием «Где».

У меня есть:

If IsNull([User Name]) Then
Beep
End If
If Not IsNull([User Name]) Then
OpenForm
 Form Name frmPagers
 View Form
Where Condition (this is where I have the problem)
Data Mode Edit
Window Mode Dialog

Для моего условия where я пробовал =="[Pager ID]="&[User Name] Когда я нажимаю на пустое имя пользователя, он издает звуковой сигнал. Однако, если я нажимаю на имя пользователя, я получаю эту ошибку. «Синтаксическая ошибка (отсутствует оператор) в выражении запроса «[ID пейджера] = Сэм Холл».»


person Shawn    schedule 06.10.2017    source источник
comment
Для ясности If IsNull([UserName])Then   -  person Shawn    schedule 09.10.2017


Ответы (1)


Является ли [ID пейджера] текстовым полем? Действительно ли он хранит текст имени пользователя? Подозреваю, что нет обоих.

Пытаться:

If IsNull(Me.[User Name]) Then
    Beep
Else
    DoCmd.OpenForm "frmPagers", , , "[User Name]='" & Me.[User Name] & "'", acFormEdit, acDialog
End If

Если необходимо использовать макрос, WHERE CONDITION будет выглядеть так:
[User Name] = Reports![Customer Report]![User Name]

Не советуйте использовать пробелы или знаки пунктуации/специальные символы (только исключение подчеркивания) в соглашении об именах. Лучше было бы UserName или User_Name, PagerID или Pager_ID.

person June7    schedule 07.10.2017
comment
Спасибо за ответ. Идентификатор пейджера — это мой первичный ключ. Имя пользователя находится в той же таблице. Спасибо за совет по правилам именования. - person Shawn; 09.10.2017
comment
Мне не нужно окно сообщения, потому что это просто ссылка быстрого доступа из отчета, который отправляется конечному пользователю, в форму, в которую вводятся данные. - person Shawn; 09.10.2017
comment
Ошибка отображает правильную информацию: синтаксическая ошибка в строке в выражении запроса '[PagerID]='John Doe'. Это правильное имя пользователя для этого идентификатора пейджера. Однако он не открывает форму. Если я уберу условие Where. Форма открывается, но не для текущей записи. Постараюсь добавить фото шапки экрана. - person Shawn; 09.10.2017
comment
Полагаю, я не могу добавить фото, потому что моя учетная запись слишком новая... Я думал, что у меня гораздо больше активности в этой учетной записи. Должно быть, у меня была другая учетная запись, которую я использовал, когда был студентом, потому что я знаю, что размещал здесь скриншоты раньше. - person Shawn; 09.10.2017
comment
Если PagerID является первичным ключом Autonumber, то, конечно, его нельзя сравнивать с текстовым именем пользователя. Либо измените PagerID на UserName, либо сравните со значением PagerID. Смотрите пересмотренный ответ. - person June7; 09.10.2017
comment
Я использую конструктор макросов. У меня установлено значение {открыть форму У меня выбрана форма; вид настроен на форму; имя фильтра пусто; где условие, вот где моя проблема. Если я просто установлю его на = [Имя пользователя], я получаю синтаксическую ошибку error.t (отсутствует оператор) в выражении запроса «Джон Доу». Если я удалю условие where, то форма откроется, но не для правильной записи. - person Shawn; 10.10.2017
comment
Я не использую макросы, поэтому сделал тест. Смотрите пересмотренный ответ. - person June7; 10.10.2017
comment
Ладно, ближе. Он открывает форму без ошибки, но не для текущей записи, которую я выбираю. Только до первой записи. - person Shawn; 11.10.2017
comment
Методика правильная - проверена и работает у меня. Поскольку я не знаю вашей структуры данных или дизайна форм и отчетов, я действительно не могу сказать, почему код не работает. - person June7; 11.10.2017