![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. пожалуй я не буду смотреть скрин...
|