2015-07-30 3 views
0

У меня есть форма MS Access 2010, в которой есть поле со списком cbxClass и другое поле со списком cbxCourse + другое, называемое cbxInstitute. Сейчас форма работает, выбирая институт и все значения в cbxCourse в соответствии с институтом. Так же cbxClass значения внутри поля со списком меняются в зависимости от института. В основном значения cbxClass изменяются в зависимости от того, какой класс принадлежит институту, теперь проблема в том, что я хочу, чтобы пользователь мог выбрать класс из cbxClass, и как только это событие произойдет, выбранное значение cbxCourse изменится в соответствии с конечно, что класс включен в ... Класс может быть включен только в один курс, поэтому есть только один выбор, который я бы хотел автоматически выбрать, как только пользователь выберет класс из выпадающего меню.Выбор значения поля со списком, если пользователь выбирает значение в другом поле со списком

Я довольно новичок в доступе к MS, я обычно работаю над чем-то другим, и у меня нет большого опыта при настройке макросов.

+0

Мой ответ в общем случае, если вы указали, как хранится связь между классами и курсами, например в таблице или в коде и т. д. Я также могу указать свой ответ, чтобы он лучше соответствовал вашей проблеме. – Plasher

ответ

0

Создайте событие OnLostFocus для вашего Combo Box cbxClass и добавьте
cbxCourse.value = findCourse(cbxClass.value).

findCourse будет функцией, которая возвращает соответствующий курс данному классу, поскольку только вы знаете, какой курс принадлежит данному классу. И это будет вызываться каждый раз, когда вы покинете cbxClass Combo Box. Вы также можете использовать событие OnChange, затем оно будет выполняться каждый раз, когда вы что-то измените в cbxClass Combo Box.

Если вы нажмете на элемент управления cbxClass и откройте свойства элемента управления, там должна быть вкладка «События» или что-то вроде этого, у меня она есть только на немецком языке. И в этой вкладке должны быть такие события, как OnLostFocus, OnChange, OnAfterUpdate и т.д. дважды щелкните на тот, который вы хотите использовать, и вы должны увидеть что-то вроде этого:

Option Compare Database 
Option Explicit 

Private Sub cbxClass_AfterUpdate() 

End Sub 

Тогда просто добавить заявление сверху и добавьте функцию findCourse вне событий AfterUpdate следующим образом:

Option Compare Database 
Option Explicit 

Private Function findCourse(selectedClass as String) As String 
    '// do your stuff here 
    '// and return your course by using the following: 
    findCourse = "theFoundCourse" 
End function 

Private Sub cbxClass_AfterUpdate() 
    cbxCourse.value = findCourse(cbxClass.value) 
End Sub 
+0

MM это хорошо выглядит, но где я должен реализовать функцию? и может ли это быть сделано после события обновления? – ShrtTth

+0

Уверен, что вы можете сделать это и после обновления. Вы немного знакомы с редактором VBA? Если вы просмотрите событие AfterUpdate в редакторе VBA, вы можете просто объявить новую функцию за пределами события после обновления. Я отредактирую свой ответ, чтобы показать его. – Plasher

+0

Yer Im работает действительно новичок в этом, но я получу его довольно быстро, но у меня возникают некоторые проблемы с синтаксисом:/... Я привык к Java и C# .... – ShrtTth

Смежные вопросы