2016-04-06 2 views

ответ

0

Удалить LIMIT 1.

Это будет SELECT TOP 1 ... в Access, но здесь он не нужен.

+0

@VigneshKumar: запрос «WHERE NOT EXISTS», ** ** доступен в Access. – Andre

+0

См. Этот ответ: http://stackoverflow.com/a/28282198/1033684 –

0

Как указано here

Я хотел бы сделать что-то вроде этого: проверьте, чтобы увидеть, если код существует в таблице ProcedureCodeModifier, и если этого не произойдет, то запустите вставить в SQL. Возможно, вам придется немного поиграть с этим, в зависимости от того, является ли ваше поле кода ТЕКСТом или INT, но это должно сделать вам большую часть пути.

Dim db as Database 
Dim rec as Recordset 
Dim sSQL as String 

Set db = CurrentDB 
Set rec = db.OpenRecordset("SELECT ProcedureCode FROM ProcedureCodeModifier WHERE ProcedureCode = 'A1'") 

Это обновит набор данных, так что вы можете получить точное количество записей rec.MoveFirst rec.MoveLast

Если количество записей равно 0, то код не в БД еще так что вы необходимо добавить его

If rec.RecordCount = 0 Then 
    sSQL = "INSERT INTO ProcedureCodeModifier (ProcedureCode, Description) VALUES ('A1', 'Dressing for one wound')"; 
    DoCmd.RunSQL sSQL 
EndIf 

Всегда устанавливайте переменные соединения в Nothing, чтобы соединение закрывалось!

Set db = Nothing 
Set rec = Nothing 
0

Предложение «TOP 1» должно быть в основном запросе.

INSERT INTO ProcedureCodeModifier (ProcedureCode, Description) 
    SELECT TOP 1 
     'A1' AS ProcedureCode, 
     'Dressing for one wound' AS Description 
    FROM 
     ProcedureCodeModifier 
    WHERE 
     NOT EXISTS (SELECT TOP 1 ProcedureCode, Description 
        FROM ProcedureCodeModifier 
        WHERE ProcedureCode = 'A1'); 

Если ProcedureCodeModifier таблица пуста или если имеется только одна запись в таблице, то пункт «TOP 1» должен быть опущен в подзапроса. Я использовал Top 1 Clause в подзапросе для некоторой проблемы с производительностью.

Смежные вопросы