【问题标题】:Get a SQL query to display table entries so that I can edit the entries获取 SQL 查询以显示表条目,以便我可以编辑条目
【发布时间】:2020-08-13 20:42:49
【问题描述】:

我正在使用 Microsoft Access 表单。我的目标是能够在框中输入文本,然后单击搜索按钮,以便我可以基于此文本执行 SQL 查询。我的目标是让这个 SQL 查询产生的条目显示在子表单中,以便我可以编辑表条目中的信息。

到目前为止,我已经能够使用 Access 中的查询功能来做我想做的事Me.Browse.SourceObject = "Query.Find Item in Parts Query" Browse 是我的子表单,Find Items in Parts Query 是我的查询。但是,我不喜欢的是查询来自单独的 Access 查询,并且文本框中的文本未使用。

我希望能够根据我在文本框中输入的文本执行 SQL 查询,并能够轻松地在子表单中编辑这些结果。如果我的问题不清楚,我可以详细说明。这个问题有点开放式,因为我在网上找不到任何说明这个过程的东西。

【问题讨论】:

    标签: sql vba ms-access


    【解决方案1】:

    你的想法不错。

    因此,假设您构建了一个表单(继续项目)。设置它 - 让它看起来很好。该表格当然将是您的子表格。您现在创建该主窗体。这个主窗体只需要顶部的那个文本框。底部可以是子窗体。

    那么,如果这是为了发票?然后我们使用完全匹配。

    在文本框(或您的“搜索”按钮)的更新后事件中,您可以使用以下代码:

    Dim strSQL     As String
    
    strSQL = "select * from tblInvoices WHERE InvoiceNumber = " & Me.Text26
    
    Me.MySubForm.Form.RecordSource = strSQL
    

    现在,上面是一个数字列。 但是,如果是说公司名称?那么你必须这样写:

    Dim strSQL     As String
    
    strSQL = "select * from tblCustomers WHERE CompanyName LIKE '" & Me.Text26 & "*'"
    
    Me.MySubForm.Form.RecordSource = strSQL
    

    注意关闭,如何用 ' (单引号)包围结果。

    但是,为了完全匹配,我使用了“like”。所以上面将匹配公司名称的开头。 (搜索要好一些)。 所以

    如果您输入的是 North

    然后它会匹配 北溪啤酒 北极光剧院等

    而且你可以变得很花哨。这是一个表单和子表单,我使用了上述方法。用户输入 Smi(代表 smith),我会显示如下搜索结果:

    在多个项目子表单上,我还放置了一个按钮(眼镜图标)。当用户单击该按钮时,我会启动该 ONE 记录的主编辑表单。

    那个按钮背后的代码?

    我用这个:

    docmd.OpenForm "frmCustomer",,,"ID = " & me!id
    

    因此,您可以通过构建一个漂亮的搜索表单来真正提高易用性。另一个非常好的特性是它的工作速度非常快——即使在非常大的桌子上也是如此。那么,如果你有 500,000 甚至 100 万行呢?如果结果集很小,搜索将非常快。然后有了点击按钮的想法,你就有了一个漂亮的用户界面。

    大多数应用程序 - 甚至是谷歌? 你搜索 你显示结果 你让用户选择。 从网络到会计软件包,或者您将使用的任何软件?他们都遵循这种设计模式。

    此外,一旦你构建了那个漂亮的子表单(比如一个继续项目表单)。作为最后一步,我将删除此子表单所基于的数据源(表)。这样,当您开始时,表单(现在是主搜索表单上的子表单)将不会显示或包含任何数据 - 因此整个表单/子表单将在您开始搜索之前快速加载。

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      相关资源
      最近更新 更多