Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

22 Май 2022, 14:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Передача даты в SQL запрос  (Прочитано 598 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


« Стартовое сообщение: 6 Апрель 2022, 08:18 »

Здравствуйте!
При передаче даты в 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'

Как правильно передать дату в запрос? В таблице тип данных поля ДВыдч - Дата.
« Последнее редактирование: 6 Апрель 2022, 14:31 от Ириминаге » Записан

Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...
mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 726


« Ответ #1: 6 Апрель 2022, 08:44 »

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

С уважением,
Михаил Каганский
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 909


WWW
« Ответ #2: 6 Апрель 2022, 13:46 »

При передаче даты в SQL запрос выдается ошибка:
Среди разработчиков баз данных нет консенсуса в части обработки дат. Улыбка
Лучше сразу указать, о какой именно базе данных идет речь.
Записан

Владимир.
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


« Ответ #3: 6 Апрель 2022, 14:26 »

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

Даже Вашего неспециального знания хватило, чтобы решить проблему! Спасибо, Михаил!
Записан

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

Сообщений: 49


« Ответ #4: 6 Апрель 2022, 14:31 »

При передаче даты в SQL запрос выдается ошибка:
Среди разработчиков баз данных нет консенсуса в части обработки дат. Улыбка
Лучше сразу указать, о какой именно базе данных идет речь.
Это я упустил, согласен. Я решил сделать так, чтоб работало "из коробки", без танцев с бубном. В результате с бубном пляшу я. Мой выбор LibreOffice Base на базовом движке. Хочу, по возможности, не использовать дополнительные библиотеки.
« Последнее редактирование: 6 Апрель 2022, 14:32 от Ириминаге » Записан

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

Пол: Мужской
Сообщений: 909


WWW
« Ответ #5: 6 Апрель 2022, 14:59 »

"Из коробки" из "серьезных" баз данных поддерживается PostgreSQL.
Про встроенные базы данных - см. сообщение от @Ratslinger и далее по ссылкам.
« Последнее редактирование: 6 Апрель 2022, 15:08 от sokol92 » Записан

Владимир.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!