MS Access: 运行 子表单中的查询

MS Access: run a query in a subform

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

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

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

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

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

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,它将 return 所有接近 100 的值,包括 100 ,或者如果我还在 carmake 文本字段中输入 'kia',它将 return 所有后备箱空间接近 100 并且是 Kias 的汽车)和我下面的子表单,它是完全空白的。

编辑:VBA代码

Private Sub Command409_Click()

Me.[Car Table subform1].Form.Requery

End Sub

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

在您的按钮位置 vba 代码:

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

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

Main_form_name.sub_form_name.Form.Requery
End Sub

应该可以解决问题