子窗体发出ms access vba

时间:2017-08-20 06:52:00

标签: vba forms ms-access

我写作是因为我遇到了非常耗时的问题,我还没有解决。它与ms访问查询和表单数据交换相连。以简单的方式。我有以下表格: Form

如Q_Cars查询中所示,我按顺序列出了汽车及其内部列。我还有使用特定组合框(当前有两个分配)更新的子表单,它们使用VBA代码更新查询(重新查询选项)。但是,只有当我为两个组合框选择值时,它才有效。 你能帮我找到一种方法来设置一个查询条件标准,对于空组合框,它将运行所有可用数据的查询吗? 我尝试使用例如查询形式中的条件内的以下结构:

IIf( Formularze![Form]![T_id] <>""; «Wyr» Formularze![Form]![T_id] ;>0)

或使用isempty的其他尝试,isnull功能但没有成功。 你知道如何解决这个问题吗? 在我的版本中,由于语言“,”被替换为“;”在里面如果结构。 剩下的代码:

Private Sub btn_clear_Click()
Me.T_brand.Value = ""
Me.T_id.Value = ""
Me.T_color = ""
Me.T_seats = ""
Q_Cars_subform.Requery
End Sub
Private Sub T_brand_AfterUpdate()
Q_Cars_subform.Requery
End Sub
Private Sub T_id_AfterUpdate()
Q_Cars_subform.Requery
End Sub

和表 table 问候, 彼得

查询代码:

SELECT Cars.car_id, Cars.car_brand, Cars.car_color, Cars.car_seats
FROM Cars
WHERE (((Cars.car_id)=IIf(Formularze!Form!T_id<>"","«Wyr» Formularze![Form]![T_id] ",(Cars.car_id)>0)) And ((Cars.car_brand)=Formularze!Form!T_brand));

1 个答案:

答案 0 :(得分:2)

IIF包含无效代码。

您可以在OR条款中使用逻辑WHERE语句,无需IIF

尝试以下方法:

SELECT Cars.car_id, Cars.car_brand, Cars.car_color, Cars.car_seats
FROM Cars
WHERE (Cars.car_id = Formularze![Form]![T_id] OR Nz(Formularze![Form]![T_id]) = "") 
AND (Cars.car_brand = Formularze!Form!T_brand OR NZ(Formularze!Form!T_brand) = "");

请注意,如果两者都为空,这将显示所有内容,如果需要,我可以调整它以显示任何内容。