MS Access:在子表单

时间:2015-09-22 04:23:18

标签: sql forms vba ms-access datasheet

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

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

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

这都在更大的导航表格中。

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

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));

我已经尝试创建一个在子窗体上执行重新查询的按钮,但是当我点击它时,requery没有做任何事情,我猜是因为我在任何地方都没有真正引用查询。 / p>

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

现在我有一个运行查询的按钮,我可以输入参数的文本框(例如,如果我输入100到bootspace文本字段,它将返回100附近的所有值,包括100,或者如果我也输入在&#39; kia&#39;进入carmake文本字段,它将返回所有汽车,其靴子空间接近100并且是Kias)和我的子形式下面,这是完全空白的。

编辑:VBA代码

Private Sub Command409_Click()

Me.[Car Table subform1].Form.Requery

End Sub

2 个答案:

答案 0 :(得分:1)

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

在按钮中输入vba代码:

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

答案 1 :(得分:0)

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

Main_form_name.sub_form_name.Form.Requery
End Sub

应该做的伎俩