0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
1

Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?

16.12.2015, 22:13. Показов 4528. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я так понял что для этого необходим еще один компонент: DBChartSource1. В качестве теста я связал их вместе, настроил связь с базой(там всего 2 поля, типа integer), обычный график линейного типа получился без проблем... но другое дело рабочая база! Там есть такие поля как RecNum типа integer и RecDate типа Date. Пробую делать как в тесте, но с выборкой, т.к. мне нужна не вся инфа, а только та где Autor(поле текстового типа обозначающее владельца записи) например user, а точнее кол-во записей такой инфы... грубо говоря в итоге должен получиться пирог показывающий в долях сколько записей добавил каждый юзер базы (всего юзеров 3, поэтому пирог будет по сиротски"" деленый). я добавил допольнительный sqlquery, записал в него

Код
SELECT Count (*) as RecNum From MainTable where autor IN('USER');
получаю вроде как кол-во записей, который сделал юзер ( на всякий кинул это на лэйбл, получил правдивое число, сравнивал по базе...все четко ) Потом пробую в ручную в параметр записать данные о кол-ве выбранных строчек, примерно так
Код
DBChartSource1.FieldY:=SQLQuery1.FieldByName('RecNum').AsString;
и вроде как с этим полем даже что-то получается, потому что Y стал вроде как примерно пронумерован как надо(шаги конечно настроить бы), а вот с датой полная труба... ни .AsDate ни .AsInteger не помогают, все время не соответствие типов полученых и ожидаемых...да и вообще пирога никакого не получается... пример с компонентом есть, но там все уже подточено, все в интежерах, а у меня то дата... подскажите кто что может
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2015, 22:13
Ответы с готовыми решениями:

Как создать диаграмму базы данных?
Здравствуйте, на вас вся надежда, я работаю под ОС windows 8, написал дипломную работу, теперь...

Не могу создать диаграмму базы данных
Всем привет! Пробую себя в sql server management studio. Создал таблицу, но не могу создать...

Не возможно создать диаграмму базы данных
Привет всем! Помогите пожалуйста, не могу создать диаграмму базы данных подключаюсь к базе...

Как вставить длинный SQL запрос из Firebird в Lazarus?
Короткий запрос работает, а длинный не работает. Хотя в Firebird работает. Может можно его как-то...

19
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
16.12.2015, 22:45 2
Можешь тестовый проект прикрепить (в базе достаточно 3-4 записи), с объяснением, что хотелось бы получить в итоге?
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
16.12.2015, 23:16  [ТС] 3
Кликните здесь для просмотра всего текста
вот набросал примерно то, на чем остановился, убрал только простую линейную диаграмму, потому что там реально легко все... тут вот из базы надо
получается должна быть круговая диаграмма, поделена в соответствии с тем, сколько каждый пользователь(поле бд - autor) сделал заявок от общего их кол-ва...легенды и т.д. не важно...потом настрою...тут пока данные считать не получается) и мануала никакого особо то(по работе с базой как источник) и нет как я понял
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
17.12.2015, 01:03 4
Tim_van_Leyden, а если вот так:
Вложения
Тип файла: 7z Tch.7z (88.7 Кб, 62 просмотров)
1
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
17.12.2015, 18:33  [ТС] 5
Цитата Сообщение от volvo Посмотреть сообщение
а если вот так:
Да! То, что нужно! и на моем рабочем приложении сработало как часики! Спасибо огромное!
Единственное, не нашел в многочисленных параметрах настройки цвета для этих "кусочков"...
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
20.12.2015, 19:13  [ТС] 6
Цитата Сообщение от volvo Посмотреть сообщение
Tim_van_Leyden, а если вот так:
Не подскажите как изменить цвета в круговой диаграмме?
И еще вопрос... у меня по Х располагаются месяцы, но отображаются в цифре. Запрос у меня выводит текстовое обозначение месяцев, но не могу понять как их прикрутить к Х, вместо цифрового обозначения. и еще бы развернуть их на 90 градусов, а то не вместятся... подскажите?
Кликните здесь для просмотра всего текста
Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
22.12.2015, 13:02 7
Цитата Сообщение от Tim_van_Leyden Посмотреть сообщение
как изменить цвета в круговой диаграмме?
Добавить в результаты работы SQLQuery еще один столбец, содержащий численное значение нужного цвета, и назначить этот столбец в DbChartSource1.FieldColor:
Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?


Как видишь, вместо красного у меня появился заданный синий.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
30.12.2015, 22:38  [ТС] 8
volvo подскажите пожалуйста!
у меня по Х располагаются месяцы, но отображаются в цифре. Запрос у меня выводит текстовое обозначение месяцев, но не могу понять как их прикрутить к Х, вместо цифрового обозначения. и еще бы развернуть их на 90 градусов, а то не вместятся... подскажите?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
30.12.2015, 22:55 9
Я не вижу твоего проекта, где у тебя это все делается. По описанию ничего не понятно, "кто на ком стоял". Будет тестовый проект - будет помощь, писать абы что и делать абы как, чтобы только что-то написать - не приучен.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
30.12.2015, 23:37  [ТС] 10
volvo подскажите пожалуйста!
у меня по Х располагаются месяцы, но отображаются в цифре. Запрос у меня выводит текстовое обозначение месяцев, но не могу понять как их прикрутить к Х, вместо цифрового обозначения. и еще бы развернуть их на 90 градусов, а то не вместятся... подскажите?
и
Добавить в результаты работы SQLQuery еще один столбец, содержащий численное значение нужного цвета, и назначить этот столбец в DbChartSource1.FieldColor:
Пробую писать так(в поле цвета забил):
DbChartSource1.FieldColor:=SQLQuery10.FieldByName('FIELDCOLOR').AsString;
Ругается что не видит поля 32758...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
30.12.2015, 23:56 11
Я ничего не сказал про ТАКОЕ назначение поля. Достаточно просто
Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?
1
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
31.12.2015, 00:28  [ТС] 12
volvo, действительно, так все замечательно сработало! Спасибо!

