【问题标题】:Group By for Combobox Filter Sort组合框过滤器排序的分组依据
【发布时间】:2011-10-29 04:56:02
【问题描述】:

我创建了一个基本的组合框过滤器排序,它对我的​​公司(主要是缩写词)的公司区域进行排序,我们将这些称为 AOR 或参考区域。在定义您的 AOR 后,它将下一个组合框限制为仅显示该特定 AOR 中的国家,即过滤器排序。但是,我的问题是 - 当它在选择 AOR 后显示国家/地区时 - 它显示该特定国家/地区的所有记录,而不是仅列出 1 个国家/地区。

基本上,它不会对我的国家/地区进行分组 - 当我选择通常只会给我独特结果的“总计”时,这不起作用。

我的问题,我如何重新编写此代码以包含 Group By?

我的代码:

Private Sub cboRegion_AfterUpdate()
  ' Region -> Country
  Dim sManagerSource As String
  sManagerSource = "SELECT [FullEmail].[AORID], [FullEmail].[ID], [FullEmail].[Country] " & _
                   "FROM FullEmail " & _
                   "WHERE [AORID] = " & Me.cboRegion.Value
  Me.cboCountry.RowSource = sManagerSource
  Me.cboCountry.Requery
End Sub

我的 SQL 语句看起来像这样(里面有 Group By,但没有 GROUP)

SELECT FullEmail.AORID, FullEmail.ID, FullEmail.Country
FROM FullEmail
GROUP BY FullEmail.AORID, FullEmail.ID, FullEmail.Country
HAVING (((FullEmail.AORID)=1));

提前感谢您的阅读!

【问题讨论】:

    标签: sql ms-access sorting vba combobox


    【解决方案1】:

    前面的答案是正确的,除了需要使用聚合的有子句......所以只需使用 where。

    SELECT Country
    FROM FullEmail
    WHERE AORID=1
    GROUP BY Country;
    

    这应该可以解决您的问题。当您使用 HAVING 时,它会查看您选择的内容,因为您没有选择 AORID,所以它不知道该怎么做。

    【讨论】:

    • 我已将此作为我的 SQL 语句输入,但没有任何改变。也许我在解释中遗漏了某些内容,或者我对问题的解释不正确?
    • 您是否忘记将 WHERE AORID=1 替换为 "AORID=" & Me.cboRegion.Value?
    • 也有可能每次记录的数据都不完全相同...尝试说 SELECT Trim(Country) 和 GROUP BY Trim(Country)
    • 当我输入你说的内容时,我得到这个: SELECT FullEmail.Country FROM FullEmail WHERE ((("AORID=" & [Me].[cboRegion].[Value])False)) GROUP BY FullEmail.Country;有什么想法吗?
    • 你不能在里面设置这样的条件。尝试这样的操作:“SELECT FullEmail.Country FROM FullEmail WHERE (((AORID=" & Me.cboRegion.Value & "))) GROUP BY FullEmail.Country;”应该这样做
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多