使用vba在Access中组合两个查询

时间:2012-07-27 18:57:02

标签: ms-access access-vba

我有两个组合框,Combo_A在Combo_B中设置查询字符串。从combo_B中选择一个选项并按下go按钮后,将根据Combo_A中的选择执行两个查询之一。如果在Combo_A中选择了选项1,则go按钮执行查询A,如果在Combo_A中选择了选项2,则go按钮执行查询B.这一切都运行良好,它通过将查询名称分配给变量然后执行来运行一个DoCmd.OpenQuery_Click。

我的问题是我想更进一步。当选中一个复选框时,我想用另一个查询交叉引用上面的结果,当没有选中时,它需要表现得与我目前设计的完全相同。我知道我可以创建查询,但不太习惯使用vba。我可以使用代表查询的变量名来加入另一个查询吗?到目前为止,这是我的vba代码。

Option Compare Database



Private Sub AgencyorCarrierSelection_AfterUpdate()
If AgencyorCarrierSelection = "By Insurance Carrier" Then
    Combo7.Visible = True
    Text13.Value = "Select of of the following Carriers:"
    Text13.Visible = True
    Combo7.RowSource = "SELECT [tblRefInsuranceCarriers].[InsuranceCarrierID], [tblRefInsuranceCarriers].[CarrierName] FROM [tblRefInsuranceCarriers] ORDER BY [CarrierName];"
Else
    Combo7.Visible = True
    Text13.Value = "Select of of the following Agencies:"
    Text13.Visible = True
    Combo7.RowSource = "SELECT [tblRefInsuranceAgencies].[InsuranceAgencyID], [tblRefInsuranceAgencies].[AgencyName] FROM [tblRefInsuranceAgencies] ORDER BY [AgencyName]"
End If
End Sub
Private Sub lblSwitchboard_Click()
DoCmd.OpenForm "switchboard", acNormal
DoCmd.Close acForm, "frmInsuranceInformationConnect"
End Sub
Private Sub RunAgencyorCarrierQuery_Click()
On Error GoTo Err_RunAgencyorCarrierQuery_Click

Dim stDocName As String
If AgencyorCarrierSelection = "By Insurance Carrier" Then
    stDocName = "qryInsuranceCarrierAgentPremiumBreakout_Carrier"
Else
    stDocName = "qryInsuranceCarrierAgentPremiumBreakout_Agency"
End If

DoCmd.OpenQuery stDocName, acNormal, acEdit

Exit_RunAgencyorCarrierQuery_Click:
Exit Sub

Err_RunAgencyorCarrierQuery_Click:
MsgBox Err.Description
Resume Exit_RunAgencyorCarrierQuery_Click

End Sub

1 个答案:

答案 0 :(得分:0)

因此,您将使用基本相同的查询(A或B),但选中此框将限制结果一个额外的标准。挑战是标准要求加入另一个表。

最简单的做法是使C和D查询与A和B匹配,但是有额外的表;然后if...then到所需的查询,就像你已经在做的那样。

或者您可以使A和B查询包含已连接的表,以便提供额外的标准,并使用parameter query指定是否使用该标准。这似乎很复杂。