![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 06.03.2008
Сообщений: 6
|
![]()
Привет всем! У меня задача тут неразрешимая, мож кто подкинет идейку
![]() Есть БД Access, в ней 10 таблиц с одинаковой структурой. На форме лежит CheckListBox с 10 строками (названия таблиц, но в удобоваримом виде, т.е. по русски). Что нужно: допустим пользователь выбирает одну или несколько таблиц (отмечает галочками в CheckListBox) и по нажатию кнопки формируем запрос по некоторому параметру (не важно какому) из тех и только из тех таблиц которые отмечены флажками. Я застрял на том что если пользователь выбрал 1 таблицу (поставил один флажок) то запрос будет один, а если выбрано сразу 7 таблиц - то запрос соответственно другой...подскажите какой нить вариант решения плиз...хоть намек ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 03.05.2007
Сообщений: 247
|
![]()
а что должно выполняться? вычисление , отбор? сводный расчет?
|
![]() |
![]() |
![]() |
#3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
А что у вас за затруднения?
Пусть так: Код:
Последний раз редактировалось mihali4; 06.03.2008 в 16:43. |
![]() |
![]() |
![]() |
#4 |
Регистрация: 06.03.2008
Сообщений: 6
|
![]() |
![]() |
![]() |
![]() |
#5 | |
Регистрация: 06.03.2008
Сообщений: 6
|
![]() Цитата:
![]() вот это немного не понятно >> QuotedStr(имя [i]-й таблицы) В CheckListBox1 не хранятся имена таблиц так как в БД, т.е. в CheckListBox1 например первая строка "Марка телефона" а в БД соответствующая таблица называется Mark_Phone |
|
![]() |
![]() |
![]() |
#6 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Возможно, вы привыкли потреблять все разжеванным, но у нас и самостоятельно думать нужно... Цитата:
Опять-таки - этот момент уж сами, пожалуйста... |
||
![]() |
![]() |
![]() |
#7 | |
Регистрация: 06.03.2008
Сообщений: 6
|
![]() Цитата:
Вообщем то я разобрался как сделать простой запрос, без where: tmp:='select * from '; for i:=0 to CheckListBox1.Items.Count-1 do begin if CheckListBox1.Checked[i] then begin if tmp<>'select * from ' then begin tmp:=tmp+', '+TableArray[i]; end else begin tmp:=tmp+TableArray[i]; end; end; end; Закатал все имена таблиц в массив TableArray, все нормально. Тока вот с where не получается пока. Если ее вставить после цикла то не получается обозначить таблицу (или несколько таблиц опять таки): tmp:=tmp+' where '+TableArray[i] + '.ID=11'; т.к. значения для TableArray[i] мы получаем в зависимости от значения i. Потому как выставить условие надо для каждой таблицы Значит надо впихнуть это в цикл, но куда? Пока думаю. Есть мнения? Можно без разжевывания ![]() Последний раз редактировалось RDS2008; 07.03.2008 в 09:16. |
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 06.03.2008
Сообщений: 6
|
![]()
Если сделать еще один цикл:
for i:=0 to CheckListBox1.Items.Count-1 do begin if CheckListBox1.Checked[i] then begin tmp:=tmp+ ' where ' +TableArray[i] + '.ID=11'; end; то все получается с Where, но если талиц >1 то where пишется несколько раз: 'SELECT * FROM Table_1, Table_2 WHERE Table_1.ID=11 WHERE Table_2.ID=11' Как бы убрать вторую и последующие where ...условие какое то надо придумать, думаю |
![]() |
![]() |
![]() |
#9 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Советую все же обратить внимание на
Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 24.10.2007
Сообщений: 254
|
![]() Код:
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
запрос ссылается на несвязанный с ним запрос | kolebatel | SQL, базы данных | 0 | 11.06.2008 12:50 |