Функция DELETE в UcanAccess выдает странное исключение

1

После устранения моста JDBC из Java 1.8 (который мы все еще скорбим) и перехода к UcanAccess, я отлаживал SQL-код, который в прошлом никогда не вызывал у меня никаких проблем. Одним из утверждений является:

DELETE TreatmentRecords.DateGiven, TreatmentRecords.TimeGiven, SInformation.Surname, SInformation.FirstNames, TreatmentRecords.Diagnosis, TreatmentRecords.*
FROM SInformation INNER JOIN TreatmentRecords ON SInformation.SID = TreatmentRecords.SID
WHERE (((TreatmentRecords.DateGiven)=#2015-03-07#) AND ((TreatmentRecords.TimeGiven)='17;16') AND ((SInformation.Surname)='Doe') AND ((SInformation.FirstNames)='John') AND ((TreatmentRecords.Diagnosis)='Headache'));

При выполнении в самом доступе я не получаю абсолютно никаких ошибок или проблем. Однако Ucancess выдает следующее исключение:

net.ucanaccess.jdbc.UcanaccessSQLException: unexpected token: TREATMENTRECORDS required: FROM

Любые идеи о том, почему были бы высоко оценены!

Теги:
ucanaccess

1 ответ

1
Лучший ответ

Это нестандартная инструкция SQL delete, которая не поддерживается ucanaccess, даже если движок Jet делает. Ничего странного в этом нет. Поэтому для этого вам нужно использовать стандартный SQL.

EDIT, например, что-то вроде этого (я не добавил все условия):

   DELETE FROM TreatmentRecords tr WHERE 
    tr.DateGiven=#2015-03-07# AND EXISTS 
(SELECT * FROM SInformation s WHERE s.SID=tr.SID AND  s.Surname='Doe')
  • 0
    Не могли бы вы посоветовать, как будет выглядеть стандартная инструкция SQL для вышеперечисленного?
  • 0
    Пожалуйста, посмотрите выше ;-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню