Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278

Создание вычисляемого поля между двумя DBGrid

25.11.2019, 02:29. Показов 4333. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Имеется главная и зависимая таблицы Пара и Выступление. в таблице Пара есть атрибут "результат", а в зависимой таблице Выступление есть атрибут "Баллы". Необходимо создать такое поле, чтобы в атрибут "результат" в главной таблице записывалось количество баллов, т.е. баллы из нескольких записей зависимой таблицы. Также при добавлении новых записей, либо при удалении, необходимо чтобы этот "результат" также обновлялся. Для баз данных использую Firebird. Подскажите, пожалуйста, как это можно реализовать? И как будет сделать лучше, в Delphi, или, например, в IBExpert?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2019, 02:29
Ответы с готовыми решениями:

Создание Вычисляемого Поля
Здравствуйте, помогите/подскажите как создать вычисляемое поле. Мне нужно сделать чтоб считалось по формуле Стоимость за 1 единицу...

Отображение определенных записей и создание вычисляемого поля
Добрый день. Есть таблица Students, созданная через Датабейз. До этого работал с ней через компонент Table ,но понял что много чего...

Связь между двумя DBGrid
нужно связать два DBGrid если используеться ADOQuery

28
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 21
28.11.2019, 07:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Скандербег Посмотреть сообщение
поля фио не надо разделять, проще записывать ФИО в одно поле
со всем уважением - нет
0
 Аватар для Мудрый Ижик
32 / 26 / 7
Регистрация: 18.10.2019
Сообщений: 187
28.11.2019, 17:05
Несколько причин почему фио лучше хранить раздельно.
1. Сортировка, группировка намного удобнее по отдельным полям. Попробуйте сгруппировать по одному полю и отсортировать каждый элемент в разном порядке - задачка нетривиальная.
2. Большинство гридов имеют встроенные средства сортировки и группировки но для отдельных полей.
3. С ростом объема базы, время поиска по контексту в фио будет только увеличиваться, в то время как для отдельных полей этого не будет.
4. Если возникнет необходимость вывести только фамилию и инициалы, это намного проще делать из трех полей, чем парсить одно поле с фио. Данные человека могут не содержать отчества или состоять более чем из 3 частей, например: Лю Ци, Ахбей Ибн Нарад Мавсин Задат и т.д.
0
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
28.11.2019, 18:07  [ТС]
Скандербег, спасибо, попробую сделать

Добавлено через 5 минут
Скандербег, Ещё сразу такой вопрос, а куда этот запрос записывать? Например, если в IBExpert. Просто в редактор скриптов? Или куда-то ещё? Просто мне нужно чтобы он постоянно выполнялся в процессе изменения, что-то типа триггера, но в триггеры же нельзя записывать запросы? Или я что-то путаю?
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
28.11.2019, 18:46
Запрос какой?
Конечно не редактор скриптов IBExpert.
Пока не зная о каком запросе речь, могу сказать, что любой можно реализовать в хранимой процедуре (ХП)
0
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
28.11.2019, 21:52  [ТС]
Скандербег, вот что касается вот этого вашего запроса:

SQL
1
2
3
--запрос, возвращающий сумму баллов конкретной пары (алиас RES для примера), 
--которую затем можно записать в поле OCHKI
SELECT SUM(balli) res FROM vistupl WHERE PK_FK_VISTUPL_1 = :PK_PAIR
Это уже получается в делфи можно сделать на обработчик датасета onAfterScroll? просто в эту процедуру записать данный запрос?

Добавлено через 1 час 25 минут
Скандербег, просто как его записать, если синтаксис делфи не позволяет записывать такой код? Не получается

Добавлено через 38 минут
Скандербег, в общем, постараюсь объяснить что нужно еще раз в делфи с точки зрения пользователя. Допустим я - пользователь. Передо мной 2 таблицы, главная "Пара" и зависимая "Выступление". Я выбрал какую-то пару из главной таблицы, в зависимой таблице появилось несколько записей для этой пары, одним атрибутом в которой является количество баллов, и это количество баллов в сумме равняется результатом выступления для ВЫБРАННОЙ в главной таблице "Пара" записи. Допустим я, пользователь, решил добавить в зависимую таблицу ещё одну запись выступления с определенным количеством баллов, например, 15 балов. Тогда после добавления этой записи в главной таблице для выбранной записи результат должен увеличиться на 15 баллов соответственно. Если я решил изменить в зависимой таблице или удалить одну из записей, то в главной, выбранной строке результат также должен динамически изменяться. Можно это реализовать и в IBExpert, не обязательно в Delphi. Если бы вы смогли помочь реализовать это в IBExpert, был бы очень благодарен, т.к. всю базу разбирался сам кое как, делал. Преподаватель не очень хочет помогать. Раньше получалось справиться с помощью методичек/форумов, а сейчас конкретно встал на месте, уже больше недели не получается решить данный вопрос
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
29.11.2019, 05:33
Лучший ответ Сообщение было отмечено Komputershik как решение

Решение

Komputershik, всё это реализовано в одном модуле, где размещены все датасеты (модуль прилагается).
На форму добавлен еще один датасет для получения суммы баллов и в класс формы добавлены три процедуры.
При использовании FIBPlus этого оказалось достаточно чтобы получилось так как рассказано постом выше.

Реакция процедур для изменение суммы баллов по выбранной паре получается если добавлять, изменять или
удалять баллы в выступлениях выбранной пары. Т.е. для уже существующих в БД пар и их баллов автоматически баллы не суммируются. Но это и не надо.
Вложения
Тип файла: zip Komputershik_DM.zip (2.6 Кб, 2 просмотров)
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
29.11.2019, 05:57
Komputershik, для уверенной записи суммы баллов в процедуре TdmCity.ResultPair; в самом конце надо добавить строку: dstPair.Post;
"Не уверенной" запись нового результата получается, если после суммирования не "съехать" со строки, в которой выбрана пара. Чтобы таких случаях не было, надо принудительно вызывать метод Post.
0
26 / 1 / 1
Регистрация: 18.03.2018
Сообщений: 278
29.11.2019, 13:08  [ТС]
Скандербег, спасибо большое, работает! Post добавил, результат сохраняется. Вы очень сильно помогли
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 21
30.11.2019, 07:28
ОФФ
если честно, совет от человека, который занимается танцевальной программой с 1991 года
уходите от DB-Aware компонентов)
делайте модели данных, выводите их в обычные формы
тогда следующий шаг - вместо датасетов перейти к HTTP-запросам, как это делается в 21 веке - пройдет легко и безболезненно, а не как у меня )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2019, 07:28

Создание поля в DBGrid, значение которого присваивается ориентируясь на значение поля в базе данных SQL
Добрый день! Возник такой вопрос: Есть таблица базы данных, которая в числе прочих имеет параметр, показывающий, к какому отделу...

Вычисляемые поля между двумя таблицам ADOQuery
Здравствуйте. Ситуация такая. Имеется две таблицы ADOQuery1 и ADOQuery2 первая таблица ФИО Платеж1 Платеж2 Задолженность по Платеж1...

Создание связи между dblookupcombobox с dbgrid
Добрый день. У меня возник вопрос при создании связи между dblookupcombobox с dbgrid Дело в том что они у меня расположены в разных...

Заполнение вычисляемого поля
Необходимо чтобы для каждой записи таблице "Учет" вычисляемое поля считало сумму соответствующую индексу в таблице "Продажи" ...

Запись в БД значение вычисляемого поля
Доброго времени суток! Задача следующего плана: Есть два столбца в БД, столбец1 и столбец2, столбец3=столбец1*столбец2. Столбец3 -...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru