Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
14-1132836140
syte_ser78
2005-11-24 15:42
2005.12.18
существуюттли форумы для локальной сети?


2-1133624922
Катерина
2005-12-03 18:48
2005.12.18
OpenDialog


14-1132353545
lookin
2005-11-19 01:39
2005.12.18
Skype никто не хочет воспользоваться?


14-1132936693
Piter
2005-11-25 19:38
2005.12.18
Знатокам Counter-Strike


4-1129626881
ShiFT
2005-10-18 13:14
2005.12.18
WinHotKeyCtrl