Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Сложение столбцов / 13 сообщений из 13, страница 1 из 1
27.03.2014, 14:57
    #38598175
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Столкнулся с проблемой: в Selecte вычисляю значения (например поле1*поле2), так вот результат получаю верный, но он распознаётся как строка. Нашёл эти грабли, когда попытался сделать суммирование по столбцу в FR и получил результат типа: -170.12-210.13-18.16 Думал ФР, после попіток победит средствами ФР, начал думать, что дело в запросе. Выложил грид(cxGrid), засунул в него результаты, и сделал подсчёт в footere - ругнулось мол не можект конвертнуть оле-строку в флоат.
...
Рейтинг: 0 / 0
27.03.2014, 15:26
    #38598209
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Можно ли как-то в запросе изменить разделитель целой и дробной части числа с "." на "," ???
...
Рейтинг: 0 / 0
27.03.2014, 19:54
    #38598469
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Dmitry YМожно ли как-то в запросе изменить разделитель целой и дробной части числа с "." на "," ???Это не нужно.

В запросах используй точку. При выводе на экран используй тот разделитель который твоя винда считает правильным.
...
Рейтинг: 0 / 0
01.04.2014, 11:05
    #38601648
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
И все-таки, почему "вычилсяемые" столбцы воспринимаются как строковые?
Пример:
Код: sql
1.
Select CAST(Count(1) as Integer)...


в результате получаем строковые данные, т.е. не то что бы я гридом мог работать как с числом, даже родные утилиты воспринимают их как текст (выравнивания чисел по правому краю, а текста по левому). Да я при работе с отчётными системами в ручную делаю конвертацию, а вот если я гриду хочу добавить "футер" в котором будут отображаться автосума, среднее и т.п. - то тогда или голяк, или бери считывай все данные, делай грид "ручным" и заливать туда данные не с датасоурса, а ручками предварительно конвертнув. Ну и представляете как "быстро" обработаются данные в кол-ве 1000, а 10000??? ЭТО БРЕД!!! Можно ли как то сделать так, что бы принудительно указать тип возвращаемого значения "вычисляемого" столбца.
ЗЫ: уж тем более это проблема касается таких полей как "Stolbec1 as Float * Stolbec2 as Float" = TEXT
...
Рейтинг: 0 / 0
01.04.2014, 11:07
    #38601650
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Опять же можно сгенериовать запрос, и запихнуть его в темпори тейбл, где принудительно указать тип данных, но ведь это тоже изврат, время и более сложный механизм, а чем сложнее механизм тем больше вероятность "поломок"!
...
Рейтинг: 0 / 0
01.04.2014, 18:36
    #38602258
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Читать до просветления:
http://sqlite.org/datatype3.html
...
Рейтинг: 0 / 0
02.04.2014, 12:39
    #38602914
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
White Owl,

А по человечески? Это я читал, но ничего для себя не нашёл.
К примеру,
Код: sql
1.
typeof(Count(1))


возвращает integer
а фактически когда убираю typeof получаю на выходе string и соответственно не могу использовать силу грида
CAST как я уже писал, так же не помогает! Решения на предложенном вами мануале не нашёл!
...
Рейтинг: 0 / 0
02.04.2014, 13:12
    #38602950
PPA
PPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Dmitry Y,

А ты какие компоненты в делфях используешь для TDataSet-а
может в них баг и они не умеют делать корректно describe типов полей из sqlite
и когда что-то не понятное - тупо создают TStringField
создай явно экземпляр типа TFloatField?
...
Рейтинг: 0 / 0
02.04.2014, 14:10
    #38603026
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
PPA,
Я использую cxGrid, FastReport4 -все они воспринимают данные как строку. Ну в FastReport4 есть возможность написания скрипта, т.е. решить проблему, а с гридом всё уныло.
Более того, утилиты (sqliteexpert, sqliteadmin) они при выводе данных "форматируют" вывод данных, т.е. текст выравнивается по левой стенке столбца, а число по правой - и у них результат "форматируется" как текст, т.е. по левой стенке. Так что вероятность что 2 компонента+2 утилиты и все "бракованные" - неимоверно мал!
...
Рейтинг: 0 / 0
02.04.2014, 14:12
    #38603033
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
А в cxGrid указать тип как int или float пробовал, он автоматом меняется на строку :(
...
Рейтинг: 0 / 0
02.04.2014, 15:54
    #38603199
PPA
PPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Dmitry YА в cxGrid указать тип как int или float пробовал, он автоматом меняется на строку :(

Может я уже подзабыл как VCL работает :)
но у вас грид от девок к какому источнику данных цепляется?
есть ведь наследник от TDataSet ?
вот там и попробуйте указать типы полей
...
Рейтинг: 0 / 0
02.04.2014, 17:04
    #38603314
Dmitry Y
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
PPADmitry YА в cxGrid указать тип как int или float пробовал, он автоматом меняется на строку :(

Может я уже подзабыл как VCL работает :)
но у вас грид от девок к какому источнику данных цепляется?
есть ведь наследник от TDataSet ?
вот там и попробуйте указать типы полей
Датасет TZQuery от Zeos. Указать тип поля там негде. Есть как я сказал в гриде, но оно "меняется" само на тот тип, который возвращает запрос.
...
Рейтинг: 0 / 0
02.04.2014, 19:49
    #38603487
PPA
PPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложение столбцов
Dmitry YДатасет TZQuery от Zeos. Указать тип поля там негде.

с этой либой не работал
но тип поля не указывается в виде проперти
а явно создается в виде экземпляра нужно класса

TFiled - есть базовый класс и от него куча наследников
TFloatField
TIntegerField
TStringField
....

так вот когда датасет создается - он создает экземпляры нужных типов сам (если их заранее не создали)
у тебя наверно глючит что-то и создается в автомате TStringField вместо TFloatField
найди причину и поправь
у датасета есть ведь в контекстном меню - пункт FieldsEditor или что-то вроде такого.
у тебя в нем пусто?

а cxGrid тут по-моему вообще не причем. он выбирает уже визуальные контролы для удобной редакции
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Сложение столбцов / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]