How to: Break and Combine Statements in Code vb.net

时间:2015-09-14 15:39:28

标签: vb.net

I am getting following error:

Syntax error (missing operator) in query expression 'tblUnit.Unit_DescFROM tblUnit INNER JOIN tblStocks ON tblUnit.[Unit_Control] = tblStocks.[Stk_LinkUnit]'. andthis one Syntax error in FROM clause. 

Part of code that is failing:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim connetionString As String
    Dim connection As OleDb.OleDbConnection
    Dim oledbAdapter As New OleDb.OleDbDataAdapter
    Dim ds As New DataSet
    Dim i As Integer
    Dim sql As String
    connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dbInventor.mdb"
    connection = New OleDb.OleDbConnection(connetionString)

    connection.Open()
    sql = "SELECT tblStocks.Stk_LinkUnit, tblUnit.Unit_Desc" _
        & "FROM tblUnit INNER JOIN tblStocks ON tblUnit.[Unit_Control] = tblStocks.[Stk_LinkUnit];"

    oledbAdapter.SelectCommand = New OleDb.OleDbCommand(sql, connection)
    oledbAdapter.Fill(ds)
        oledbAdapter.Dispose()
        connection.Close()
        For i = 0 To ds.Tables(0).Rows.Count - 1
        MsgBox(ds.Tables(0).Rows(i).Item(1))
        Next
End Sub

End Class

3 个答案:

答案 0 :(得分:2)

You should add a space before FROM like this :

sql = "SELECT tblStocks.Stk_LinkUnit, tblUnit.Unit_Desc" _
    & " FROM tblUnit INNER JOIN tblStocks ON tblUnit.[Unit_Control] = tblStocks.[Stk_LinkUnit];"

答案 1 :(得分:2)

sql = "SELECT tblStocks.Stk_LinkUnit, tblUnit.Unit_Desc " _
    & "FROM tblUnit INNER JOIN tblStocks ON tblUnit.[Unit_Control] = tblStocks.[Stk_LinkUnit];"

or

sql = "SELECT tblStocks.Stk_LinkUnit, tblUnit.Unit_Desc" _
    & " FROM tblUnit INNER JOIN tblStocks ON tblUnit.[Unit_Control] = tblStocks.[Stk_LinkUnit];"

答案 2 :(得分:0)

You can also use an xml literal to format long or complex SQL however you like:

Dim sql = <sql>
        SELECT tblStocks.Stk_LinkUnit, tblUnit.Unit_Desc 
        FROM tblUnit INNER JOIN tblStocks ON 
                        tblUnit.[Unit_Control] = tblStocks.[Stk_LinkUnit]
        WHERE Foo=@p1 
            AND Bar=@p2
        </sql>.Value

Console.WriteLine(sql)

Be sure to include the .Value