Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.014 c
1-1132732615
Ega23
2005-11-23 10:56
2005.12.18
override-функция, она уже virual?


14-1133209074
MRAk
2005-11-28 23:17
2005.12.18
Жордан гаус


1-1132905488
remlin
2005-11-25 10:58
2005.12.18
Программное выделение ячеек StringGrid


2-1133375394
Сергей А.
2005-11-30 21:29
2005.12.18
3 вопроса по взаимодействию с DBGrid


6-1125758302
Inq
2005-09-03 18:38
2005.12.18
определение рабочих групп локальной сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский