Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL后端在MS Access中创建(多字段)搜索表单?_Mysql_Ms Access_Odbc - Fatal编程技术网

如何使用MySQL后端在MS Access中创建(多字段)搜索表单?

如何使用MySQL后端在MS Access中创建(多字段)搜索表单?,mysql,ms-access,odbc,Mysql,Ms Access,Odbc,我正在为MySQL后端创建一个访问表单前端,我想知道是否有办法为搜索多个字段的表创建一个搜索表单。在寻找关于这个主题的答案时,我似乎找到的共识是“学习并使用VBA”,但我想知道这在使用MySQL后端时是否仍然适用。因为我对MySQL比较熟悉,所以快速启动一个查询来搜索多个字段是很简单的,但我不知道如何将其合并到Access中。是否有人对此有帮助?是的,工作量最少,最好的选择是简单地抛出一个表单,让用户输入要搜索的值,然后将“where”子句传递给要筛选的表单或报表 Access在上述方面做得相当

我正在为MySQL后端创建一个访问表单前端,我想知道是否有办法为搜索多个字段的表创建一个搜索表单。在寻找关于这个主题的答案时,我似乎找到的共识是“学习并使用VBA”,但我想知道这在使用MySQL后端时是否仍然适用。因为我对MySQL比较熟悉,所以快速启动一个查询来搜索多个字段是很简单的,但我不知道如何将其合并到Access中。是否有人对此有帮助?

是的,工作量最少,最好的选择是简单地抛出一个表单,让用户输入要搜索的值,然后将“where”子句传递给要筛选的表单或报表

Access在上述方面做得相当好,并且只会下拉满足条件的记录

比如说,要搜索一个客户,你可以扔掉这样一张表格:

因此,在上面,用户输入了Smi

因此,我们的代码可以:

me.RecordSource=“从名为“&me.txtSearch&“*”的tblCustomers中选择*”

现在,在这种情况下,我们创建了SQL。但你也可以去:

docmd.OpenReport "rptCustomers",,,"LastName like '" & me.txtSearch & "*'"
因此,将where子句传递给表单将消除编写或连接sql字符串的需要

一旦显示了结果,就可以像aobve显示的那样进行深入查看。当您单击上面的一行(眼镜图标)时,我们使用以下命令将表单发送到一条记录:

docmd.OpenReport“ViewTour”、“id=”&me!身份证

因此,在大多数情况下,通过使用“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.
dim strWhere as string
如果isnull(me.LastName)=False,则
strWhere=“LastName=”&me.LastName&“
如果结束
如果isnull(me.City)=False,则
如果strWhere“”则strWhere=strWhere&“和”
strWhere=strWhere&“City=”&me.City&“
如果结束
'搜索表单上的更多“可选”文本框可以跟随
'如果将框留空,则不会添加准则。

是的,VBA仍然是自动化访问表单行为的主要方法。无论Access应用程序使用哪种后端,这都是正确的。在某些情况下,如果您希望使用直通查询将SQL语句直接发送到MySQL后端,您的MySQL技能可能会派上用场,但大多数情况下,Access应用程序将代表您与MySQL通信。