我正在为MySQL后端创建一个Access表单前端,我想知道是否有一种方法可以为搜索多个字段的表创建一个搜索表单。在寻找这个话题的答案时,我似乎找到了“学习和使用VBA”的共识,但我想知道当使用MySQL后端时,这是否仍然适用。因为我比较精通MySQL,所以创建一个查询来搜索多个字段是微不足道的,但我不知道如何将其合并到Access中。有没有人有这方面的经验可以帮上忙?
发布于 2019-12-06 05:57:25
是的,工作量最少,最好的选择就是抛出一个窗体,让用户输入要搜索的值,然后将"where“子句传递给要过滤的窗体或报表。
Access在上述方面做得相当好,并且只会拉下符合条件的记录。
比方说,要搜索一个客户,你可以抛出一个这样的表单:

因此,在上面,用户输入了Smi。
因此,我们的代码可以这样:
me.RecordSource = "select * from tblCustomers where LastName like '“& me.txtSearch & "*'”
现在,在这种情况下,我们创建了SQL。但你也可以这样做:
docmd.OpenReport "rptCustomers",,,"LastName like '" & me.txtSearch & "*'"因此,将where子句传递给表单将不再需要编写或连接sql字符串。
一旦你显示了结果,你就可以向下钻取了。当您单击上面的单行(眼镜图标)时,我们将使用以下内容启动一个记录的表单:
docmd.OpenReport "ViewTour","id =“& me!id
因此,在大多数情况下,通过使用"where“子句,您不必创建或编写SQL查询。
如果你的表单只是简单地说出名字和一个可选的城市呢?
dim strWhere as string
if isnull(me.LastName) = False then
strWhere = "LastName = '" & me.LastName & "'"
End if
If isnull(me.City) = False then
if strWhere <> "" then strWhere = strWhere & " AND "
strWhere = strWhere & "City = '" & me.City & "'"
end if
' as many more "optional" text boxes on the search form can follow
' if you leave the box blank, then the critera is not added.https://stackoverflow.com/questions/59202515
复制相似问题