【问题标题】:MS Access: run a query in a subformMS Access:在子表单中运行查询
【发布时间】:2015-12-18 22:15:42
【问题描述】:

我已经搜索并尝试了所有我能找到的建议,但没有任何效果。我的问题是我想在表单中创建一个搜索功能,然后按一个按钮以在子表单中显示搜索结果,而无需打开新的数据表。

我写了一个查询,它根据我给它的参数成功搜索项目(参数写在表单的文本框中)。

我在表单中还有一个用于打开查询的按钮。但这会在新的数据表窗口中打开查询。它不仅这样做,而且我相当肯定它根本不会对子表单做任何事情。

这一切都在一个更大的导航表单中。

编辑:我将包含查询代码,但它并不那么重要,所以我将它放在一个只显示一点点的格式:

SELECT [Car Table].Car_VIN, [Car Table].Car_Class, [Car Table].Car_BodyType, [Car Table].Car_Colour, [Car Table].Car_Make, [Car Table].Car_Model, [Car Table].Car_EngineType, [Car Table].Car_TransmissionType, [Car Table].Car_GPSAvailability, [Car Table].Car_BootSpace, [Car Table].Car_FuelConsumptRate, [Car Table].Car_SeatNumber, [Car Table].Car_GreenStarRating, [Car Table].Car_ANCAPSafetyRating

FROM [Car Table]

WHERE ((([Car Table].Car_VIN) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![txtVIN] & "*") AND (([Car Table].Car_Class) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbClass] & "*") AND (([Car Table].Car_BodyType) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbBodyType] & "*") AND (([Car Table].Car_Colour) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbBodyType] & "*") AND (([Car Table].Car_Make) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![txtMake] & "*") AND (([Car Table].Car_Model) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![txtModel] & "*") AND (([Car Table].Car_EngineType) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbEngineType] & "*") AND (([Car Table].Car_TransmissionType) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbTransmissionType] & "*") AND (([Car Table].Car_GPSAvailability) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![ChGPSAvailability] & "*") AND (([Car Table].Car_SeatNumber) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![txtSeatNumber] & "*") AND (([Car Table].Car_GreenStarRating) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbGreenStarRating] & "*") AND (([Car Table].Car_ANCAPSafetyRating) Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbANCAPSafetyRating] & "*") AND ((Abs([car_fuelconsumptrate]-[Forms]![Navigation Form]![NavigationSubform].[Form]![txtFuelConsumption]))<=2) AND ((Abs([car_bootspace]-[Forms]![Navigation Form]![NavigationSubform].[Form]![txtBootSpace]))<=100));

我尝试创建一个在子表单上执行重新查询的按钮,但是当我单击它时重新查询没有做任何事情,我猜是因为我并没有真正在任何地方引用查询本身。

我也试过做一个拆分视图的表单,但我不仅没有得到任何结果,我也不想拆分视图。

现在我有一个运行查询的按钮,我可以在其中输入参数的文本框(例如,如果我在引导空间文本字段中输入 100,它将返回接近 100 的所有值,包括 100,或者如果我还输入了在“起亚”进入汽车制造文本字段中,它将返回所有具有接近 100 并且是起亚的引导空间的汽车)和我下面的子表单,这是完全空白的。

编辑:VBA 代码

Private Sub Command409_Click()

Me.[Car Table subform1].Form.Requery

End Sub

【问题讨论】:

  • 向我们展示您的代码的重要部分以及您尝试过的内容。

标签: sql forms vba ms-access datasheet


【解决方案1】:

在表单属性中将查询设置为 subform-recordsource。我假设你已经这样做了。

在您的按钮中放置 vba 代码:

Private Sub button_click()
    Me.PUT_SUBFORM_NAME_HERE.Form.Requery
End sub

【讨论】:

  • 对不起,我也应该把我的 vba 代码放在上面;我已经完成了您建议的两个步骤,当我单击按钮时,什么也没有发生 - 子表单保持空白。我将编辑我的帖子以包含我拥有的 vba 代码
  • 好吧,这很奇怪。如果您测试了 SQL 并且它有效,那么肯定还有另一个原因。您的子表单是否以任何方式绑定到父表单?在子表单属性 Link Child Fields 和 Link Master Fields 中查看
  • 你也可以尝试设置一个简单的查询或者只是一个表到子表单的记录源。如果它没有显示任何内容,则表明表单设计存在问题
  • 链接子字段和链接主字段都是“Car_VIN”,这是我的“汽车表”(查询从中提取数据的表)的主键。我现在将尝试您的第二条评论。编辑:将记录源更改为 Car Table,但仍然没有显示结果。
  • 如果您将子窗体绑定到 PK Car_VIN,您将找不到除主窗体上的汽车之外的其他汽车,因为子窗体只能显示带有 Car_VIN 的汽车。只需将其删除并尝试。
【解决方案2】:

在您的搜索按钮的点击事件结束时 写这行代码:

Main_form_name.sub_form_name.Form.Requery
End Sub

这应该可以解决问题

【讨论】:

  • 我尝试了一些东西,但都返回了错误:[Forms]![navigation form]![find a car form]![Car Table subform1].Form.Requery ^ got error 2465: cant find字段“查找汽车表格”我。[导航表格]![查找汽车表格]![汽车表子表格 1].Form.Requery ^ 让我出错 2465:“找不到字段 '|1'”[导航表格]! [find a car form]![Car Table subform1].Form.Requery 同上的错误 [find a car form]![Car Table subform1].Form.Requery 同上。 (当我使用句点而不是感叹号时,完全相同的错误)抱歉格式不好,没有意识到段落不会出现。
  • 用下划线 (_) 替换 from 名称中的空格并试一试。即代替 [find a car_form] 尝试 [find_a_car_form] 并确保正确拼写表格名称
  • 用下划线试了一下,得到了同样的结果。我几乎可以肯定我没有拼错表格名称。
猜你喜欢
  • 2017-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多