1

在我的程序中,我连接到 Access 2010 数据库,从那里我使用 SQL 语句读取该查询中的前 30 条记录。我在阅读时遇到的问题是我收到错误消息:"Syntax error (missing operator) in query expression '* b_forte ORDER BY ProdDate DESC'"。我不能 100% 确定我的陈述中遗漏了什么,而且我在网上找不到解决方案。我正在使用的代码如下:

    Public Sub CheckForRepeat()

    Dim mydb As String
    Dim mystr As String

    Dim connection As OleDb.OleDbConnection
    'Connection string to connect to database.
    mystr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Fortedb.accdb"
    connection = New OleDb.OleDbConnection(mystr)

    'Opening database.
    connection.Open()

    'Select top 30 records from database organizing by the date, and line ID.
    mydb = "SELECT TOP 30 * b_forte ORDER BY ProdDate DESC, BaleLine DESC"

    'Will display the SQL statement if DisplayCode is checked off.
    If GlobalVariables.DisplayCode = True Then
        MainTextBox.AppendText(Environment.NewLine & mydb)
    End If

    Dim run = New OleDb.OleDbCommand

    run = New OleDbCommand(mydb, connection)
    'Executing the SQL statement.
    run.ExecuteNonQuery()
    connection.Close()

End Sub

错误消息在 处触发run.ExecuteNonQuery(),我认为我的 SQL 语句中一定遗漏了一些东西。b_forte, ProdDate, 和BaleLine在我的 Access 2010 数据库中都是有效的,并且连接字符串是正确的,因为我之前在我的代码中使用它来连接到同一个数据库。

4

2 回答 2

3

您需要使用FROM关键字。

SELECT TOP 30 * FROM b_forte ORDER BY ProdDate DESC, BaleLine DESC
于 2013-08-01T15:15:38.437 回答
2

您没有在查询中包含表名(因此没有 FROM 子句)...

您的查询应如下所示:

SELECT TOP 30 b_forte FROM TableName ORDER BY ProdDate DESC, BaleLine DESC
于 2013-08-01T15:16:03.893 回答