Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизDBLookupComboBox Найти похожие ветки
← →
coral (2005-12-01 17:15) [0]Как работать с DBLookupComboBox?
← →
Ega23 © (2005-12-01 17:17) [1]Нужен набор данных. Прописываешь его в ListSource. Определяешь поле KeyField и ListField.
← →
coral (2005-12-01 17:23) [2]А как потом обратиться к этим полям уже в комбобоксе? У меня в базе есть таблица Учеников и Тестов. В combo я отображаю названия тем тестов. Мне нужно по выбору темы, чтобы в грид отобрадились поля учеников, которые сделали этот тест. как быть?
← →
Ega23 © (2005-12-01 18:01) [3]Ты путаешь тёплое с мягким.
Но что е тебе подсказал - это работа на уровне наборов данных. Так называемая Master-Detail связь.
← →
coral (2005-12-01 18:03) [4]То есть в зависимости от выбранного в combo поля я никак не смогу отображать данные в гриде?
← →
Ega23 © (2005-12-01 18:11) [5]Почему? Сможешь.
Вот пример.
Сначала БД
Create Table Master
(
MasterID int
MasterName varchar
)
Create Table Detail
(
DetainlID int,
MasterID int,
DetailName varchar
)
Предположим, у тебя такая структура данных.
Берёшь Delphi, создаёшь новый проект, делаешь коннект к БД (не знаю, какими компонентами доступа пользуешься).
Кладёшь 2 потомка TDataSet (например, TADOQuery или TQuery - в зависимости от того, какой механизьм доступа к данным) и 2 TDataSource.
В первом DataSet"е в SQL пишешь "Select * from MasterTable"
Во втором - "Select * from DetailTable where MasterID=:MasterID"
И для второго DataSet в свойство DataSource прописываешь первый DataSource (который на первый DataSet смотрит).
Кидаешь на форму 2 DBGrid"а, первому присваиваешь dataSource1, второму - dataSource2.
Открываешь оба DataSet"а. Кликаешь по первому гриду. Наслаждаешься.
То же самое справедливо и для TDBLookupCombo.
← →
coral (2005-12-01 18:28) [6]Ну ты замутил! а если я из Access заполню обычный combo столбцом одной из таблиц, например:
begin
with adotable1 do
begin
open;
while not EOF do
begin
ComboBox1.Items.Add(FieldByName("Òåìà").AsString);
next;
end;
end;
end;
а теперь надо как-то обращаясь к этим записям, делать выборку и кидать все в грид... вот только вопрос как?
← →
Ega23 © (2005-12-01 18:29) [7]
> а теперь надо как-то обращаясь к этим записям, делать выборку
> и кидать все в грид... вот только вопрос как?
Вот для того, чтобы не было мучительного "Как?" и разработан компонент TDBLookupCombo.
← →
coral (2005-12-01 18:37) [8]Ок, уговорил! вернемся к твоему примеру! как я понимаю, ты предлагаешь чтобы по выбору поля в одной таблице (гриде), в другой таблице отображались бы сведения по запросу к другой таблице так?
← →
Ega23 © (2005-12-01 18:47) [9]Вместо первого грида ты можешь как раз TDBLookupCombo использовать.
Пойми, это всего лишь графическое представление набора данных. И переоткрытие подчинённого запроса будет происходить тогда, когда у набора данных передвинется курсор. А от чего он передвинется - в гриде новую запись выбрали, TDataSet.Next сделали или в LookupCombo новую запись выбрали - это дело десятое.
← →
coral (2005-12-01 19:11) [10]Ты не поверишь, но ниче не выходит... при выборе записи из combo в гриде просто курсор ставится на запись, но никакого запроса и тем более его выполнения не происходит...
← →
Ega23 © (2005-12-02 11:01) [11]
> Ты не поверишь, но ниче не выходит... при выборе записи
> из combo в гриде просто курсор ставится на запись, но никакого
> запроса и тем более его выполнения не происходит...
>
Подзапрос должен быть связан с набором данных, на которых смотрит твой комбо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c