Доступ: установка и использование глобальных переменных - PullRequest
0 голосов
/ 26 марта 2019

Итак, у меня очень сложная база данных, для которой меня попросили создать формы, и похоже, что мне понадобятся некоторые глобальные переменные, плюс это просто хорошая практика, так как я довольно новичок в VBA. Я прочитал, чтобы объявить глобальные переменные как таковые

Option Compare Database
Option Explicit

Public YourGlobalVariable As String

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

Большое спасибо за ваше время, как я уже говорил, я новичок в Access и VBA, поэтому любая помощь очень ценится!

РЕДАКТИРОВАТЬ: Пример ...

Так, скажем, в одной форме они вводят 10 действий, которые они делают. В другой форме они должны оценить, насколько им нравится каждое из 10 занятий. Мне нужен способ записать эти 10 действий в 1) таблицу в базе данных 2) таким образом, чтобы я мог выплюнуть их обратно в будущей форме, которую будет заполнять пользователь. Вот почему я думал, что глобальные переменные будут идеальными. У каждой строки активности есть своя глобальная переменная, которую я могу использовать везде, где это необходимо.

1 Ответ

1 голос
/ 26 марта 2019

Вам не нужно и не нужно использовать глобальные переменные для передачи нескольких значений.Это плохая идея в .net, c ++, FoxPro или ЛЮБОЙ системе, которую вы используете для работы с данными.

И как вы используете глобальные переменные в vb.net, и VBA - то же самое.

Первый и самый важный вопрос - это форма, используемая для ввода этих действий.Не ясно, есть ли у вас нормализованная база данных, и они заканчивают вводом 10 строк данных (или 5, или 15), и эта форма позволяет ввод таких активаций.

Доступ сделает всю грязную работу дляВы, потому что такие формы привязаны к данным, и код для чтения / записи / редактирования данных не требуется.

На этом этапе пользователь ввел 10 активаций (но, как уже было отмечено, ваш дизайн должен позволять3, 5 или 50 активируется).

После того, как они ввели эти данные, неясно, почему они не указали рейтинг.

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

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

До сих пор нам не приходилось писать какой-либо код, и мы просто создали форму, привязанную к таблице.Однако, как уже отмечалось, поскольку будет 3 или 30 мероприятий, то я предполагаю, что ваш дизайн не жестко запрограммирован только на 10 действий.

И я хотел бы предположить, что, как и в какой-либо форме счета, у вас есть информация о«событие» вместо информации о счете-фактуре (клиент и т. д.), а затем вложенная форма, позволяющая ввести одну или несколько строк сведений о счете-фактуре, или в этом случае все возможные события и действия для этого одного события.

Пока, исходя из вашего объяснения, здесь требуется нулевой код.

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

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

Что вам в первую очередь нужно сделать, это создать правильный набор таблиц для работы с этими даннымипрежде чем создавать какие-либо формы, или написать одну строку кода.При правильном оформлении таблицы остальные ваши требования становятся тривиальными, и, как уже отмечалось, до сих пор не требуется никакого кода, если вы используете замечательные возможности Access для создания таких форм.

...