Не могли бы подсказать все-таки насчет месяцев словами, вместо цифр?

у меня по Х располагаются месяцы, но отображаются в цифре. Запрос у меня выводит текстовое обозначение месяцев, но не могу понять как их прикрутить к Х, вместо цифрового обозначения. и еще бы развернуть их на 90 градусов, а то не вместятся... подскажите?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
31.12.2015, 02:23 13
1) у Chart-а в AxisList.Bottom выставить LabelFont.Orientation = 900, это развернет текст вертикально.
2) в DbDataSource выставить поля FieldY в Count, а FieldText - в Case (см. скриншот)
3) в AxisList.Bottom чарта выставить Source в твой DbChartSource. Результат - там же, на скриншоте...
Миниатюры
Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?  
1
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
31.12.2015, 19:07  [ТС] 14
volvo,
Наверное теперь проблема в моем запросе, т.к. все выставляю как вы подсказали, но по X у меня почему то все равно отображаются числовые значения месяцев...
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT
CASE t.MyMonth
WHEN 1 THEN 'Январь'
WHEN 2 THEN 'Февраль'
WHEN 3 THEN 'Март'
WHEN 4 THEN 'Апрель'
WHEN 5 THEN 'Май'
WHEN 6 THEN 'Июнь'
WHEN 7 THEN 'Июль'
WHEN 8 THEN 'Август'
WHEN 9 THEN 'Сентябрь'
WHEN 10 THEN 'Октябрь'
WHEN 11 THEN 'Ноябрь'
WHEN 12 THEN 'Декабрь'
 
ELSE ''
END
, COUNT(*), t.mymonth
 
FROM (SELECT (EXTRACT(MONTH FROM RecDate)) AS Mymonth FROM Maintable) AS t
GROUP BY t.Mymonth
ORDER BY t.Mymonth
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
31.12.2015, 19:19 15
Да в принципе компоненте DbDataSource должно быть все равно, какой там запрос. Он же возвращает тот результат, который приведен выше в твоем посте №6? Значит, должен работать. Очень странно, но тут я уже ничем помочь не могу, нужно экспериментировать именно на твоей базе, а не на той, которую я создам сам. Я уже создал сам один раз, все сработало.
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
31.12.2015, 19:40  [ТС] 16
Цитата Сообщение от volvo Посмотреть сообщение
Значит, должен работать.
попробую на том примере, который я сюда закидывал, возможно моя рабочая большая база и правда от этой чем то отличается...
В любом случае, спасибо большое за помощь! Большинство вопросов закрыты, результат радует =)
С наступающим новым годом Вас! Всего наилучшего
0
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
01.01.2016, 18:10  [ТС] 17
Взгляните пожалуйста на то, что у меня сейчас есть... возможно на примере будет понятно, где я все-таки ошибся
Кликните здесь для просмотра всего текста
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
01.01.2016, 20:09 18
Цитата Сообщение от volvo Посмотреть сообщение
в AxisList.Bottom чарта выставить Source в твой DbChartSource
Не было сделано. Зайди в Chart2.AxisList.Bottom.Marks и выставь Source. Ну, и Style тут же переключи в smsLabel. Тогда все нормально отображается:
Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?
1
0 / 0 / 2
Регистрация: 07.06.2015
Сообщений: 149
01.01.2016, 21:13  [ТС] 19
Цитата Сообщение от volvo Посмотреть сообщение
тут же переключи в smsLabel
ДА! в этом то и было дело, я ж говорю вместо текста почему то значения отображает..ну теперь то все отлично...

и пожалуй последнее ... =)
Как в Lazarus создать диаграмму используя TChart с информацией из базы Firebird?

так вот пирог, я поставил у него глубину 10, но она куда то не в ту сторону углубилось...можно как то развернуть?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
01.01.2016, 21:17 20
Насколько я помню - TAChart не позволяет выбирать направление для "глубины"
0
01.01.2016, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2016, 21:17
Помогаю со студенческими работами здесь

Ошибка, когда пытаюсь создать диаграмму базы данных
Проблема появляется , когда пытаюсь создать диаграмму базы данных , искала в гугле , но ничего...

Вывод результатов на диаграмму TChart
Мне нужно вывести на диаграмму TChart вклад от каждого элемента по стоимости(122-127 строки) Можете...

TChart в Lazarus, взаимодействие с БД
Помогите пожалуйста! Есть БД (Firebird). Хотелось бы узнать как оперируя данными в таблицы...

Lazarus + Firebird + Internet
Привет всем. Помогите пожалуйста решить такой вопрос. Поставлена такая задача: “ Запроектировать...

Lazarus и FireBird (Работа с базами данных)
Подскажите! Как с помощью одного компонента SQLQuery в Lazarus добавить данные в несколько...

Lazarus и FireBird ( Работа с базами данных)
Подскажите пожалуйста! Что нужно сделать для того, чтобы в лазарусе, в созданном приложении БД...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru