我正撞在这个墙上撞墙。如何让操作员根据表单字段处理查询条件。理想情况下,我希望它是这样的:
IIf([Afloat]="No",<[Forms]![DASF]![Text222],"")
当我删除操作符时,它会找到与该字段中的条件完全相符的内容,但是当我尝试将操作符设置为大于或小于该值时,它将无效。我试图找到小于该表单字段中的值的所有记录。
关于如何解决此问题的任何建议?或者在MS Access中是不可能的?提前谢谢。
答案 0 :(得分:0)
QBF(按表单查询)不能接受公式中的运算符。您唯一的选择是即时编写查询。您可以使用CreateQueryDef方法在特定查询中定义SQL,并将表单或报表附加到特定查询名称。
类似的东西:
Dim db as Database
Dim rec as Recordset
Dim qdf As QueryDef
Dim strSQL as String
Set db = CurrentDB
On Error Resume Next
'First, delete the query if it exists
db.QueryDefs.Delete "MyQueryName"
'Then, set up the query string
strSQL = "Select * From MyTable Where MyField < " & [Forms]![DASF]![Text222] & " and [Afloat] = 'No' "
strSQL = strSQL & "UNION "
strSQL = strSQL & "Select * From MyTable Where MyField = '' and [Afloat] <> 'No' "
'Now, recreate the query
Set qdf = db.CreateQueryDef("MyQueryName", strSQL)
DoCmd.OpenQuery qdf.Name
答案 1 :(得分:0)
您可以尝试将第一个条件更改为:
>IIf([Afloat]="No",[Forms]![DASF]![Text222])
然后在Or行中添加第二个标准:
=IIf([Afloat]<>"No","")
答案 2 :(得分:0)
我最终通过将其分成两个单独的查询来解决我的问题。以下是我的步骤:
然后我创建了一个命令按钮来打开 每个查询取决于组合框中的条件(是或否)。 这是代码:
Private Sub Command2_Click()
DoCmd.SetWarnings False 如果Me.Combo272 =“是”那么 DoCmd.OpenQuery“DASF_AGED_AS1_FLOAT”,acViewNormal,acEdit 其他 DoCmd.OpenQuery“DASF_AGED_AS1_NONFLOAT”,acViewNormal,acEdit
结束如果 End Sub
这造成了另一个问题,我仍然无法引用查询条件所需的txt框。为了解决这个问题,我使用下面的VBA将所有文本框解除绑定,以根据另一个组合框自动填充文本框。这是我使用的VBA:
Me.Text220 = DLookup(“REGION”,“TDD_TABLE”,“[ID] =”&amp; Me.Combo236)
希望这有助于将来的任何人!