如何在 sql 表达式中插入逗号

how to insert comma in sql expression

我有这样的代码行:

  "select count(1) from tblEquipmentRegister where EquipmentID = " & Me.cmbEquipmentID.Value & " and StartTime is null"

结果是这个字符串:

  "select count(1) from tblEquipmentRegister where EquipmentID = 203203,16 and StartTime is null"

当我将这个字符串传递给函数时

  Public Function getOneValue(strSQL As String)
  Dim q As QueryDef
  Dim rec As Recordset
  Set q = CurrentDb.QueryDefs("qTmp")

  q.SQL = strSQL
  Set rec = q.OpenRecordset

  getOneValue = rec.Fields(0).Value

  Set q = Nothing
  Set rec = Nothing

  End Function

我明白了 syntax error (comma) in query expression 如果 EquipmentID 是没有逗号的数字,我不会收到错误消息。 我应该如何在 EquipmentID?

中构造带逗号的字符串
select count(1) from tblEquipmentRegister where EquipmentID = 203203,16 and StartTime is null

应该是

select count(1) from tblEquipmentRegister where EquipmentID = '203203,16' and StartTime is null

简而言之

select * from table where val=number

如果值为整数则正确。

但是如果它是一个字符串那么你应该使用

select * from table where val='some string'

所以 203203,16string20320316 是数字,这就是为什么不用逗号也能正常工作的原因。

因此您应该将代码编辑为

select count(1) from tblEquipmentRegister where EquipmentID = '" & Me.cmbEquipmentID.Value & "' and StartTime is null

如果 EquipmentID 可能包含单引号,上述代码将失败。

我使用函数 qString 将字符串括在引号中并将任何嵌入的引号加倍:

    ' Return string S quoted, with quotes escaped, for building SQL.
    ' O'Connor -> 'O''Connor'
    Public Function QString(ByVal s As String) As String
       QString = "'" & Replace(s, "'", "''") & "'"
    End Function

如果您只需要记录数,则可以使用 DCount 内置函数更轻松地获得它。这条语句将替换您的所有代码:

    getOneValue = DCount("*", "tblEquipmentRegister", _
                  "EquipmentID = " & QString(cmbEquipmentID) & _
                  " AND StartTime IS NULL")