![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здраствуйте! помогите пожалуйста сделать запрос.
Есть 4 CheckListBox по клику мыши в них появляется информация из разных таблиц по нажатию на кнопку надо вывести выбранную информацию на форму в dbgrid. Запрос должен быть как во вложении. Есть код который выбирает по одному CheckListBox и одной таблице: Код:
var
s:STRING;
i,k:integer;
begin
with Form1.ADOQuery2 do begin close;
k:=0;
SQL.Clear;
SQL.Add ('SELECT Вуз.№, Вуз.[Название вуза], Вуз.[Название специальности], Вуз.[Форма обучения], Вуз.[Вид обучения], Вуз.[Конкурс прошлого года], Вуз.[Плата за обучение]');
SQL.Add (' FROM Вуз ');
s:='';
for i:=0 to CheckListBox1.Items.Count - 1 do
if CheckListBox1.Checked[i] then
begin
if k=0 then
s:=s+(' [Название вуза] ="'+CheckListBox1.Items[i]+'"')
ELSE
s:=s+(' OR [Название вуза] ="'+CheckListBox1.Items[i]+'"');
k:=1;
END;
if s<>'' then
SQL.Add(' where '+s+';');
Open;
Datasource1.dataset:=AdoQuery2; |
|
#2
|
||||
|
||||
|
Если я правильно понял, то проблема в корректном формировании ограничения к запросу. Предположу так-же, что выбор нескольких чекбоксов даст нам ограничение в несколько условий. Тогда можно так:
Код:
Var i: Integer;
S: String;
begin
S := '';
for i := 0 to CheckListBox1.Count - 1
do if CheckListBox1.Checked[i]
then if S <> ''
then S := S + ' or [Название вуза]=''' + CheckListBox1.Items[i] + ''''
else S := S + '[Название вуза]=''' + CheckListBox1.Items[i] + ''''; |
|
#3
|
|||
|
|||
|
или же через:
Код:
[Название вуза] IN (1,2,3 и т.д.) |