![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
Из БД в Dataset приходит некая таблица данных. Есть 3 поля для ввода типа "выпадающий список" - DBLookupCombo, DBComboBox, итд. Задача - используя 1 Dataset вывести в 3 разных выпадающих списка три разных списка по признакам (с использованием фильтра): Поле1 все записи где А=1, Поле2 все записи где Б=2, Поле3 все записи где В=3 В настройках данных полей фильтров не нашёл. Подскажите, пожалуйста, как это можно сделать? |
#2
|
||||
|
||||
![]() А на Х тебе тогда фильтр понадобился, SQL запрос чего тебе надо.
|
#3
|
|||
|
|||
![]() я для себя изобрел процедуру которая принимает SQL запрос и заполняет ComboBox.Items (или любой объект типа TStrings)
у меня это оформлено в виде dll и я просто подключаю ее к проекту попробуй, может понравится Код:
{---------------------------------------------------- процедура заполняет ComboBox.Items, DBGrid.PickList -----------------------------------------------------} procedure SetItems(IBDB:TIBDataBase;List:TStrings;SQLstr:shortstring);stdcall; var IBQ:TIBQuery; begin IBQ:=TIBQuery.Create(IBDB.Owner); IBQ.Database:=IBDB; with IBQ do //заполн. PickList begin SQL.Text:=SQLstr; Open; // First; List.Clear; while not eof do begin if Fields[0].AsString <> '' then List.Add(Fields[0].AsString); Next; end; Close;Destroy; end; //with end; |
#4
|
|||
|
|||
![]() Цитата:
Цитата:
Может можно как-то всё же с Dataset и фильтром? |
#5
|
||||
|
||||
![]() ты что то дружок паришся вокруг трех сосен, верней трех списков. кинь ты три query и привяжи к каждому, а фильтрация очень тупая вещь)))
|
#6
|
|||
|
|||
![]() Очень тупой это похоже ты.
Вопрос задан как задан, если тебе сказать нечего - не парь своим бредом. |
#7
|
||||
|
||||
![]() А вот кто туп, дак это ты с таким вопросам! меняя фильтрацию в одном датасет он поменяет данные во всех боксах! дак то тут своим бредом парит???
|
#8
|
|||
|
|||
![]() Трудностей не понял. Моя процедура никак не затрагивает твой запрос поскольку динамически создает свой компонент IBQuery. На экране ничего не изменяется.
Ну не хочешь так- вот второй способ. Пробегаешь свой запрос и разбрасываешь Items по разным DBComboBox Впрочем есть и третий-кидаешь на форму 3 IBQuery и привязываешь их к твоим DBComboBox (совет Delphist) Код:
1: { SetItems(IBDataBase1,DBComboBox1.Items,'SELECT Family WHERE A=1'); SetItems(IBDataBase1,DBComboBox2.Items,'SELECT Family WHERE A=2'); SetItems(IBDataBase1,DBComboBox3.Items,'SELECT Family WHERE A=3'); } 2: procedure SetItems; begin with Form1,IBQuery1 do while not Eof do begin case FieldByName('A').AsInteger of 1:DBComboBox1.Items.Add(FieldByName('Family').AsString); 2:DBComboBox2.Items.Add(FieldByName('Family').AsString); 3:DBComboBox3.Items.Add(FieldByName('Family').AsString); end; //case Next end; end; Последний раз редактировалось chainik, 27.09.2011 в 12:03. |
#9
|
|||
|
|||
![]() Цитата:
Ещё мелкий простой вопрос по ходу - как правильно писать строку вида, только универсально для любого числа: Поле1.Enabled:=Кнопка1.Pressed; Поле2.Enabled:=Кнопка2.Pressed; Поле[X].Enabled:=Кнопка[X].Pressed; ? Поле+[X].Enabled:=Кнопка+[X].Pressed; ? То есть как в коде использовать в названиях объектов цифры-номера? Можно ли использовать маски автоподстановки в коде, то есть чтобы для последних двух строк не писать вообще само число, а работало универсально? |
#10
|
|||
|
|||
![]() Уточните, пожалуйста - Filter в Dataset как работает? Фильтрует ПОЛУЧЕННЫЕ записи, или же строка фильтра добавляется к запросу в БД?
Пример - получил Dataset таблицу данных, применили фильтр, что произошло с данными? все неподходящие под фильтр данные совсем убраны из Dataset или же просто не передаются в DataSource ? При изменении фильтра будет повторный запрос Select? или будет проведена выборка из первоначальной таблицы данных? |
#11
|
||||
|
||||
![]() TDataSet их "не пропускает"
Пишу программы за еду. __________________ |
#12
|
|||
|
|||
![]() Кстати, профессионалы, а ведь у DBComboBox за одним из [+] настройки скрывается Filter! Может это то, что нужно???
В связи ч ем возникает вопрос - есть ли какие-либо реальные преимущества у DBLookupCombo который без Filter ??? |
#13
|
||||
|
||||
![]() покажи скрин? и перестань путать DBComboBox и DBLookupCombo.
Пишу программы за еду. __________________ |
#14
|
|||
|
|||
![]() Я их не путаю, это 2 разных компонента, только почему-то в проекте использованы оба вперемешку...
http://wiki.delphi-jedi.org/wiki/JVC...ettings.Filter У этого компонента есть параметры: DataSource и ListSettings -> DataSource, там же и на том же уровне находится и ListSettings -> Filter Смотрим скрин, удивляемся, офигиваем, благодарим за просвещение ![]() Последний раз редактировалось delphicoding, 28.09.2011 в 16:14. |
#15
|
||||
|
||||
![]() а..а, уже TJvDBComboBox. пожалуй я не буду смотреть скрин...
Пишу программы за еду. __________________ |