2015-01-09 5 views
0

У меня есть строки кода, как это:как вставить запятую в SQL выражении

"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?

+0

Включите EquipmentId с помощью одной кавычки. «выберите count (1) из tblEquipmentRegister, где EquipmentID = '' & Me.cmbEquipmentID.Value &" 'и StartTime имеет значение null " – Thangadurai

ответ

1
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 
+0

, тогда я получаю' несоответствие типов данных в выражении критериев' в строке кода 'set rec = q.OpenRecordset ' – PauliusM

+0

решил его, изменив типы некоторых полей. – PauliusM

+0

, что нужно сделать, вы не можете ввести строку в целочисленный тип данных. –

2

Если есть вероятность того, что 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") 
Смежные вопросы