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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 10:44   #11
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
показано как калькулировать поля в ADOTable, а у меня ADOQuery
Ну, какая разница. Принцип везде один. На тебе пример с Query и не изобретай велосипед
Вложения
Тип файла: zip CalcQuery.zip (16.2 Кб, 14 просмотров)
_SERGEYX_ вне форума Ответить с цитированием
Старый 08.11.2010, 12:09   #12
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию

Так. Давайте я еще раз все объясню.
Есть таблица. В ней каждый новый день добавляется новый столбец, в названии которго текущая дата (т.е. каждый новый запуск программа проверяет есть ли столбец на текущий день и если нету, то она создает)(именно поэтому я не могу испольщовать ваш способ - я не могу заранее добавить все столбцы, потомучто как-только программа запустится в таблице появится еще один). Когда пользователь просматривает таблицу, он вводит в любом поле информацию (вида 100 ТК; 75 ИК; 90 РК). В начале таблицы есть четыре столбца с именами ИК, ТК, РК, ДК. Так вот когда пользователь вводит эту информацию, в строке, которую он правил, считается среднее арифметическое всех оценок с одинаковыми буквами после них и результат записывается в соответсвующий столбец. Например в строке уже есть в разных полях информация 100 ИК 80 ИК и ввели еще 70 ИК, тогда в столбце с именем ИК появится среднее арифметическое всех этих значений.
Может можно как-то программно сделать чтобы поля в столбцах с именем ИК и т.д. стали калькулируемыми?
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!
Марк Охман вне форума Ответить с цитированием
Старый 08.11.2010, 13:43   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) я думаю, что Вы придумали плохую структуру данных.
(я про добавляемый ежедневно столбец)

2) в поля Датасета и так можно писать что хочешь. не надо их для этого делать калькулируемыми

3) посмотрите пример. если я Вас правильно понял, то это то, что Вам надо.
Т.к. пересчёт висит на событии BeforeScroll, поэтому, чтобы пересчиталось среднее, нужно уйти с той строки, где вносились изменения.

ВНИМАНИЕ! побочным действием примера является то, что все изменения в таблице СРАЗУ (автоматически) записываются в таблицу БД...
Вложения
Тип файла: rar CalculatedAverageTK.rar (350.8 Кб, 18 просмотров)

Последний раз редактировалось Serge_Bliznykov; 08.11.2010 в 13:47.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2010, 14:08   #14
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию

Спасибо огромное за то что вы это для меня сделали.)) Не знаю даже как вас за это отблагодарить))
к 1)Чем чревато добавление столбца? Посоветуйте, пожалуйста)
2) хотелось бы теперь разобраться с кодом... когда происходит действие BeforScroll?
3) вы все правильно поняли, и спасибо вам за это огромное еще раз))
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!
Марк Охман вне форума Ответить с цитированием
Старый 08.11.2010, 20:24   #15
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

Попытаюсь выразить свое мнение на первый вопрос.

Добавление столбца в принципе ничем не чревато для таблицы БД (разве что на это есть ограничения в разных СУБД), но... столбцы - это элемент структуры базы, некая константа, которая определяется при разработке программного продукта.
Добавление столбца при поступлении новой информации - очень очень плохой стиль программирования. Вам при такой организации хранения информации в таблице БД - никогда эту информацию не обработать (по крайней мере классическими методами), с чем собственно Вы и столкнулись.

Совет:
Организуйте правильно Вашу БД и крутите-вертите базу методами SQL.
SELECT BEST FROM LIFE
Dimasw вне форума Ответить с цитированием
Старый 08.11.2010, 20:53   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Марк Охман
по первому вопросу.
полностью согласен с мнением Dimasw!
Фактически он выразил то, что я и хотел сказать.
есть такая штука, как реляционные БД (ну то, чем мы пользуемся). Подавляющее большинство СУБД предназначено для реализации таких БД. В частности, язык обработки данных, тот же SQL предназначен для работы с подобными БД.
И как только Вы отступаете от принципов организации БД, то стандартные средства сразу перестают действовать во всю свою мощь.
Смотрите. в вашем случае - нужно добавить данные - добавляете не столбец, а строчку!! Там дата и значение! Нужна привязка к строке? Добавьте туда ссылку на ID вашей основной таблицы.
Чем это удобнее, чем Ваша структура, надеюсь, не надо пояснять?

событие BeforeScroll возникает, перед тем, как вы переходите с одной записи на другую. В принципе, у Dataset'а много событий, поэкспериментируйте, когда какое вызывается... может быть, Вам будет удобнее повесить обработку на другое событие...

3) не за что. Большое пожалуйста!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Среднее арифметическое Seede1 Помощь студентам 4 10.10.2010 10:29
Среднее арифметическое. Deutch Помощь студентам 3 16.12.2009 21:18
Среднее арифметическое Golovastik Общие вопросы C/C++ 16 18.07.2009 16:47
среднее арифметическое Mashul'ka Помощь студентам 1 14.05.2009 19:33