访问查询问题

Posted

技术标签:

【中文标题】访问查询问题【英文标题】:Access Query issue 【发布时间】:2014-08-05 14:20:21 【问题描述】:

我有一个查询,每次关闭它时都会从表中删除第一条记录。

我正在做的事情的背景。我创建了一个查询和一个表单,用于将条件输入到该查询中。当用户点击运行时,它会打开查询并显示他们输入的条件。

我遇到的问题是,每当用户在表单上将文本字段留空时,查询应该将其视为 NULL 并返回所有内容。我正在使用这个(如 [Forms]![myForm].[myCriteria] & "*")来做这件事。它工作正常,直到用户关闭 Access 并再次打开它时,表格第一行中的条件将变为空白。

在表单上,​​我有两个文本框(textbox1 和 textbox2)都来自两个不同的表。如果用户将 textbox1 留空,请运行查询,关闭 Access,然后重新打开它。与 textbox1 关联的记录在其透视表中将是空白的,但仅在第一行中。不完全确定为什么会这样

我尽量说清楚,如果有任何混淆或是否需要任何其他信息,请告诉我。

编辑

我会尝试进一步扩展。

有 3 个表都有记录。其中一些记录用于查询运行时的条件。

Table1 将具有组件, 表2将有状态, 表 3 将包含条件不需要但仍会显示查询运行时间的其他记录

组件和状态应该用作查询的条件,用户将其输入到表单上的文本框中,然后打开查询。如果用户将组件或状态的文本框留空,则它应该在查询运行时显示表中的所有组件或所有状态。它会这样做,但是在您关闭然后重新打开访问之后,它们各自表中的组件字段或状态字段将为空白,但仅在该表的第一行

【问题讨论】:

字段好像被绑定了?并且该空白记录可能会被插入到表中,因为它已被绑定。 ***.com/questions/13009890/… 我想我明白你在说什么。因此,如果我使用未绑定的表单,我仍然可以使用该表单进行查询吗? 我不知道 100% 你的表单是如何工作的,但如果用户只是在文本框中输入内容并使用它来过滤查询,我看不出这些字段的原因应该绑定。 【参考方案1】:

您在帖子中提到您正在使用查询从表单中提供标准,但是控件(两个文本框)与数据库中的两个不同表相关。在我看来,这听起来像是表单不是未绑定的,其中表单被表锁定,并且每次加载表单时,表单都会从表中加载数据,从而直接编辑/删除记录。为了实现您想要的搜索功能,请执行以下操作。更多关于未绑定和绑定:http://www.baldyweb.com/BoundUnbound.htm

    创建一个空白表单,而不是基于任何表格。只是一个带有两个文本框和一个按钮的空白表单。 将第一个文本框命名为 txtCriOne 和另一个 txtCriTwo。将按钮命名为 runQryBtn。将表单命名为 Frm_searchQry 以保存表单 创建一个查询,通过使用 JOIN 或任何您希望的方式涉及两个表。为简单起见,我将使用客户表和订单表的示例。将其命名为, Qry_searchDB

Qry_searchDB

SELECT 
    tblCustomer.CustomerName, 
    tblCustomer.CustomerTelephone,
    tblOrders.OrderNumber,
    tblOrders.OrderDate
FROM
    tblCustomer INNER JOIN tblOrders
ON
    tblCustomer.CustomerID = tblOrders.CustomerID_FK
WHERE 
    tblCustomer.CustomerName Like "*" & Forms!Frm_searchQry!txtCriOne & "*"
Or
    tblOrders.OrderReference Like "*" & Forms!Frm_searchQry!txtCriTwo & "*" 

现在保存这个查询。然后编码您的按钮单击以打开此查询。类似的东西。

Private Sub runQryBtn_Click()
    DoCmd.OpenQuery "Qry_searchDB"
End Sub

这将打开基于条件的查询或列出所有记录(如果两者都留空)。希望这可以帮助。

【讨论】:

是的,原来的表格是绑定到表格上的,所以我新建了一个。谢谢你,也谢谢你 OverMind。 很高兴我们能提供帮助。如果对您有帮助,请随时将此标记为答案。祝你好运。

以上是关于访问查询问题的主要内容,如果未能解决你的问题,请参考以下文章

访问查询过滤

无法深入访问字段多个子查询

从访问查询创建 MySQL 查询

Select查询Ms访问中的子查询

访问查询 MAX() 减慢查询

刷新访问直通查询