Неверное количество аргументов для DoCmd.OpenReport в MS Access - PullRequest
1 голос
/ 17 июня 2009

Извините, если это нубский вопрос, но я удостоился сомнительной чести поддержать старое унаследованное приложение Access 2000 .adp, плохо написанное кем-то много лет назад, которого больше нет, когда у меня мало опыта с Access или VB себя:)

Я настроил компьютер разработчика WinXP с Access 2000 (это проект Access 2000), чтобы выполнить некоторую работу по поддержке. Существует уже существующая строка кода, которая должна напечатать отчет, который вызывает DoCmd.OpenReport с 6 аргументами:

DoCmd.OpenReport ReportName, acViewPreview, , "orderId = 1234", , Printtype

Когда я запускаю его, я получаю ошибку компиляции: «Неверное количество аргументов или неправильное присвоение свойства».

Так что я использовал 'intellisense' в DoCmd.OpenReport, и мой редактор кода доступа к VB говорит мне, что он ожидает только 4 аргумента, а не 6: ReportName, acViewNormal, FilterName и WhereCondition. Когда я иду в браузер объектов для команды, определение:

Sub OpenReport (ReportName, [View As AcView = acViewNormal], [FilterName], [WhereCondition]) Член Access.DoCmd (то есть 4 аргумента)

Просматривая различные посты в сети, некоторые люди, кажется, передают 4 аргумента, некоторые 6. Что дает? Я предполагаю, что существуют разные версии библиотек кода доступа, и у меня неправильная. Но я понятия не имею, с чего начать. Кто-нибудь знает Access и может мне помочь?

Ответы [ 2 ]

1 голос
/ 17 июня 2009

В Access 2000 метод OpenReport принимает 4 параметра:

DoCmd.OpenReport имя отчета [, представление] [, имя_файла] [, где условие]

, где [, параметр ] являются необязательными.

В Access XP OpenReport получил еще 2 параметра, чтобы дать:

DoCmd.OpenReport имя отчета [, представление] [, имя_файла] [, условие условия] [, режим окна] [, openargs]

Printtype используется в качестве аргумента отчета и его необходимо будет передать другим методом, например, читать из поля формы или публичной собственности.

0 голосов
/ 17 июня 2009

Просто удалите все после аргумента WhereCondition. Дополнительные аргументы для более поздней версии Access (они для WindowMode и OpenArgs)

...