1

这是visual basic报告上的截图。如您所见,它从八月开始,然后是十二月,然后是二月,但是我已经在访问权限上按它分组了。 在此处输入图像描述

这是访问中的一个查询,我不确定我是否做对了,但我已经被最早订购了。

在此处输入图像描述

这是来自 ms 访问的 sql 代码

SELECT MonthName(Month([Date_sold])) & ' ' & Year([Date_sold]) AS Month_Sold, Sum(tblSell.Total_Price) AS Total_Earnings, Sum(tblSell.Quantity_Bought) AS Total_Medicine_Sold, tblSell.Generic_name, tblSell.Brand_Name
FROM tblSell
GROUP BY MonthName(Month([Date_sold])) & ' ' & Year([Date_sold]), tblSell.Generic_name, tblSell.Brand_Name, Year([Date_sold]), Month([Date_sold])
ORDER BY Year([Date_sold]), Month([Date_sold]);

简而言之,它不是在我关于 Visual Basic 的报告中排序的,它应该首先显示 2 月,就像 ms 访问中的那样,但它显示的是 8 月,这是不同的。

4

2 回答 2

4

我相信,Order by 会被属性表上 Data 选项卡中的报告 Order By 属性覆盖。要么把它放在那里,要么确保它是空的。然后像这样设置报告属性:

Me.OrderBy = "[SomeField], [AnotherField]"
Me.OrderByOn = True

编辑:所有 Microsoft 产品都允许开发人员使用称为 VBA(Visual Basic for Applications)的语言访问开发环境。您可以使用这种语言编写程序和宏来增强产品。看看这里,虽然它有点旧,但它可能仍然相关:http: //visualbasic.about.com/od/learnvba/l/aa030803b.htm

对于您,您需要将我建议的代码添加到报告的 OnLoad 事件中。去做这个:

  1. 开放存取
  2. 在设计视图中打开您的报表。
  3. 在左侧,您应该会看到一个名为“属性表”的选项卡
  4. 选择事件选项卡
  5. OnLoad事件中,单击“ ... ”(省略号)按钮
  6. 这将调出VBA 代码
  7. 添加这个:
Private Sub Report_Load()
    Me.OrderBy = "[SomeField], [AnotherField]"
    Me.OrderByOn = True
End Sub

试试看它是否有效。

于 2013-03-05T14:03:32.883 回答
1

它没有排序的原因(我在做一些装运订单报告时遇到同样的问题)是因为代码没有读取日期。它将按字母顺序列出它们,因为它是一个文本字段而不是一个短日期。我只是去了参数,并能够在那里修复它。

于 2013-05-23T18:15:08.310 回答