访问查询问题

时间:2014-08-05 14:20:22

标签: mysql sql ms-access subquery

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

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

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

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

我试图尽可能清楚,如果有任何混淆或需要任何其他信息,请告诉我。

修改

我会尝试进一步扩展。

有3个表都有记录。其中一些记录在查询运行时用于标准。

Table1将有Component, 表2将具有状态, 表3将包含标准不需要的其他记录,但仍然显示查询运行的时间

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

1 个答案:

答案 0 :(得分:0)

您在帖子中提到您使用“查询”从表单中提供条件,但控件(两个文本框)与数据库中的两个不同表相关。这听起来就像Form没有Unbound,表单被一个表锁定,每次加载表单时,表单都会加载表中的数据,使其直接编辑/删除记录。为了实现您想要的搜索功能,请执行以下操作。更多关于Unbound& bound:http://www.baldyweb.com/BoundUnbound.htm

  1. 创建一个空白表单,而不是基于任何表格。只是一个带有两个文本框和一个按钮的空白表单。
  2. 将第一个文本框命名为 txtCriOne ,将另一个命名为txtCriTwo 。将按钮命名为 runQryBtn 。通过为其命名,如Frm_searchQry
  3. 来保存表单
  4. 创建一个查询,使用JOIN参与两个表,或者您希望如此。为简单起见,我将使用客户表和订单表的一个例子。它就像是, Qry_searchDB
  5. <强> 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
    

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