我有一个带有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
答案 0 :(得分:1)
将更新后事件添加到F1中的单元格,这意味着SF1和SF2需要更新。在那个事件中,在SF1和SF2上调用.Requery