Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Как добавить поле в Dataset на этапе выполнения   Найти похожие ветки 

 
Anna   (2004-03-25 15:04) [0]

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


 
Sergey13 ©   (2004-03-25 15:11) [1]

2Anna   (25.03.04 15:04)
Ну дык если
>Sql-запрос клеится в процессе выполнения
то и приклеить еще одну мульку.


 
Johnmen ©   (2004-03-25 15:12) [2]

1. Самое правильное - написать запрос с соединением необходимых таблиц.
2. Не самое(ибо тормознутое) - использовать лукапные поля.


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

Если бы оно было одно - это еще туда-сюда, тут запрос склеить из двух таблиц не проблема. Но их таких ТРИ штуки, соотв-но, если их всех кому-то понадобится увидеть - выборка из 4 таблиц, а склеить такой запрос - проще удавиться сразу.


 
bushmen ©   (2004-03-25 15:21) [4]

>склеить такой запрос - проще удавиться сразу.

А о чем Вы думали, когда начинали программировать? Четыре таблицы - это еще баловство!


 
Ega23 ©   (2004-03-25 15:26) [5]

и по 15 таблиц бывает...


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

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

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


 
Johnmen ©   (2004-03-25 15:35) [7]

>Anna   (25.03.04 15:16) [3]

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


 
Sergey13 ©   (2004-03-25 15:36) [8]

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


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

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

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


 
Johnmen ©   (2004-03-25 15:48) [10]

>Anna

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


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

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

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


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

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


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

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


 
Sergey13 ©   (2004-03-25 15:57) [14]

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


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

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


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

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


 
Sergey13 ©   (2004-03-25 16:10) [17]

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


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

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


 
bushmen ©   (2004-03-25 16:14) [19]

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


 
Anna   (2004-03-25 16:16) [20]

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


 
bushmen ©   (2004-03-25 16:32) [21]

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

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


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

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


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

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


 
bushmen ©   (2004-03-25 16:47) [24]

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

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

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

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


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.026 c
1-1081281930
Smell
2004-04-07 00:05
2004.04.25
прерывистые графики в TChart


1-1081514472
Denis_Visma
2004-04-09 16:41
2004.04.25
Прогресс бар на процесс конекта...


9-1068125760
delpher_gray
2003-11-06 16:36
2004.04.25
Положение курсора на изометрической карте


3-1080537249
WondeRu
2004-03-29 09:14
2004.04.25
ADOConnection.ConnectionString


7-1078177032
Sergeika
2004-03-02 00:37
2004.04.25
Как отловить нажатие мультимедиа клавиши на клавиатуре?