我有一个访问数据库,其中包含一些带有一些文本框和一些复选框的搜索表单。 用户通过输入文本或选中其中一个框来选择要在搜索表单上收集的值。单击搜索按钮时,将打开相应的结果表单。
结果表单的数据源是一个查询,它提供表中与请求的搜索相对应的记录列表。在查询中,我有2个IIf字段,1个将2个复选框组合成一个文本句子,表示在记录中检查的那两个框中的一个或两个,另一个组合了3个复选框。结果表单上有2个文本字段,其数据源是2个IIf查询字段。
结果表单上有第三个(未绑定的)文本字段,我有9个剩余的复选框,我需要将它组合成该字段的句子。我在结果表单的on open事件中尝试过这个函数(Oth)。该函数似乎有效,因为它为每个记录提供了MsgBox(fOther)中的正确句子,但是我无法在结果表单上填充未绑定的文本字段。我已经尝试了几种不同的方式,表格的记录集,查询的表格。我已经尝试在模块中添加(类似)功能,并在表的字段的更新查询中使用该功能。我无法填充那个(其他)字段。我已经尝试在查询该(其他)文本字段时构建一个IIf字段,它是非常令人生畏的9个对象,以及所有可能的组合,我甚至不确定它是否可能。有什么提示可以提供吗?
Private Sub Oth()
Dim strOthr(9) As String
Dim Tt As Integer
Dim fOther As String
Me.Recordset.MoveFirst
Do While Not Recordset.EOF
If Me.[o-180] Then
strOthr(0) = "180"
End If
If Me.[o-e] Then
strOthr(1) = "Education"
End If
If Me.[o-rcb-f] Then
strOthr(2) = "Flag"
End If
If Me.[o-rcb-m] Then
strOthr(3) = "Medal"
End If
If Me.[o-rcb-b] Then
strOthr(4) = "Burial"
End If
If Me.[o-ra-hb] Then
strOthr(5) = "Health Benefits"
End If
If Me.[o-ra-t] Then
strOthr(6) = "Transportation"
End If
If Me.[o-ra-hl] Then
strOthr(7) = "Home Loans"
End If
If Me.[o-ra-il] Then
strOthr(8) = "Income Letter"
End If
For Tt = 0 To 8
If Len(strOthr(Tt)) > 0 Then
If Len(fOther) > 0 Then
fOther = fOther & ", " & strOthr(Tt)
Else
fOther = fOther & strOthr(Tt)
End If
End If
Next Tt
Me.Other = fOther
MsgBox fOther
For Tt = 0 To 8
strOthr(Tt) = ""
Next Tt
fOther = ""
Me.Recordset.MoveNext
Loop
End Sub
答案 0 :(得分:0)
我不得不重新阅读。因此,如果其他是结果表单中的字段,那么它不应该是
Me.other = fother
但是
Forms!Resultform.form!other = fother
然后根据您的搜索条件,您可能只想构建一个WHERE子句,您可以将其添加到SQL字符串以设置为结果表单recordsource,或者使用整个表/查询设置为过滤器属性作为结果表单记录来源
dim strfilter as string
If me.[a-b-c] then
strfilter = strfilter & "[fld] = " & Chr(34) & "txtcriteria" & Chr(34) & " AND "
End If
If me.[b-x-y] then
'repeat
End if
'repeat if for each expression
strfilter = left(strfilter, len(strfilter) - 5)
With forms!frmResuls.form
.filter = strfilter
.filteron = true
End With
'or
forms!frmResults.form.recordsource = "SELECT * from tbl WHERE " & strfilter & ";"