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