Есть ли способ использовать переменные в VBA для определения полей отчета MS-Access? - PullRequest
0 голосов
/ 15 мая 2019

Я не программист, но мне все равно было поручено это сделать! Мы работаем над исследовательским проектом, который включает в себя тестирование свойств различных образцов. Я пытаюсь создать форму, которая будет генерировать пользовательский отчет на основе того, что выбирает пользователь. Итак, у меня есть несколько текстовых полей и флажков, чтобы пользователь мог определить параметры запроса (например, состав образца должен содержать не менее 5% компонента A) и выбрать, какие данные ему интересно видеть в указанном отчете (например, показать pH). , цвет, но не точка плавления). Я успешно создал код для генерации запроса, а затем сгенерировал отчет на основе этого запроса, но по умолчанию в отчете используются значения ширины столбцов, которые обычно слишком велики (например, ширина столбца pH составляет 3 дюйма, для этого нужно всего около 1 ). Я хотел бы быть в состоянии это исправить, но не смог понять, как. В то же время некоторые из этих полей содержат числа, которые являются средними значениями результатов нескольких тестов, поэтому я хотел бы ограничить количество отображаемых цифр и отображать их в виде%, где это необходимо. Я начал с устранения проблемы ширины столбца:

Я попытался создать коллекцию включенных полей, затем выполнить цикл по коллекции и установить ширину столбцов, но не могу понять, как определить поле с переменной:

Если я знаю имя поля, я могу сделать это:

Reports("ReportName")!FieldID.Width = 200

Но если у меня есть коллекция имен, FieldNames или строки VariableName, ничего из этого не сработает, из-за чего я получаю сообщение об ошибке, что FieldNames или VariableName не являются допустимыми полями в отчете:

Reports("ReportName")!FieldNames(1).Width = 200
Reports("ReportName")![FieldNames(1)].Width = 200
Reports("ReportName")![VariableName].Width = 200

Есть ли способ связать имя поля с переменной?

В качестве альтернативы я подумал, что может быть способ перебрать все поля и установить ширину - это будет включать поиск ширины столбца для каждого поля, что я подумал сделать, добавив ключ к коллекции ширины столбцов. Но я не могу найти способ сделать это, что-то вроде:

For each Field in Reports("Report")
  Field.Width = ColumnWidthCollection(Field)
Next

Это зависает в строке Field.Width с "недопустимым вызовом процедуры или аргументом", что возвращает меня к тому, как ссылаться на имя поля с помощью переменной.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 15 мая 2019

Попробуйте с:

Reports("ReportName")(VariableName).Width = 200
...