Ms access 字符串字段的Recordset.Filter不适用于控件的值

Ms access 字符串字段的Recordset.Filter不适用于控件的值,ms-access,vba,Ms Access,Vba,两个感兴趣的项目是[JobNum]和Me!JobID.Value。当我像下面这样保存它时(其中me!JobID是表单上的一个文本框),rsFiltered返回0条记录。但是如果我替换我!JobID.Value到“1000-3234”,它返回预期的5。是否存在引用控件值不起作用的原因?即使我声明一个字符串变量并将其设置为Me!JobID.Value并使用它仍然不起作用 Dim db As Database Dim rs As Recordset Dim rsFiltered As Recordse

两个感兴趣的项目是
[JobNum]
Me!JobID.Value
。当我像下面这样保存它时(其中
me!JobID
是表单上的一个文本框),
rsFiltered
返回0条记录。但是如果我替换
我!JobID.Value
“1000-3234”
,它返回预期的5。是否存在引用控件值不起作用的原因?即使我声明一个字符串变量并将其设置为
Me!JobID.Value
并使用它仍然不起作用

Dim db As Database
Dim rs As Recordset
Dim rsFiltered As Recordset
Dim strQuery As String

strQuery = "SELECT Estimate.JobNum, Magnet.Sequence, Magnet.StartDate, Magnet.EndDate, Magnet.WeekendWork FROM Estimate RIGHT JOIN Magnet ON Estimate.ID = Magnet.[EstimateID];"
Set db = CurrentDb
Set rs = db.OpenRecordset(strQuery)
rs.Filter = "[JobNum]=" & Me!JobID.Value
Set rsFiltered = rs.OpenRecordset
“1000-3234”是一个字符串,因此:

rs.Filter = "[JobNum] = '" & Me!JobID.Value & "'"
“1000-3234”是一个字符串,因此:

rs.Filter = "[JobNum] = '" & Me!JobID.Value & "'"

作为Gustav的回答,您需要像这样过滤代码,而且我认为您应该使用
.Text
属性而不是
.Value

rs.Filter = "[JobNum] = '" & Me!JobID.Text & "'"
Text属性返回格式化的字符串。Text属性可能不同于文本框控件的Value属性。Text属性是控件的当前内容。Value属性是文本框控件的保存值。当控件具有焦点时,Text属性始终为当前属性


我认为在这种情况下,
.Text
更有意义。

作为Gustav的答案,您需要像这样过滤代码,而且我认为您应该使用
.Text
属性,而不是
.Value

rs.Filter = "[JobNum] = '" & Me!JobID.Text & "'"
Text属性返回格式化的字符串。Text属性可能不同于文本框控件的Value属性。Text属性是控件的当前内容。Value属性是文本框控件的保存值。当控件具有焦点时,Text属性始终为当前属性


我认为在这种情况下,
。Text
更有意义。

什么事件运行此代码?为什么不只选择过滤器?为什么要在加入后应用筛选器?哪个事件运行此代码?为什么不只选择筛选器?为什么要在加入后应用筛选器?是否有特殊原因认为应在
上使用
.Text
而不是
.Value
?@Newd我添加了一个详细信息,请不要忘记使用可能未保存的文本框进行筛选;)。
.Text
属性仅在控件具有焦点时可用。如果其他内容有焦点,尝试访问
.Text
将抛出错误。例如,如果他的代码用于命令按钮的单击事件,则该按钮在代码运行时具有焦点。他可以用我!JobID.SetFocus
首先要避免错误。我个人发现
.Value
在99.9%的时间都有效,我唯一需要使用它的时间是在使用事件运行代码之前不离开字段的时候。例如按键事件。您是否有特殊原因认为应在
上使用
。Value?@Newd我添加了一个详细信息,不要忘记使用文本框进行可能未保存的筛选;)。
.Text
属性仅在控件具有焦点时可用。如果其他内容有焦点,尝试访问
.Text
将抛出错误。例如,如果他的代码用于命令按钮的单击事件,则该按钮在代码运行时具有焦点。他可以用我!JobID.SetFocus首先要避免错误。我个人发现
.Value
在99.9%的时间都有效,我唯一需要使用它的时间是在使用事件运行代码之前不离开字段的时候。例如按键事件。