MS Access:立即更新相关子表单

时间:2014-03-28 10:28:11

标签: ms-access subform

我有一个带有2个子表格(SF1和SF2)的表格(F)。我还有3个Oracle表(T1,T2和T3)。每个(子)形式对应一个表:

F -> T1
SF1 -> T2
Sf2 -> T3

此外,每个(子)表单都会显示一个行列表,具体取决于某些条件:

* F shows all rows of T1.
* SF1 shows rows of T2 based on the row selected in F.
* SF2 shows rows of T3 based on the row selected in SF1.

使其成为可能:

* In SF1: A field of SF1 is linked to the "id" field of F.
* In SF2: A field of SF2 is linked to a special control of F.

F的特殊控件是一个具有特殊SourceControl属性的文本框:

=[SF1].[Form]![ID]

获取在SF1中选择的行的id。

好的,现在问题是:如果用户在F处选择了另一行,则SF1行和SF2行都会立即更新。但是,如果用户在SF1选择不同的行,则SF2行不会立即更新,在用户更改选择后可能会更新0.3或0.5秒。

这种不同行为的原因是什么?在第二种情况下是否可以立即更新行?


更新:已解决:只需在SF1的Form_Current()事件中调用SF2.Requery(),当用户在SF1更改选择时,SF2内容将立即更新:

Private Sub Form_Current()                  ' at Form__SF1 module

    Dim SF2 As Form
    On Error Resume Next
    Set SF2 = Me.Parent("SF2").Form         ' SF2 is a son of the parent
    If Err <> 0 Then                        ' parent not openned
        Exit Sub
    End If
    On Error GoTo 0

    SF2.Requery                             ' update SF2 content

End Sub

1 个答案:

答案 0 :(得分:1)

将更新后事件添加到F1中的单元格,这意味着SF1和SF2需要更新。在那个事件中,在SF1和SF2上调用.Requery