|
本帖最后由 todaynew 于 2012-4-21 14:50 编辑
简 发表于 2012-4-21 12:25
我觉得列表框也是个好办法,但列表框有个缺陷就是,不能进行条件格式的设置,比如我要求完成数量>3000的数 ...
鬼打架。
在A子窗体写A子窗体的代码,在B子窗体写B子窗体的代码,在C子窗体写C子窗体的代码,光标在哪个子窗体上就做那个子窗体的工作,与谁活谁死有何干系?完全是莫名其妙的问题。
不能简单的复制代码,需要将其中的窗体对象做必要的修改。也可写一个带参数的函数那解决这个问题。
1、在标准模块中写:
Function FindRecord(Myfrm As Form, frm As Form, CtrlName As String)
'参数:Myfrm--当前子窗体
' frm --某个需要查找对应记录的子窗体
' CtrlName --某个两子窗体相同的字段名称
'示例:Call FindRecord(me.Form, Me.Parent.Child2.Form, "机床")
Dim i As Long
For i = 1 To frm.RecordsetClone.RecordCount
frm.SelTop = i
If frm.Controls(CtrlName).Value = Myfrm.Controls(CtrlName).Value Then
frm.SelWidth = frm.Controls.Count / 2
Exit For
End If
Next
End Function
2、在白班窗体中调用函数
Private Sub Form_Current()
On Error Resume Next
Call Call FindRecord(me.Form, Me.Parent.Child2.Form, "机床")
Call Call FindRecord(me.Form, Me.Parent.Child3.Form, "机床")
End Sub
3、中班子窗体中调用函数
Private Sub Form_Current()
On Error Resume Next
Call Call FindRecord(me.Form, Me.Parent.Child1.Form, "机床")
Call Call FindRecord(me.Form, Me.Parent.Child3.Form, "机床")
End Sub
4、夜班子窗体中调用函数
Private Sub Form_Current()
On Error Resume Next
Call Call FindRecord(me.Form, Me.Parent.Child1.Form, "机床")
Call Call FindRecord(me.Form, Me.Parent.Child2.Form, "机床")
End Sub
|
|