我有一个表单(frm_Property),它显示属性的信息,并在该表单中显示另一个表单(frm_Rate),它是一个过滤表,显示与该属性关联的所有费率。我想检查过滤的费率表,以确保没有输入费率或有当前费率(即当前日期介于费率的开始和结束日期之间)。如果没有当前费率(仅输入其他费率),我想停止关闭表格,并打开一个消息框,告诉用户输入当前费率。
在搜索并遵守许多不同的东西后,这是我目前的代码。
func fatal(err interface{}) {
if v, ok := err.(string); ok {
fmt.Println(v)
}
if v, ok := err.(error); ok {
fmt.Println(v.Error())
} else {
// panic ?
}
}
目前它可以检测是否没有输入记录,但它总是告诉我即使有记录也没有当前的费率,我不知道为什么。
我的代码也位于frm_rate中。我不知道这是不是因为我无法阻止表格关闭。我正在阅读关于卸载停止表单关闭的内容,这就是我选择那个的原因。我怀疑我遇到了麻烦,因为我的“On Unload”在子表单中。
非常感谢任何见解。
答案 0 :(得分:1)
在卸载主窗体后发生子窗体的卸载事件,因此子窗体中的代码无用。在主窗体中,您需要先保存数据Me.Dirty = false
在此之后,您的代码将能够在表格中查看新数据。您还可以使用子表单的RecordsetClone
属性来访问子表单中的数据。
答案 1 :(得分:0)
使用子表单的RecordsetClone
和FindFirst
:
Dim currdate As String
Set rs = Me!NameOfYourSubformCONTROL.Form.RecordsetClone
' Check to see if the recordset actually contains rows.
If rs.RecordCount = 0 Then
check = "Empty"
Else
' Check if rate is current rate.
currdate = Format(Date, "yyyy\/mm\/dd"
rs.FindFirst "#" & currdate "# Between tbl_rate.Start_Date And tbl_rate.End_Date"
If Not rs.NoMatch Then
check = "Good"
Else
check = "Bad"
End If
End If