如何在 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,16
是 string
而 20320316
是数字,这就是为什么不用逗号也能正常工作的原因。
因此您应该将代码编辑为
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")
我有这样的代码行:
"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,16
是 string
而 20320316
是数字,这就是为什么不用逗号也能正常工作的原因。
因此您应该将代码编辑为
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")