1

Я пытаюсь следовать инструкциям для создания одного поля со списком на другом в форме MS Access 2010, и я сталкиваюсь с некоторыми проблемами.

У меня есть две таблицы:

Strategy +----+-------------+
         | ID | Desc        |
         +----+-------------+
         | 1  | Annhilation |
         | 2  | Exhaustion  |
         +----+-------------+

Theme    +----+-------------------------+------------+
         | ID | Desc                    | StrategyID |
         +----+-------------------------+------------+
         | 1  | Beauty of Simplicity    | 1          |
         | 2  | Capitalism              | 1          |
         | 3  | Change of power         | 1          |
         | 4  | Change versus tradition | 1          |
         | 5  | Chaos and order         | 2          |
         +----+-------------------------+------------+

Я пытаюсь создать форму с двумя полями со списком, один для стратегии, другой для темы. Я хотел бы варианты коробки Темы комба , чтобы быть ограничена текущим выбором в поле со списком Стратегии, то есть показывать только те , где StrategyID матчей ID выбранной Стратегии.

Я создал пустую форму с именем StrategyTheme и добавил к ней два поля со списком.

Strategy
  Row Source    : SELECT [Strategy].[ID], [Strategy].[Desc] FROM Strategy; 
  On Click      : [Event Procedure]
  Before Update : [Event Procedure]
  After Update  : [Event Procedure]
  On Dirty      : [Event Procedure]
  On Change     : [Event Procedure]
  On Not In List: [Event Procedure]
  On Got Focus  : [Event Procedure]
  On Lost Focus : [Event Procedure]
  On Dbl Click  : [Event Procedure]
  On Mouse Down : [Event Procedure]
  On Mouse Up   : [Event Procedure]
  On Mouse Move : [Event Procedure]
  On Key Down   : [Event Procedure]
  On Key Up     : [Event Procedure]
  On Key Press  : [Event Procedure]
  On Enter      : [Event Procedure]
  On Exit       : [Event Procedure]
  On Undo       : [Event Procedure]
Theme
  Row Source    : SELECT [Theme].[ID], [Theme].[Desc] FROM Theme WHERE [Theme].[StrategyID]=[Forms]![StrategyTheme]![Strategy]; 

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

Option Compare Database
Private Sub Sync(msg)
    MsgBox (msg)
    Me.Theme = Null
    Me.Theme.Requery
End Sub
Private Sub Strategy_AfterUpdate()
    Sync ("AfterUpdate")
End Sub
Private Sub Strategy_BeforeUpdate(Cancel As Integer)
    Sync ("BeforeUpdate")
End Sub
Private Sub Strategy_Change()
    Sync ("Change")
End Sub
Private Sub Strategy_Click()
    Sync ("Click")
End Sub
Private Sub Strategy_DblClick(Cancel As Integer)
    Sync ("DblClick")
End Sub
Private Sub Strategy_Dirty(Cancel As Integer)
    Sync ("Dirty")
End Sub
Private Sub Strategy_Enter()
    Sync ("Enter")
End Sub
Private Sub Strategy_Exit(Cancel As Integer)
    Sync ("Exit")
End Sub
Private Sub Strategy_GotFocus()
    Sync ("GotFocus")
End Sub
Private Sub Strategy_KeyDown(KeyCode As Integer, Shift As Integer)
    Sync ("KeyDown")
End Sub
Private Sub Strategy_KeyPress(KeyAscii As Integer)
    Sync ("KeyPress")
End Sub
Private Sub Strategy_KeyUp(KeyCode As Integer, Shift As Integer)
    Sync ("KeyUp")
End Sub
Private Sub Strategy_LostFocus()
    Sync ("LostFocus")
End Sub
Private Sub Strategy_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Sync ("MouseDown")
End Sub
Private Sub Strategy_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Sync ("MouseMove")
End Sub
Private Sub Strategy_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Sync ("MouseUp")
End Sub
Private Sub Strategy_NotInList(NewData As String, Response As Integer)
    Sync ("NotInList")
End Sub
Private Sub Strategy_Undo(Cancel As Integer)
    Sync ("Undo")
End Sub

Когда я просматриваю форму в представлении формы, поле со списком «Тема» ограничивается тем, чтобы соответствовать значению поля со списком «Стратегия», которое было в прошлый раз, когда я его просматривал, и не изменяется при изменении того, что выбрано в поле со списком «Стратегия». Я не вижу никаких всплывающих окон от вызовов MsgBox() , поэтому я не думаю, что мои обратные вызовы событий вызываются.

Что я делаю не так, и как мне это исправить?

1 ответ1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .