![]() |
|
|
Регистрация | << Правила форума >> | 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. |