На данный момент проблема выглядит так (мои мысли):
SQLite2 - все данные хранила в ASCII тексте. SQLite3 для хранения использует:
- NULL
-INTEGER
-REAL
-TEXT
-BLOB
Вне зависимости, что вы ему скормили
. Например Float и Double хранятся как Real.
Хорошо - изменил базу данных и храню данные в столбце как Real. Всё равно при отображении столбца в TDBGrid вместо 3,84 в ячейке отображается 4 - пока на ячейку не ткнешь для редактирования (тогда в ячейке 3,84).
По идее виноваты оба
и я чуть чуть
. В SQLite3 - нет нормального Float (в Lazaruse он через Double сделан, т.к. Real считается устаревшим (менее точным)). А в Zeos нет нормального отображения Real в TDBGrid - думаю т.к. Real менее точным.
Если использовать TSQL3DATASET, а не Zeos, то с отображением Real - нет проблем, а вот с отображением даты они начинаются (она просто не отображается).
Т.к. мне нужно здесь и сейчас, т.к. я знаю что в записи будет не больше 15 знаков и записей не будет больше 1 000 000, причём их плюсовать не будут чаше чем раз в месяц, смахнув скупую слезу оптимизации и экономии аппаратных ресурсов - решил всё хранить в string и ждать выхода SQLite 4 - c нормальной поддержкой Float или новой версии Zeos...
Вообще тоже много работал с Firebird (правда на Delphi). А в конкретно этом проекте юзаю SQLite3, т.к. у меня ограничения на установочный файл - не более 3-5 мегабайт (для Windows).
Можно конечно было использовать TSQL3DATASET, и дату хранить в двух полях (дублировать) - с типами дата и string. String выводить, по полю с датой сортировать. Но как бы это очень неудобно
. Да и с Zeos мне работать привычней.