簡體   English   中英

VB SQL 錯誤; 查詢表達式中的語法錯誤(逗號)

[英]VB SQL error; Syntax error (comma) in query expression

我有一個 VBA function 返回基於 WHERE 子句的十進制值。

SELECT * FROM [tbl_break] WHERE [From] < 6,25 AND [To] >= 6,25

我收到錯誤...查詢表達式“[From] < 6,25 AND [To] >= 6,25”中的語法錯誤(逗號)。

The Tabel look like this...
From    To  Break
0,00    4,00    0,25
4,00    8,00    0,50
8,00    12,00   0,75

如何處理查詢語句中的小數?

Public Function CalculateBreak(Units) As Double

On Error GoTo ErrorHandler

Dim connection As Object, result As Object
Dim sql As String

    sql = "SELECT * FROM [tbl_break] WHERE [From] < " & Units & " AND [To] >= " & Units
    Debug.Print sql
    
    ' Connect to the current datasource of the Excel file
    Set connection = CreateObject("ADODB.Connection")
    With connection
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _
        "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
        .Open
    End With
    
    ' Run the SQL query
    Set result = connection.Execute(sql)
    
    CalculateBreak = result(2)
    Debug.Print result(2)
    
    Exit Function
    
ErrorHandler:
    CalculateBreak = 0
    Debug.Print Err.Description
  
End Function

該解決方案適用於整數,但我依賴於小數。

使用Str強制使用點作為分隔符的十進制值的字符串表達式,這是 SQL 期望的:

sql = "SELECT * FROM [tbl_break] WHERE [From] < " & Str(Units) & " AND [To] >= " & Str(Units) & ""

結果:

SELECT * FROM [tbl_break] WHERE [From] < 6.25 AND [To] >= 6.25

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM