Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Как добавить поле в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.036 c
11-1064908577
Yrasikombo
2003-09-30 11:56
2004.04.25
В Delphi 7 выдает ошибку "File not found: Exptlntf.dcu "


9-1067788347
DillerXX
2003-11-02 18:52
2004.04.25
Дерево


14-1080715256
BEN
2004-03-31 10:40
2004.04.25
Delphi 5 и Win2k


1-1081623038
Анатолий Ксюндзский
2004-04-10 22:50
2004.04.25
Пустые функции


1-1081679188
hgd
2004-04-11 14:26
2004.04.25
Вопрос про надпись на Shape





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский