在窗体的事件过程中通过函数填充访问上的文本框



我有一个访问数据库,它有一个带有一些文本框和复选框的搜索表单。用户通过输入文本或选中其中一个框来选择要在搜索表单上收集的值。单击搜索按钮后,将打开相应的结果表单。

结果表单的数据源是一个查询,它给出了表中与请求的搜索相对应的记录列表。在查询中,我有2个IIf字段,1将其中2个复选框组合成一个文本句子,表示记录中选中的2个框中的一个或两个,另一个组合3个复选框。结果表单上有2个文本字段,其数据源是2个IIf查询字段。

结果表单上有第三个(未绑定的)文本字段,我还有9个剩余的复选框,我需要将它们组合成该字段的一个句子。我在结果表单的打开事件中尝试过这个函数(Oth)。该函数似乎有效,因为它在MsgBox(fOther)中为每条记录提供了正确的句子,但我无法使用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

我不得不重读一遍。所以,如果"其他"是你的结果表上的一个字段,那么它不应该是

Me.other = fother

但是

Forms!Resultform.form!other = fother

然后,对于您的搜索条件,您可能只想构建一个WHERE子句,该子句可以添加到SQL字符串中,设置为结果表单记录源,也可以使用整个表/查询作为结果表单记录来源设置为筛选器属性

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 & ";"

最新更新