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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2014, 12:01   #1
activexpoint
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 16
По умолчанию Отображение сгрупированных записей БД

Здравствуйте, дорогие форумчане!
Мне нужна ваша помощь. Использую Delphi XE2.
В общем, такая ситуация:
Посоветуйте, как лучше решить такую задачу.
Нужно создать справочник, для вычисления комиссии перевода для определенной суммы.
Есть таблица стран, таблица валют. сделал, чтобы комиссия вычислялась по формулам, согласно интервалов(например,0-100,101-200$).
Все работает, все отлично. В каждой записи моей таблице тарифов есть:
1)айдишник системы;
2)айдишник страны;
3)айдишник валюты;
4)инрревал(границы тарифа);
5)формула для рассчета;

Но так его очень тяжело наполнять и изменять, потому что исходные данные тарифа для сист. переводов имеют вид:

Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%;
Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от101 до 200 - 6%; и т.д
.
Выходит, что для данной реализации нужно заводить для каждой страны, валюты, да еще для каждого интервала новую запись и для человека, который будет с ним работа - это ад

Думаю, что в бд нужно хранить также по 1 записи, но для пользователя
их групировать. Тоесть загружать данные в ДС, а потом в виртуальной таблице отображать уже как одну запись. В общем нужно переделать/доделать, чтобы с ним было проще работать пользователю. Чтобы при создании/редактировании одного тарифа пользователь выбрал в ДБГридах несколько стран, потом несколько валют, интерфал и формулу комиссии - ему все отображалось в таком виде:

Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%;
а не в таком(хотя в базе буду хранить в таком):

Россия - доллар - от1 до100 - 5%;
Украина - доллар - от1 до100 - 5%;
...
Россия - евро - от1 до100 - 5%;
Украина - евро - от1 до100 - 5%;
...

И я не знаю как лучше это лучше сделать? Опытные люди, подскажите.

П.С.: Сорри, я что-то не так оформил, или вы просто не отвечаете?

Последний раз редактировалось activexpoint; 24.07.2014 в 15:09.
activexpoint вне форума Ответить с цитированием
Старый 24.07.2014, 15:45   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

При наполнении списка могу посоветовать отображать все в разных списках ( для ран один дбгрид/дблист, для валют отдельный) и включить выделение нескольких записей, свойство multiselect, если не ошибаюсь. Думаю будет достаточно удобно. Выделил нужные страны, затем валюты, вбил промежуток и сохраняй перебирая выбранное.
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 25.07.2014, 11:25   #3
activexpoint
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 16
По умолчанию

Сейчас реализовано так:
В принципе так и сделано. Эти справочники похожи.
На форме ДБГрид с записями тарифоф, поля стран и валют редактировать вручную нельзя, при клике на них в режиме редактирования - вываливается новый справочник, но уже уже стран или валют, и там и происходит выбор нужной.
Есть нюанс, что в бд хранится айди валюты и страны, а показывать пользователю нужно название.

Мультиселект я включил(есть проблема, что активна только 1 запись, но решения в инете есть. найду думаю), тоесть можно выбрать несколько стран, несколько валют. И потом сохранить в бд по отдельности записи для каждой валюты и страны. Это я знаю как сделать, вроде. Вопрос в том, как потом выбрать все эти одиночные записи с базы для того, чтобы вывести пользователю, как группу:

Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%;

вместо:

Россия - доллар - от1 до100 - 5%;
Украина - доллар - от1 до100 - 5%;
...
Россия - евро - от1 до100 - 5%;
Украина - евро - от1 до100 - 5%;
...

Последний раз редактировалось activexpoint; 25.07.2014 в 12:00.
activexpoint вне форума Ответить с цитированием
Старый 25.07.2014, 11:40   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

а собирать уже ручками придется в stringgrid к примеру, а в запросе на выборку указывать диапазон и процент, а там уже валюту и страны подтягивать.

по поводу мультиселекта как минимум можно пройтись по всем записям и проверять их "выделенность". И если не ошибаюсь даже есть в DBGrid специальное свойство/метод что бы пробегать исключительно по выделенным записям.
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 25.07.2014, 12:07   #5
activexpoint
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 16
По умолчанию

вы имеете в виду, что для того, чтобы отобразить тарифи, например, сист. переводов WU, в таком виде:
Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%;
мне нужно выбирать с базы одиночные записи, с одинаковым интервалом?
А как потом это все выводить ДБГрид? Обрабатывать и заносить в виртуальную таблицу. а уже оттуда в ДБГрид?
activexpoint вне форума Ответить с цитированием
Старый 25.07.2014, 12:18   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
вы имеете в виду, что для того, чтобы отобразить тарифи, например, сист. переводов WU, в таком виде:
Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%;
мне нужно выбирать с базы одиночные записи, с одинаковым интервалом?
да, собирать одинаковые данные по проценту и/или валюте и собирать воедино страны и валюту
Цитата:
А как потом это все выводить ДБГрид?
собранные данные (страны и валюты через запятую) вывести в DBGrid наврядли получится в таком виде,во всяком случае мне неизвестны, вывел бы их в StrinGrid и ок.

Цитата:
Обрабатывать и заносить в виртуальную таблицу. а уже оттуда в ДБГрид?
данная обработка для чего? вывод в собранном виде у вас для наглядности, а в таблицу сохраняете на основе мультиселекта перебором по странам и валюте того что выделено.
работать с собранным списком думаю будет неудобно, не эргономично. Для дальнейшей работы с данной таблице (для расчета взимаемого %) полагаю более удобно будет выбирать уже отдельно страну и валюту, но это лично мое мнение.
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 25.07.2014 в 12:21.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 25.07.2014, 12:40   #7
activexpoint
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 16
По умолчанию

Спасибо за помощь. Буду делать. Если можете, напишите еще запрос выбора всех записей, у которых одинаковый интервал, не конкретный. И еще, пользователю будет выводится все тарифы с разными интервалами, как быть здесь? Пример:
Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от1 до100 - 5%;
Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от101 до200 - 4%;
Россия, Украина, Белоруссия,Грузия - Доллар, Евро - от201 до300 - 3%;
и т.д.
activexpoint вне форума Ответить с цитированием
Старый 25.07.2014, 12:57   #8
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

берете таблицу тарифов в ней у вас согласно описанию :
Цитата:
В каждой записи моей таблице тарифов есть:
1)айдишник системы;
2)айдишник страны;
3)айдишник валюты;
4)инрревал(границы тарифа);
5)формула для рассчета;
берете нужный интервал (и систему если нужно), делаете на основе их выборку, затем смотрите какие страны и валюты (их id) и подставляете на место id названия валют и стран. еще нужно учесть ситуацию когда в результате выборки у одной или нескольких стран по 1 валюте а у остальных несколько (больше одной).
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.07.2014, 11:14   #9
activexpoint
Пользователь
 
Регистрация: 24.07.2014
Сообщений: 16
По умолчанию

А если без нужного интервала? Получить все записи для данной системы и сгруппировать их по интервалам. Просто не во всех тарифах есть интервал, есть просто процент от суммы.
И Как лучше организовать редактирование?
activexpoint вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часть PDM системы(тиражирование записей номенклатуры и записей техпроцесса) ankan Microsoft Office Access 3 06.03.2014 16:15
Создать массив записей в соответствии с заданной структурой. Количество записей не больше 10. zulja Паскаль, Turbo Pascal, PascalABC.NET 0 21.05.2012 07:50
Отображение записей в полях khvostatyy Microsoft Office Access 6 28.02.2010 16:56
Обновлаение и отображение записей в dbgrideh artemavd БД в Delphi 1 18.07.2009 18:18
Отображение числа записей БД: вопрос Evgenii БД в Delphi 16 26.06.2009 10:04