【问题标题】:How to use SUM and GROUP BY(SQL) with Visual FoxPro in VB.NET?如何在 VB.NET 中将 SUM 和 GROUP BY(SQL) 与 Visual FoxPro 一起使用?
【发布时间】:2014-08-04 22:36:36
【问题描述】:

我对 VB 没有太多经验。我已经构建了一个可以从表(FoxPro)中检索数据的 VB 应用程序。代码如下:

 Dim dBaseCommand As New System.Data.OleDb.OleDbCommand("SELECT * FROM inventory", con)
    Dim dBaseDataReader As System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)

但我需要运行以下 SQL 而不是 SELECT * FROM inventory

SELECT itemnumber, mfgr, SUM(qty) AS cqty, unitcost, description FROM inventory GROUP BY itemnumber

我更换了 SQL,但它不起作用。如何在我的 VB 代码中实现该 SQL 或 GROUP BY 语句?

更新:

SQL 是来自 MySQL 的示例 sql。但是我已经更新了我现在在我的 VB 应用程序中实际使用的 SQL。它不会显示任何错误或不会关闭应用程序本身,也不会生成应该由该应用程序生成的文件。如果我使用第一个示例代码中的 sql,它会从该表中很好地生成文件。

我也去了数据库资源管理器(数据源)来运行这个查询。出现了以下问题。有任何想法吗? Foxpro 或任何其他解决方法不支持?

执行 SQL:“GROUP BY 子句丢失或无效”

验证 SQL 语法:此提供程序不支持此命令

这与没有 group by 的this link 有关系吗?

如果我使用 ODBC 数据提供程序,它是否支持 SQL?

更新 2:

看起来 ODBC 驱动程序支持 GROUP BY。但微软建议使用 OLEDB 数据提供程序而不是不支持 GROUP BY 的 ODBC。在 Visual Basic 数据连接中,我没有将 ODBC 视为可用的数据提供者。它只有 SQL server 数据提供者和 OLEDB 数据提供者。有什么方法可以让我使用 ODBC 数据提供程序,然后使用 GROUP BY 语句?

*我的声誉不允许我包含更多引用以引用最后的信息。

【问题讨论】:

  • 再详细一点怎么样。它是如何“不起作用”的?没结果?例外?一个你没想到的数字?
  • 不起作用?什么错误?
  • 感谢您对此进行调查。请查看我更新的问题。

标签: sql vb.net sum grouping


【解决方案1】:

我不得不将 SQL 更改为以下代码并且它起作用了:

SELECT     itemnumber, SUM(qty) AS qty, description
FROM         inventory
GROUP BY itemnumber, description

从 VFP 8 开始,带有 GROUP BY 子句的 SELECT 只能选择与 GROUP BY 或具有聚合函数的字段相关联的列。如果我们需要使用 GROUP BY 子句,我们需要小心这些条件。因此,如果删除 GROUP BY 子句中的“描述”,则 SQL 不起作用。同样,如果从 qty 列中删除 SUM 函数,则 SQL 将不起作用。

这些条件解释了为什么会弹出“GROUP BY 子句丢失或无效”。好消息是我们可以在嵌入到应用程序之前验证 Visual Studio 上的查询。

【讨论】:

    【解决方案2】:

    删除 Inventory 周围的单引号,以做出声明:

     SELECT partnumber, SUM(quantity) FROM inventory GROUP BY partnumber
    

    Inventory 是一个 SQL 对象,而不是文本字面量。

    【讨论】:

    • 它们是反引号而不是单引号 - used in MySQL 表示字段和表名称,很像 T-SQL 中的 []。我不知道 FoxPro 使用什么。
    • @Basic:我相信 ANSI 标准是像“inventory”这样的双引号;但是,仅当表名或字段名是语言中的关键字时才需要它们。
    • 感谢您调查我的问题。请查看我更新的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2021-04-03
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    相关资源
    最近更新 更多