![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не фильтруется ADOQuery?
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;
kyn66 (2009-11-09 09:50:00) [81]
> andrewtitoff © (09.11.09 01:24) [25]
> тока вот задача в том - что бы когда
> в первом комбобоксе будет выбрана улица - в остальных комбобоксах
> оказались значения полей которые сожержатся только в записях
> с этой улицей и естественно без повторов....
Задействовать TDBLookupCombo. Однако без отбора SQl по ComboBox.onChange всеравно не обойтись. Делал похожую задачу по телефонной БД.
Германн (2009-11-09 02:15:00) [82]
> andrewtitoff © (09.11.09 02:03) [33]
>
>
> > Германн © (09.11.09 01:51) [31]
> > > В общем обьясняю подробно:Мой телепатор сработал правильно.
>
> > :)
>
> Так а сделать то можно одним запросом или как говорит
>
> > Омлет © (09.11.09 01:54) [32]
> > > Как тогда при выборе номера дома заполнить корпуса и
> парадные
> > > одновременно?Два запроса. Один за другим.
>
> Делать несколькими запросами?
>
> Просто с одной стороны я уже сам склоняюсь к нескольким
> запросам, но просто уже можно сказать дело принципа - узнать
> можно ли это одним запросом сделать или нет?...
>
Могу только сказать, что одним запросом не обойдешься.
И ещё подсказка. "Вложенность структур".
sniknik (2009-11-09 02:13:00) [83]> можно ли это одним запросом сделать или нет?...
а разве я тебе тут не написал вариант? а в прошлой ветке тебе про множественные рекордсеты не говорили?
принципиальный ты наш...
Омлет (2009-11-09 02:11:00) [84]> можно ли это одним запросом сделать или нет?...
Можно - как сказал sniknik: union all + разделители-константы.
Но тогда тебе придется это разбират на стороне клиента, отделять корпуса от квартир, квартиры от парадных и т.д. Плюс озаботится тем, чтобы выбранные константы-разделители никогда не попали в базу.
sniknik (2009-11-09 02:10:00) [85]Омлет © (09.11.09 01:54) [32]
> Два запроса. Один за другим.
блинЮ да я ему даже наглядный пример показвал
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1257618815&n=18
пост [32]
из которого единственное что он понял, что его типа пытаются оскорбить...
andrewtitoff (2009-11-09 02:03:00) [86]
> Германн © (09.11.09 01:51) [31]
> > В общем обьясняю подробно:Мой телепатор сработал правильно.
> :)
Так а сделать то можно одним запросом или как говорит
> Омлет © (09.11.09 01:54) [32]
> > Как тогда при выборе номера дома заполнить корпуса и парадные
> > одновременно?Два запроса. Один за другим.
Делать несколькими запросами?
Просто с одной стороны я уже сам склоняюсь к нескольким запросам, но просто уже можно сказать дело принципа - узнать можно ли это одним запросом сделать или нет?...
Омлет (2009-11-09 01:54:00) [87]> Как тогда при выборе номера дома заполнить корпуса и парадные
> одновременно?
Два запроса. Один за другим.
Германн (2009-11-09 01:51:00) [88]
> В общем обьясняю подробно:
Мой телепатор сработал правильно. :)
andrewtitoff (2009-11-09 01:45:00) [89]
> Омлет © (09.11.09 01:40) [29]
> > [28] andrewtitoff © (09.11.09 01:36)Не, ну понятно,
> что пока не выбрана парадная, выводятся все квартиры выбранного
> дома.Но, пока дом не выбран, поля квартиры, парадной и этажа
> должны быть задисаблены.Выбрали дом - заполняем эти поля.
>
Ну в принципе логично, только проблемы то не решает, все равно у нас получается два поля....
Как тогда при выборе номера дома заполнить корпуса и парадные одновременно?
Омлет (2009-11-09 01:40:00) [90]> [28] andrewtitoff © (09.11.09 01:36)
Не, ну понятно, что пока не выбрана парадная, выводятся все квартиры выбранного дома.
Но, пока дом не выбран, поля квартиры, парадной и этажа должны быть задисаблены.
Выбрали дом - заполняем эти поля.
andrewtitoff (2009-11-09 01:36:00) [91]
> Омлет © (09.11.09 01:29) [26]
> > [25] andrewtitoff © (09.11.09 01:24)Ну так сделай на
> каждый комбобокс свой запрос. Зачем изгаляться?И вообще,
> по-моему, лучше делать жестко зависимые поля (см. [21])
> по иерархии данных.Или хочется выбрать все дома, в которых
> есть 66 квартира на улице Вязов?
Ну может и такое быть, а во вторых корпуса и порадные могут быть, а могут и не быть например Ветеранов д5 п3 и Ветеранов д5 к2 т.е. получается что в первом случае после выбора дома нужно сразу знать номера парадных, а во втором случае они ненужны...
andrewtitoff (2009-11-09 01:30:00) [92]
> Омлет © (09.11.09 01:17) [21]
> > [20] sniknik © (09.11.09 01:11)> а дома от подъездов
> разделяются признаком разделителем Ужас. ИМХО, не надо подгатавливать
> сразу все данные, типа список всех уникальных улиц, список
> всех уникальных номеров домов и т.д. Надо делать так, что
> пока не выбрана улица, поле с номером дома неактивно; пока
> не выбраны улица и дом, поле со списком квартир неактивно
> и т.д. Это обычные зависимые селекты, с простыми, как пробка,
> запросами.
Ну я как раз подумывал над этим, но хотелось бы более универсальную выборку т.к. случаи разные бывают.., а тем более после выбора дома все равно придется и корпус и парадную делать т.к. где то они есть, а где-то нет...
Омлет (2009-11-09 01:29:00) [93]> [25] andrewtitoff © (09.11.09 01:24)
Ну так сделай на каждый комбобокс свой запрос. Зачем изгаляться?
И вообще, по-моему, лучше делать жестко зависимые поля (см. [21]) по иерархии данных.
Или хочется выбрать все дома, в которых есть 66 квартира на улице Вязов?
andrewtitoff (2009-11-09 01:24:00) [94]2 All
Бррр..., по молчали -молчали - а то выдали... =))))
В общем обьясняю подробно:
Имеется таблица, где поле номер 1 - улица, 2- дом, 3-корпус, 4 - парадная, для каждого из полей есть свой комбобокс - куда заносятся значения соответствующего столбца без повторов, тока вот задача в том - что бы когда в первом комбобоксе будет выбрана улица - в остальных комбобоксах оказались значения полей которые сожержатся только в записях с этой улицей и естественно без повторов....
Германн (2009-11-09 01:22:00) [95]
> блин, по моему, то что я сейчас сделаю так это - даю ответ
> на вопрос "как же сделать Y"
Именно так.
Только имхо я более прав в понимании Y. :)
Автору нужен НД, (в котором будут уникальные номера домов по заданной улице, (в котором будут уникальные номера корпусов в этих домах, (в котором будут уникальные номера квартир))).
Омлет (2009-11-09 01:22:00) [96]> 3 запроса скрепить union-ами...
union all-ами )))
Омлет (2009-11-09 01:20:00) [97]Хоть бы никогда andrewtitoff не пришлось работать с КЛАДРом, а то запарит вопросами ))
Омлет (2009-11-09 01:17:00) [98]> [20] sniknik © (09.11.09 01:11)
> а дома от подъездов разделяются признаком разделителем
Ужас. ИМХО, не надо подгатавливать сразу все данные, типа список всех уникальных улиц, список всех уникальных номеров домов и т.д. Надо делать так, что пока не выбрана улица, поле с номером дома неактивно; пока не выбраны улица и дом, поле со списком квартир неактивно и т.д. Это обычные зависимые селекты, с простыми, как пробка, запросами.
sniknik (2009-11-09 01:11:00) [99]> А что сделать одним запросом? Объясни.
ИМХО, он подготавливает данные для фильтрации (???!!!).
> если в скрепляемых выборках одинаковый набор полей.
неважно, главное одинаковый тип (или конвертируемый к одинаковому) а там у него строки.
а дома от подъездов разделяются признаком разделителем (простое поле константа в каждом запросе с разным значением)
Омлет (2009-11-09 01:05:00) [100]> запроса скрепить union-ами...
Скрепить можно только, если в скрепляемых выборках одинаковый набор полей.
А ему, похоже, надо скрепить список домов со списком подъездов и списком квартир - полная билиберда.