Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для kskb7771
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 79

Cумма по полю DBgrid

21.04.2010, 13:30. Показов 2153. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! у меня в программе нужно посчитать сумму по полю в Dbgrid. бд содержит данные о звонках. выглядит это так:
дата время направление номер минуты тариф сумма
01.10.09 9:28 Федеральная сотовая сеть, МСС 89629822530 1,00 0.05 0,05

типы данных в бд SQL:
дата-CHAR
время-CHAR
направление-CHAR
номер-VARCHAR
минуты-CHAR
тариф-CHAR
сумма-CHAR

Но выводит ошибку:
Project Project1.exe raised exception class EDBEngineError with message 'General SQL error. [Microsoft][ODBC SQL Server Driver][SQL Server]The sum aggredate operation cannot take a char data type as an argument .'.Process stopped. Use Step or Run to continue.

вот код:
Delphi
1
2
3
4
5
6
7
procedure TForm3.Button1Click(Sender: TObject);
begin
Query7.Close;
Query7.SQL.Clear;
Query7.SQL.Add('select sum(Summa) from Napravlenie');
Query7.Open;
Edit3.Text:=Query7.Fields[0].AsString;

помогите пожалуйста разобраться(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2010, 13:30
Ответы с готовыми решениями:

Аввтофильтр по вычесляемому полю DBGrid
Есть таблица Excel с полями "Фамилия", "Имя", "Год рождения", "Количество дней". Эта таблица загружается в DBGrid. В ADOQuery создается...

Фильтрация в DBGrid по полю AdoQuery Filter
Здравствуйте, помогите пожалуйста начинающим дилетанта, есть бд в DB Grid выводится таблица собранная из четырёх, с условиями и...

Поиск в DBGrid по "ложному" полю используя Locate
Доброго времени суток! Возникла проблема. На форме расположен DBGrid привязанный к ADOTable. Поля таблицы (к примеру, id-prepod ) в Гриде...

8
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
21.04.2010, 14:21
Этто, конечно, большое чудачество для хранения информации о денежных суммах использовать поле типа char. Агрегатная функция Sum с полем char не работает принципиально. Насколько можно понять из сообщений, которые Вы привели у Вас используется SQL Server. Поищите, там должны быть функции приведения типов. Я могу привести пример из FireBird. Там бы это выглядело так
SQL
1
SELECT SUM(CAST(Summa AS NUMERIC(15,2))) FROM Napravlenie
То есть до суммирование поле Summa сторокового типа приводится к типу numeric(15,2)
Что - то подобное в SQL Server должно быть. Хотя, вопрос, зачем так делать, остается
0
 Аватар для kskb7771
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 79
21.04.2010, 14:28  [ТС]
SAMZ, Хотя, вопрос, зачем так делать, остается

подскажите если знаете как ещё можно))
или же какие типы ставить в базе??

Syntax for CAST:
CAST ( expression AS data_type [ (length ) ])

Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

вот нашёл что то, но я не очень понимаю как тут что писать(
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
21.04.2010, 17:46
Цитата Сообщение от kskb7771 Посмотреть сообщение
CAST ( expression AS data_type [ (length ) ])
Ну, так оно и есть. То есть, на SQL Server приведение типов точно такое, как и на FB, что не удивительно. Здесь
expression - произвольное выражение, в качестве которого можно использовать имя поля, подлежащего преобразованию
AS - ключевое слово
(length ) размерность. В примере, который я привел
SQL
1
CAST(Summa AS NUMERIC(15,2))
поле сумма приводится к типу numeric(15,2)
Это означает, что поле Summa в данном запросе будет интерпритироваться как вещественное с фиксированным расположением десятичной точки. При этом на представление значения поля выделяется 15 значащих цифр и две из них для представления дробной части (копейки, например)
В таблице следовало использовать для этого поля тип numeric (я не работаю с SQL Server по причине личной неприязни к этому монстру, возможно там тип numeric называется иначе, но это маловероятно).
Квадратные скобки означают необязательность параметра, но для типа numeric указание рамерности оьязательно
0
 Аватар для kskb7771
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 79
21.04.2010, 18:38  [ТС]
SAMZ, пишет: ... error converting data type varchar to numeric ...
если в базе менять тип данных этого поля то , тоже выдаёт сообщение о невозможности этого сделать.(
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
21.04.2010, 19:43
Цитата Сообщение от kskb7771 Посмотреть сообщение
error converting data type varchar to numeric
Сие означает, что в конвертируемом поле есть символы, которые недопустимы для numeric. Т.К ты используешь char , то там может быть все, что угодно: где-то запятая вместо точки, где -то пробелы. Не майся, используй для числовых данных соответсвующие поля. ТО, что ты пытаешься сделать - гемморой и проктология
0
 Аватар для kskb7771
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 79
21.04.2010, 20:23  [ТС]
SAMZ, да я пробовал у поля изменить тип, но выдаёт ошибку.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
22.04.2010, 06:22
да я пробовал у поля изменить тип, но выдаёт ошибку.
Если это живая БД, то хреново. Если нет и данных не жалко, то нужно посмотреть, какин объекты (триггеры, хранимые процедуры, ограничения и т.д) БД зависят от этого поля, убрать эти зависимости. Затем дропнуть это поле и создать по новой. Млжно иначе, создать новое поле нужного типа с другим именем и дальше работать с ним.
0
 Аватар для kskb7771
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 79
15.05.2010, 20:33  [ТС]
SAMZ, инф-я в поле SUMMA выглядит так: 2,34
т.е. там цифровые значения идут не через точку а через запятую!
я уже устал биться с этим косяком((((
не знаю как быть. вот код:
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm3.Button1Click(Sender: TObject);
begin
Query7.Close;
Query7.SQL.Clear;
Query7.SQL.Add('select sum(Cast(Summa as Numeric(30,2))) from Napravlenie ' +
               ' where napravlenie='+QuotedStr(edit2.Text));
Query7.Open;
Edit3.Text:=Query7.Fields[0].AsString;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2010, 20:33
Помогаю со студенческими работами здесь

Фильтрация в DBgrid по полю TDBEdit
Здраствуйте. Столкнулся с такой проблемой: (я использую СУБД "FireBird" 2/0) Есть таблица "Исследования" все данные из нее...

Сортировка по выбранному полю DbGrid
У меня есть 3 Radiobutton. Подскажите, как сделать сортировку по выбранному одному из полей.

Подсчет уникальных значений по полю с фильтром по другому полю
Добрый день! Есть два столбца. Хочу посчитать количество строк, но по первому условию отобрать записи в ячейках которых встречается...

Сортировка структуры по полю Tag и по полю Eng
Есть структура: struct _1C { string Tag; string Rus; string Eng; _1C(const string &Tag, const string &Rus, const string...

Cумма
2. Для любого целого К обозначим количество цифр в его десятичной записи D(К). Дано натуральное число n. Вычислить ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru