Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как добавить поле в Dataset на этапе выполнения [D7]


Страницы:   1 2

Anna ©   (2004-03-25 15:04:00) 

В базе есть поле number,а я в DBgride хочу вывести его
 словом (словесные описания лежат в другой таблице).
Т.е. сделать fkcalculated field по ходу действия.
Неудобство в том, что заранее неизвестно, захочет его пользователь увидеть или нет и какие вообще поля он захочет увидеть. На форме много checkboxов и всяких других условий. Sql-запрос клеится в процессе выполнения.


Petr V. Abramov   (2004-03-25 18:50:00) [1]

> Anna
 Таблица, в которой "словесные описания", я так понимаю, небольшая? Если да, тогда:
 пользователь увидеть не захотел -
 ( select что-то,
          то_самое_поле_number
   from три_таблицы
 )
и у поля то_самое_поле_number visible = false

 а захотел -
 select
   q.*,
   словесное_описание
 from
   ( select что-то,
            то_самое_поле_number
     from три_таблицы
   ) q, таблица_словесных_описаний op
 where q.то_самое_поле_number = op.то_самое_поле_number

Ну где-то еще group by добавятся, но идею, думаю, поняли
Минимум добавлений, максимум performance`а :)


bushmen   (2004-03-25 16:47:00) [2]

>Один раз и на всю оставшуюся жизнь.

В коде тоже вбивается один раз и на всю жизнь!

>И потом для выборки из вьюшника уже не ID, а именно текст используется

А про конструкцию select * from слышали? А потом по именам полей берите свое текстовое поле!


Anna   (2004-03-25 16:43:00) [3]

И потом для выборки из вьюшника уже не ID, а именно текст используется


Anna   (2004-03-25 16:40:00) [4]

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


bushmen   (2004-03-25 16:32:00) [5]

>можно сразу выбрать названия нужных параметров, а не их id number(2).

Все-равно надо в условиях выборки использовать эти id


Anna   (2004-03-25 16:16:00) [6]

Надо. Только туда можно сразу выбрать названия нужных параметров, а не их id number(2). Это же элементарное действие.


bushmen   (2004-03-25 16:14:00) [7]

А что, разве при генерации вьюхи запрос составлять не надо ?


Anna   (2004-03-25 16:13:00) [8]

О! Спасибо! Пожалуй, так я и сделаю! :-)


Sergey13   (2004-03-25 16:10:00) [9]

2Anna
А если сделать вьюшку на объединение, и аналитику брать с нее, а не с таблицы?


bushmen   (2004-03-25 16:06:00) [10]

Так это самая элементарная выборка


Anna   (2004-03-25 16:04:00) [11]

Разрезов много, но это как раз не страшно. Там с индексами все в порядке и цифры лежат все в этой же таблице. А слазить в другую таблицу надо как раз за именами трех их этих "разрезов".
т.е. я должна выдать не
1 50шт
3 70шт
4 0шт...
а
в работе      50
заблокировано 70
отключено     0


Sergey13   (2004-03-25 15:57:00) [12]

2Anna   (25.03.04 15:45) [9]
А "разрезов" много? Ограниченное количество или произвольное? На трех таблицах много разрезов вряд ли получится. Может еще проще поступить. Разрез - свой запрос. И с оптимизацией легче справляться, и ораклу так больше, ИМХО, по душе.


Alex_Bredin   (2004-03-25 15:55:00) [13]

Johnmen и Sergey13 уже сказали все что нужно, соединяйте таблицы JOIN-ом, а показывать или нет поле - используйте св-во Visible у DBGrid.Column


Anna   (2004-03-25 15:52:00) [14]

СУБД - Oracle.
Имеенся в виду 'UNION ALL'?


Alex_Bredin   (2004-03-25 15:51:00) [15]

LocalSQL.hlp(хотя неясно какая СУБД)

Конструкции JOIN


Johnmen   (2004-03-25 15:48:00) [16]

>Anna

Найти описание SQL в инете несложно. Наверное...:)


Anna   (2004-03-25 15:45:00) [17]

2Sergey13
>Выдавайте в запросе все, а показывайте, что попросят...
Не получится, к сожалению. Там по запрошенным полям идет суммирование(count(...)+ group by в запросе),т.е. смотрится статистика в разных разрезах.

2Johnmen
Чуть подробнее, пожалуйста. Или кусок кода. Я просто с этим первый раз сталкиваюсь, поэтому и задаю дурацкие вопросы.Чем отличается запрос просто от запроса с соединением?


Sergey13   (2004-03-25 15:36:00) [18]

2Anna  
Можно не клеить вообще. Выдавайте в запросе все, а показывайте, что попросят. Может и дубовенько, но просто... 8-)


Johnmen   (2004-03-25 15:35:00) [19]

>Anna   (25.03.04 15:16) [3]

Не запрос склеивать, запрос с соединением !
Ничего там сложного нет. Я и по 10-15 соединял и справедливо не боялся :)


Anna   (2004-03-25 15:30:00) [20]

2bushmen
>А о чем Вы думали, когда начинали программировать?
Да все больше о божественном...

А впрочем, ладно, склеим и из 4...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо