|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с поиском по БД Access
Я начинающий. Сильно прошу не пинать. Читал книжки, но особо не понял как мне сделать следующее. Есть БД в ACCESS. Что-то на подобие инвентаризации. Т.е. При выборе фирмы, выбираем отдел. При выборе отдела, выбираем сотрудника отдела, выбрав сотрудника мы видим список оргтехники, которая на нем числится и инвентаризационный номер.
Смог получить список фирм в DBLookUpComboBox, но как мне сделать, чтоб при выборе определенной фирмы в DBLookUpComboBox1, в DBLookUpComboBox2 можно было видеть отделы, которые находятся в этой фирме и так далее? БД прилагаю. Просьба-помогите пожалуйста сделать поиск такого рода. Бд вроде правильно написана. А очень надо.... |
#2
|
|||
|
|||
Вообще, тут 2 варианта.
Вариант 1. Для каждого DBLookup есть свой DataSource и все это выстраивается в цепочку Master-Detail. Для небольшой БД вполне сойдет. Вариант 2. Делаем лукапы на основе обычных ComboBox и получаем данные по мере того, как пользователь выбирает. Кода писать больше, но зато система получается независящая от реального объема данных, т.к. всегда грузится небольшое кол-во данных Ну и еще есть третий вариант... DevExpress cxGrid (и схожие с ним компоненты). Там фильтрация уже встроена и не надо думать над этим вообще. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
beeline09 (22.12.2011)
|
#3
|
|||
|
|||
Цитата:
А можешь подробнее? Что где в каких действиях сделать? Я пока еще плохо себе это представляю. Но на примерах быстро научусь. Вариант 1 вроде бы я и использовал, только не получилось во втором лукапе отобразить в зависимости от первого. Второй вариант мне нравится, но как получать данные по мере того, как пользователь выбирает? Надо какое-то событие прописать. А какое? Как вообще это организовать? |
#4
|
||||
|
||||
Быстро накидал, чтоб ты принцип понял, но если изловчиться можно ошибку спровоцировать, необходимо чтоб поэтапно выбирались записи (фирма - отдел - сотрудник).
Вложение 2705 P.S. Обратить внимание нужно на события DBLookUpCombobox'a и на свойство filter компонента ADOQuery. Google в помощь Последний раз редактировалось Ildar-tsr, 03.05.2012 в 13:16. |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
beeline09 (22.12.2011)
|
#5
|
|||
|
|||
Цитата:
Спасибо огромное! Это как раз то, что нужно. Только вопросик еще один напросился :-) Вот выбрал я сотрудника...и тут у меня в dbgrid должны отобразиться данные из таблицы oborudovanie ACCESS. Там по ходу тоже фильтр нужен. Или нет? Что мне допилить надо для этого? И еще вопросик. Что делает вот этот код? Код:
for i:= 0 to ComponentCount-1 do if Components[i] is TADOQuery then TADOQuery(Components[i]).Open; Последний раз редактировалось beeline09, 20.12.2011 в 10:58. Причина: Добавил вопрос |
#6
|
||||
|
||||
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
beeline09 (22.12.2011)
|
#7
|
||||
|
||||
Цитата:
Код:
ADOQuery1.Filtered:= false; ADOQuery1.Filter:= 'id_oborud = ' + IntToStr(cbSotrudnik.KeyValue); ADOQuery1.Filtered:= true; Google в помощь |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
beeline09 (22.12.2011)
|
#8
|
|||
|
|||
Цитата:
Спасибо за столь быстрые ответы. Я уже даже опередил тебя :-) Но сделал не много по другому. Просто dbgrid подрубил к query, сделал его выключеным, а по closeup он включается просто :-) Вот теперь сижу парюсь над тем, чтоб данные эти в dbgrid редактировать по нажатию Enter. Вроде нашел инфу. Щас буду пробовать :-) |
#9
|
|||
|
|||
Не могу никак добавить в dbgrid столбцы из другой связанной таблицы :-( В данном случае: у меня в dbgrid отображаются все столбцы из таблицы Oborudovanie. Мне нужно добавить туда столбец Imya из таблицы сотрудники, Imya_otdela из таблицы Otdel и Imya_firmy из таблицы фирма. Делал через sql запрос в в qOborudovanie, но не получается. Подозреваю, что это из-за фильтра, который стоит на CloseUp cb Sotrudnik. Как это сделать? Никто не подскажет?
|
#10
|
||||
|
||||
Сделать запрос типа:
Код:
select Ob.*,сотрудники.Imya,Otdel.Imya_otdela,фирма.Imya_firmy from Oborudovanie Ob inner join Ob.ID = сотрудники.Ib_id inner join Ob.ID = Otdel.Ib_id inner join Ob.ID = фирма.Ib_id Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
beeline09 (22.12.2011)
|
#11
|
|||
|
|||
Цитата:
Вот спасибо огромное! Никогда бы не додумался до такого сам ))) Два вопроса: 1. Где можно начитаться об этом? Ни одной нормальной книги не нашел в нете или плохо искал... 2. Как после этого можно отредактировать данные в гриде или хотя без добавления в него столбцов из других таблиц. Или хотя бы данные из определенной ячейки в грид положить в какие-нибудь текст боксы и уже из них изменять соответствующий элемент в таблице? |
#12
|
||||
|
||||
Начитаться можно в инете по самое немогу. Ищите информацию по SQL.
Насчет редактирования данных по такому запросу очень много надо тут расписать. Вот для начала почитайте про ADO Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
beeline09 (29.12.2011)
|