0
我有它的记录源形式更新称为查询qryProdSearch
其SQL定义见下文基于搜索参数使用VBA生成:MS-访问HOWTO刷新表单时,它的记录源查询由VBA
什么码以下是将文本搜索框分割成数组中的多个项目,以允许我像Google搜索一样同时搜索所有项目。
iSQL = "SELECT tblProduct.ProductID, tblProduct.ProdDescription, tblProduct.Brand, tblProduct.ShortCode, tblProduct.BarCode, tblProduct.MRP, tblProduct.Discount, tblProduct.TaxRate, tblProduct.LandingCost, tblProduct.MarketPrice From tblProduct WHERE ((([ShortCode] & ' ' & [Brand] & ' ' & [ProdDescription] & ' ' & [BarCode]) Like '*"
If Nz(Me.txtSearch, "") = "" Then
iSQL = "SELECT tblProduct.ProductID, tblProduct.ProdDescription, tblProduct.Brand, tblProduct.ShortCode, tblProduct.BarCode, tblProduct.MRP, tblProduct.Discount, tblProduct.TaxRate, tblProduct.LandingCost, tblProduct.MarketPrice From tblProduct"
Exit Sub
Else
iArray = Split(Me.txtSearch, " ")
End If
If UBound(iArray) = 0 Then
iSQL = iSQL & Me.txtSearch & "*'));"
Else
iSQL = iSQL & iArray(0) & "*'"
For i = LBound(iArray) To UBound(iArray)
iSQL = iSQL & " And ([ShortCode] & ' ' & [Brand] & ' ' & [ProdDescription] & ' ' & [BarCode]) Like '*" & iArray(i) & "*'"
Next i
iSQL = iSQL & "));"
End If
CurrentDb.QueryDefs("qryProdSearch").SQL = iSQL
这工作正常。 但是,无论我尝试什么,直到我重新打开表单,使用此查询的子表单都不会刷新。我曾尝试以下内容:
Me.sfrmProdSearch.Requery
Me.sfrmProdSearch.Form.Requery
Me.sfrmProdSearch.Form.Refresh
Me.Form.Requery
Me.Form.Refresh
任何建议都会受到欢迎。底线我不想重新打开表格,但我希望它被刷新,以便表格显示过滤的内容
如果我直接在SubForm的RecordSource中使用搜索框并刷新子表单,它可以正常工作。下面的例子。但限制是我不能分开单词,并使用独立于其位置的所有单词进行搜索。
WHERE ((([ShortCode] & ' ' & [Brand] & ' ' & [ProdDescription] & ' ' & [BarCode]) Like "*" & [Forms]![frmProdSearch]![txtSearch] & "*"));
都能跟得上仍然没有刷新 – izzymo 2015-03-03 15:38:52
然后,你可以只设置子窗体的记录源的内容的iSQL。更容易。子表单将自动重新查询。 – Gustav 2015-03-03 16:44:22