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

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

Сформировать запрос [D7]


Tornado ©   (2008-02-27 14:43:00) 

Встала проблема формирования запроса. Задача такая: имеем 10 таблиц (структура одинакова) в БД Access. На форме имеем ListBox (с чекбоксами) в который выведен список этих десяти таблиц. Пользователь может выбрать одну или несколько таблиц из ListBox (отметив нужные таблицы флажками) и по нажатию кнопки должен сформироватся запрос. Но запрос должен формироваться только из тех таблиц которые отметил пользователь. Как правильно написать запрос, ведь если пользователь отметил одну таблицу, запрос прост: SELECT * FROM TABLE_NAME WHERE....(где TABLE_NAME - имя таблицы из списка), но если он отметит первую таблицу, пятую и допустим шестую как быть тогда?


Tornado   (2008-02-27 16:11:00) [1]

Sergey13 ©   (27.02.08 15:48) [6]

Спасиб. Будем реализовывать :)


www   (2008-02-27 15:58:00) [2]

небось, помесячная структура


Sergey13   (2008-02-27 15:48:00) [3]

> [5] Tornado ©   (27.02.08 15:23)
> получается для каждого варианта свой запрос писать?

Т.е. ты желаешь потрахаться со своим вариантом прежде чем переделать на нормальную структуру? Дело твое конечно.
Тогда уж не

> SELECT * FROM TABLE_NAME_1,TABLE_NAME_2,TABLE_NAME_3,TABLE_NAME_4,
> TABLE_NAME_5  WHERE....

а

SELECT * FROM TABLE_NAME_1 WHERE....
UNION ALL
SELECT * FROM TABLE_NAME_2 WHERE....

ибо твой вариант запроса, ИМХО, вообще неработоспособен.

> Придется ведь писать кучу разных запросов

Ну и что? Контора пишет.
Решение я тебе уже сказал. Можно еще вьюху построить (вроде аксес позволяет это) и работать с ней, но скорее всего тормоза будут приличные.


Tornado   (2008-02-27 15:23:00) [4]

Sergey13 ©   (27.02.08 15:09) [4]

Я знаю как объединить таблицы с помощью UNION...тут в другом заковыка. Придется ведь писать кучу разных запросов (если текущий вариант), т.е.:
1 вариант. пользователь выбрал одну таблицу:
SELECT * FROM TABLE_NAME_1 WHERE....
2 вариант. пользователь выбрал две таблицы:
SELECT * FROM TABLE_NAME_1, TABLE_NAME_2 WHERE....
3 вариант. пользователь выбрал 5 таблиц:
SELECT * FROM TABLE_NAME_1,TABLE_NAME_2,TABLE_NAME_3,TABLE_NAME_4,TABLE_NAME_5  WHERE....
и т.д. получается для каждого варианта свой запрос писать?


Sergey13   (2008-02-27 15:09:00) [5]

> [3] Tornado ©   (27.02.08 14:55)

С объединенной таблицей или в текущем варианте?
1. IN
2. UNION


Tornado   (2008-02-27 14:55:00) [6]

Хотя все равно не доганяю как запрос написать...


Tornado   (2008-02-27 14:54:00) [7]

Sergey13 ©   (27.02.08 14:45) [1]

Вешацо рановато :)

По поводу объединения - наверно так и придется...


Sergey13   (2008-02-27 14:45:00) [8]

> [0] Tornado ©   (27.02.08 14:43)
> Задача такая: имеем 10 таблиц (структура одинакова) в БД Access.

Берем веревку, мыло и ищем крепкий сук в безлюдном месте. 8-)
Или объединяем все в одну таблицу с отдельным полем - признаком их разности.


Наверх

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