[РЕШЕНО]Передача даты в SQL запрос

Автор Ириминаге, 6 апреля 2022, 08:18

0 Пользователи и 1 гость просматривают эту тему.

Ириминаге

Здравствуйте!
При передаче даты в SQL запрос выдается ошибка:

ЦитироватьОшибка времени выполнения Basic.
Вызвано исключение
Type: com.sun.star.sdbc.SQLException
Message: Wrong data type: java.lang.IllegalArgumentException.

Данные для ввода берутся из Поля Даты:
Statement = ConnectToDataBase.createStatement()
TextBoxDat = oForm.getByName("VydDat")
TextBoxDatVal=TextBoxDat.text
SQL =   "UPDATE ""test2"" SET ""Выдан""=True, ""Склад""=False, ""АдрУст""='" & TextBoxAdrTxt & "', ""Кабинет""='" & TextBoxKabTxt & "', ""ДВыдч""='" & TextBoxDatVal &"' WHERE ""ИНКр""='" & TextBoxINTxt & "'"
res=Statement.executeQuery(SQL)


Мсгбокс показывает строку SQL как:
ЦитироватьUPDATE "test2" SET "Выдан"=True, "Склад"=False, "АдрУст"='Лермонтовский 28', "Кабинет"='1', "ДВыдч"='05.04.22' WHERE "ИНКр"='460'

Как правильно передать дату в запрос? В таблице тип данных поля ДВыдч - Дата.
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

mikekaganski

#1
Я не специалист в особенностях работы разных СУБД со строками дат. Но при первом признаке работы с датами я бы предположил, что единственный универсальный строковый формат для дат - ISO 8601: "2022-04-05". Если дата берётся из поля даты, то можно использовать
Format(CDateFromUnoDate(TextBoxDat.Date), "YYYY-MM-DD")
С уважением,
Михаил Каганский

sokol92

Цитата: Ириминаге от  6 апреля 2022, 08:18При передаче даты в SQL запрос выдается ошибка:
Среди разработчиков баз данных нет консенсуса в части обработки дат. :)
Лучше сразу указать, о какой именно базе данных идет речь.
Владимир.

Ириминаге

Цитата: mikekaganski от  6 апреля 2022, 08:44
Я не специалист в особенностях работы разных СУБД со строками дат. Но при первом признаке работы с датами я бы предположил, что единственный универсальный строковый формат для дат - ISO 8601: "2022-04-05". Если дата берётся из поля даты, то можно использовать
Format(CDateFromUnoDate(TextBoxDat.Date), "YYYY-MM-DD")

Даже Вашего неспециального знания хватило, чтобы решить проблему! Спасибо, Михаил!
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

Ириминаге

#4
Цитата: sokol92 от  6 апреля 2022, 13:46
Цитата: Ириминаге от  6 апреля 2022, 08:18При передаче даты в SQL запрос выдается ошибка:
Среди разработчиков баз данных нет консенсуса в части обработки дат. :)
Лучше сразу указать, о какой именно базе данных идет речь.
Это я упустил, согласен. Я решил сделать так, чтоб работало "из коробки", без танцев с бубном. В результате с бубном пляшу я. Мой выбор LibreOffice Base на базовом движке. Хочу, по возможности, не использовать дополнительные библиотеки.
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

sokol92

#5
"Из коробки" из "серьезных" баз данных поддерживается PostgreSQL.
Про встроенные базы данных - см. сообщение от @Ratslinger и далее по ссылкам.
Владимир.