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

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

Почему не фильтруется ADOQuery?


Страницы:   1 2 3 4 5 6

andrewtitoff ©   (2009-11-08 22:20:00) 

Выдает ошибку 'Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру' в строке Form1.ADOQuery1.Filtered:=true;

procedure TForm2.ComboBox1Change(Sender: TObject);
begin
Form1.ADOTable4.Filter:='STREET = '''+ComboBox1.Text+'''';
Form1.ADOTable4.Filtered:=true;
ComboBox2.Items.Clear;
Form1.ADOQuery1.SQL.Text := 'select STREET and HOUSE from lift';
Form1.ADOQuery1.Open;
while not Form1.ADOQuery1.Eof do
begin
Form1.ADOQuery1.Next;
end;
Form1.ADOQuery1.Filter:='street = '''+ComboBox1.Text+'''';
Form1.ADOQuery1.Filtered:=true;
Form1.ADOQuery1.SQL.Text := 'select distinct HOUSE from lift';
Form1.ADOQuery1.Open;
while not Form1.ADOQuery1.Eof do
begin
Form2.ComboBox2.Items.Add(Form1.ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
end;


sniknik   (2009-11-09 01:02:00) [101]

> найти как это одним запросом сделать... =((((
что это? 3 независимых набора полей получить?
тебе же прямо здесь сказали (чего инет перерывать?)
Омлет ©   (09.11.09 00:12) [9]
>> distinct
>Он возвращает униикальные строки.

но вообще можно, без проблем, если в "столбик", 3 запроса скрепить union-ами... ну и добавить признак разделитель.

блин, по моему, то что я сейчас сделаю так это - даю ответ на вопрос "как же сделать Y" по классификации
http://gunsmoker.blogspot.com/2008/10/x-y-z.html


Омлет   (2009-11-09 01:02:00) [102]

> нигде не найти как это одним запросом сделать

А что сделать одним запросом? Объясни.
Как получить список домов на улице такой-то я выше написал. Как получить список квартир в выбранном доме - да просто в where добавится условие flat=x, но это будет второй запрос, который произойдет после выбора дома пользователем.


Омлет   (2009-11-09 00:57:00) [103]

> После выбора улицы в первом комбобоксе нужно заполнить второй
> комбобокс номерами домов находящихся только на этой улице
> и без повторов

SELECT DISTINCT house FROM address_t
 WHERE STREET = 'Бориса Ельцина'


Что за таблица lift - мне не ясно.


Германн   (2009-11-09 00:55:00) [104]


> Германн ©   (09.11.09 00:44) [14]
>
>
> > Млин, ну подскажите кто-нибудь, уже весь инет перерыл
> -
> > нигде не найти как это одним запросом сделать... =((((
> >
>
> Да вроде именно так как в andrewtitoff ©   (09.11.09 00:
> 02) [8]

Хотя нет. Вру. Так не получится то, что (как я понял надо).

Возможное решение неявно предложено в:

> andrewtitoff ©   (08.11.09 23:10) [5]
>
> А можно сделать запрос что бы одним запросом повторить это
> для 3-х полей?
>

То бишь я имею в виду "вложенные запросы".


Германн   (2009-11-09 00:44:00) [105]


> Млин, ну подскажите кто-нибудь, уже весь инет перерыл -
> нигде не найти как это одним запросом сделать... =((((
>

Да вроде именно так как в andrewtitoff ©   (09.11.09 00:02) [8]
Только я бы туда добавил секцию GROUP BY


andrewtitoff   (2009-11-09 00:34:00) [106]


> Германн ©   (09.11.09 00:29) [12]
> > Вы говорите загадками... =)))Имхо АП имел в виду > Form1.
> ADOQuery1.SQL.Text := 'select STREET and HOUSE from > lift';
>

А, ну наверное... =))))

Млин, ну подскажите кто-нибудь, уже весь инет перерыл - нигде не найти как это одним запросом сделать... =((((


Германн   (2009-11-09 00:29:00) [107]


> Вы говорите загадками... =)))

Имхо АП имел в виду
> Form1.ADOQuery1.SQL.Text := 'select STREET and HOUSE from
> lift';


andrewtitoff   (2009-11-09 00:27:00) [108]

хотя нет, не выполняется..., вообще как то странно работает... =(((


andrewtitoff   (2009-11-09 00:25:00) [109]


> Омлет ©   (09.11.09 00:12) [9]
> > distinct Он возвращает униикальные строки.

А как сделать что бы возвращать уникальные поля?

Хотя нет, кстати он вообще возвращает не то, т.е. для первого поля возвращает все как нужно, а для остальных distinct вроде работает, а вот условие WHERE STREET = '''+ComboBox1.Text+''''; игнорируется... =(((


Омлет   (2009-11-09 00:12:00) [110]

> distinct

Он возвращает униикальные строки.


andrewtitoff   (2009-11-09 00:02:00) [111]

Как сделать для нескольких DISTINCT полей?
Form1.ADOQuery1.SQL.Text := 'select distinct HOUSE , CORP , PARNUM from lift WHERE STREET = '''+ComboBox1.Text+'''';

В таком виде запрос убирает дубликаты только у первого поля... =(((


andrewtitoff   (2009-11-08 23:27:00) [112]


> Anatoly Podgoretsky ©   (08.11.09 23:18) [6]
> > andrewtitoff  (08.11.2009 22:56:03)  [3]Не это а выше

Вы говорите загадками... =)))


Anatoly Podgoretsky   (2009-11-08 23:18:00) [113]

> andrewtitoff  (08.11.2009 22:56:03)  [3]

Не это а выше


andrewtitoff   (2009-11-08 23:10:00) [114]

А можно сделать запрос что бы одним запросом повторить это для 3-х полей?


andrewtitoff   (2009-11-08 23:01:00) [115]

Все, разобрался!, я сделал так:

Form1.ADOQuery1.SQL.Text := 'select distinct HOUSE from lift WHERE STREET = '''+ComboBox1.Text+'''';


andrewtitoff   (2009-11-08 22:56:00) [116]


> Anatoly Podgoretsky ©   (08.11.09 22:43) [2]
> > andrewtitoff  (08.11.2009 22:20:00)  [0]Что за дурдом
> в запросе написан, сам изобретал синтаксис, или в каком
> то хитром учебнике это прочил?

в  инете нарыл, но работает же...
А как правильно?

так тож нехочет:
Form1.ADOQuery1.SQL.Text := 'select distinct HOUSE from lift WHERE '''+ComboBox1.Text+'''';

Как правильно то сделать? =(((


Anatoly Podgoretsky   (2009-11-08 22:43:00) [117]

> andrewtitoff  (08.11.2009 22:20:00)  [0]

Что за дурдом в запросе написан, сам изобретал синтаксис, или в каком то хитром учебнике это прочил?


andrewtitoff   (2009-11-08 22:23:00) [118]

А в целом задача такая:
После выбора улицы в первом комбобоксе нужно заполнить второй комбобокс номерами домов находящихся только на этой улице и без повторов


Страницы:   1 2 3 4 5 6

Наверх

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