Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2015, 16:52   #11
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

спасибо) только в этом случае появляется поле myfield, можно ли без него?
из поля myfield в поле d можно скопировать значения?

Последний раз редактировалось Ernest027; 25.08.2015 в 16:59.
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 16:55   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну напиши там имя, какое захочется. Только учти - пример мой с потолка, может быть по стоимости неэффективен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2015, 17:07   #13
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Это поле при повторном запуске пропадает, со всеми значениями
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 17:35   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык правильно - оно вычисляемое. а ты как хотел? Чтоб запоминалось? Тогда тебе придется использовать запрос UPDATE. Только ты сначала объясни зачем такой геморр, а то еще и применишь, и базу попортишь ))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2015, 17:48   #15
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

в исходной таблице очень большие значения (тысячи, миллионы). нужно найти в поле самое большое число и если оно измерятся в тысячах, то все значения поля поделить на 1000 и т.д., а потом по получившимся значениям строить графики.
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 18:27   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну ради бога. Строй график по вычисляемым полям. Изменять значения в базе ни к чему. Смотри: Ты хочешь выдрать значения, по ним построить график. Тее нужны значения особым образом обработанные только для графика. Вычисляемое поле как раз призвано заставить СУБД выдать твоей программе таблицу с уже посчитанными новыми (так сказать) значениями. От них график и будет строиться.
Незачем тебе изменения в самой базе делать. К
Покажи кодом как ты строишь график, или расскажи как настроил компоненты графика?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2015, 18:35   #17
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

с помощью компонента tdbchart. dataset настроил, в нем поля f и d например.
Или в этом случае нужно использовать обычный tchart?

кажется понял что Вы имели ввиду.
один вопросик только:
Код:
select Vibration.*, case when (select max(d) from Vibration)>999 then d/1000 else d end as MyField from Vibration
это для одного поля. А как сделать для двух сразу?
спасибо.

Последний раз редактировалось Stilet; 25.08.2015 в 20:02.
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 20:06   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
с помощью компонента tdbchart. dataset настроил, в нем поля f и d например.
Ну и отлично ) Настраиваешь tdbchart на dataset, который связан с Query, а в нем запрос с вычисляемым полем. И в график придут уже скорректированные данные, как будто они в базе и были. В этом и смысл вычисляемых полей и запросов - получать рассчитанные данные, а не голые.
Цитата:
А как сделать для двух сразу?
Ты знаешь, я бы на твоем месте схитрил малость. Хотя тут два варианта:
1)
Код:
select
  Vibration.*, 
   case when (select max(d) from Vibration)>999 then d/1000 else d end as MyField 
   case when (select max(d) from Vibration)>Сколько-то then d/Сколько-то else d end as MyField2
from Vibration
Но тут нужно считать стоимость запроса, не повлияет ли внутрениий запрос на тормоза. Не думаю, но всетки выяснить стоит. Кстати если проиндексировать по полю "d" стоимость упадет до приемлемой.

2) Сначала первым запросом получить максимум, потом подставить его во второй запрос в CASE. Тогда скорость уж точно не упадет.

Не знаю какой тебе больше подойдет, нужно смотреть на конкретной базе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.08.2015, 20:28   #19
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Наверно проще будет скопировать полученные значения в другую таблицу и привязать её к dbchart)))
Спасибо Вам огромное!)))
Ernest027 вне форума Ответить с цитированием
Старый 25.08.2015, 20:39   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Наверно проще будет скопировать полученные значения в другую таблицу и привязать её к dbchart)
Неа. Не проще. Как раз так будет только хуже.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование единиц измерения Zirat Microsoft Office Excel 9 29.11.2022 21:14
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
Конвертер денежных единиц vmilyoshin Помощь студентам 6 16.04.2010 11:07
Найти сумма единиц Bayram_662 Паскаль, Turbo Pascal, PascalABC.NET 6 22.10.2009 22:11