KDPoid
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору exteris, Цитата: Цитата: Так по какой спецификации FD получает из 3 сентября - 41885? | Стандартный формат хранения даты в виндах. | Это был сарказм... Разве SQLite в какой-то спецификации позволяет хранить дату так? Dronton2, 1. Создаю чистое тестовое приложение. TFDConnection - TFDTable - TDataSource - TcxGrid Создаю чистую базу SQLite, database.net-ом: Код: CREATE TABLE dt4fd ( ID INTEGER NOT NULL PRIMARY KEY, create_date DATE, timestamp DATETIME ); | Начинаю сохранять даты, create_date сохраняется как строка формата 'YYYY-MM-DD' Отображается, редактируется. Если внести в это поле число, то FD, при попытке открыть таблицу, начинает падать с ошибкой: Invalid argument to date encode 2. Реальное приложение, которое пытается манипулировать данными. База sqlite - вытянута из устройства. Классы FD те же. Таблица в базе: Код: CREATE TABLE [CALENDAR] ( [ID] integer NOT NULL PRIMARY KEY AUTOINCREMENT, [DATE] date NOT NULL, ... | Если ручками поместить в эту таблицу дату как строку 'YYYY-MM-DD' - она нормально отображается. При попытке редактировать, - кладёт в базу дату как число дней с 01.01.1900 И продолжает корректно отображать дату. В обоих случаях поле даты в TFDtable распознавалось автоматически и имеет тип TDateField. Существенных отличий в пропертях не нахожу. Так что, похоже, где-то внутри FireDAC на ходу определяется способ конвертирования TDateTime в формат базы, иногда определяется косячно, а я возвращаюсь к первоначальному вопросу: Как умерить креативность FD, и заставить его сохранять данные строго в соответствии со спецификациями соответствующей базы? Добавлено: Если во втором случае удалить все данные из столбца [DATE] - это ничего не меняет. FD уже решил для себя, как он будет хранить данные в этот раз... | Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 04:48 25-09-2016 | Исправлено: KDPoid, 15:53 25-09-2016 |
|