Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Как изменить условие запроса?


Автор: Irina_N 13.2.2008, 12:17
     Есть Форма1. На ней подчиненные формы Агенты и Поставщики. При выборе агента, в форме Поставщики должны отображаться все поставщики, с которыми работает данный агент. Таблицы Агенты и Поставщики связаны через таблицу АгентыПоставщики. Получается, что подчиненная форма Поставщики должна быть основана на запросе типа:

Код

SELECT АгентыПоставщики.Поставщик
FROM АгентыПоставщики
WHERE (((АгентыПоставщики.[ID агента])="  "));


Но как можно менять условие запроса? Ведь при выборе агента в запросе должен быть изменен ID агента.

Спасибо.

Автор: bopoha 13.2.2008, 12:41
У формы есть событие текущая запись. При возникновении этого события на форме Агенты необходимо устанавливать фильтр на форме поставщиков.

Передать ссылку на форму Поставщиков в форму Агентов. Из формы Агентов можно накладывать фильтр.

Код

форма.Filter = "Поле = значение"
форма.FilterOn = True


Или вызывать собственный метод на форме Поставщиков с кодом Агента, который сам все сделает...

Автор: Akina 13.2.2008, 13:04
Цитата(Irina_N @  13.2.2008,  13:17 Найти цитируемый пост)
Получается, что подчиненная форма Поставщики должна быть основана на запросе типа:

 smile судя по Вашим словам, ни фига у Вас формы не связаны. Просто одна лежит на другой как мультикомпонент.

Автор: Irina_N 13.2.2008, 13:24
Таблицы связаны. Я просто не знаю, как правильно сделать такую форму, чтобы при выборе Агента отображались поставщики этого агента. Поэтому и спрашиваю.

Автор: Irina_N 13.2.2008, 13:51
     Значит, правильнее будет использовать не таблицу Поставщики, а таблицу АгентыПоставщики с использованием фильтра?
     Тогда как правильно использовать фильтр?

     форма.Filter = "Поле = значение"
     форма.FilterOn = True

     Поле понятно. А значение? Ведь оно будет меняться. Объясните пожалуйста.

Автор: Akina 13.2.2008, 14:05
Цитата(Irina_N @  13.2.2008,  14:24 Найти цитируемый пост)
Таблицы связаны

Это не связало формы

Цитата(Irina_N @  13.2.2008,  14:24 Найти цитируемый пост)
Я просто не знаю, как правильно сделать такую форму, чтобы при выборе Агента отображались поставщики этого агента. 

Доверьте размещение подчиненной формы на основной форме мастеру (возможно, его придеься подключить) - и установите правильную связь. Остальное будет работать безо всякого кода.

Автор: bopoha 13.2.2008, 16:38
Цитата(Akina @  13.2.2008,  14:05 Найти цитируемый пост)
Доверьте размещение подчиненной формы на основной форме мастеру (возможно, его придеься подключить) - и установите правильную связь. Остальное будет работать безо всякого кода. 

В этом случае не будет видно списка Агентов... 

Цитата(Irina_N @  13.2.2008,  13:51 Найти цитируемый пост)
Поле понятно. А значение? Ведь оно будет меняться. Объясните пожалуйста. 


Конечно значение будет меняться.... Брать его у формы Агентов:
Код

Me.КодАгента '-- или еще как нибудь..

Автор: Irina_N 14.2.2008, 11:14
Что я не так поняла? Вместо того, чтобы при выборе агента отображались поставщики этого агента в форме22, появляется окно, где предлагается ввести номер агента.

Код

Private Sub Form_Current()
Form_22.Filter = "Id_агента = me.Id_агента"
Form_22.FilterOn = True
End Sub



Автор: Akina 14.2.2008, 11:18
Цитата(bopoha @  13.2.2008,  17:38 Найти цитируемый пост)
В этом случае не будет видно списка Агентов... 

 smile с какого это перепугу?

Автор: bopoha 14.2.2008, 11:24
Цитата(Akina @  14.2.2008,  11:18 Найти цитируемый пост)
с какого это перепугу? 


Т.е. не получится увидеть список агентов и список поставщиков... Если делать мастером, то получится обычная форма с подчиненной формой поставщиков...

Автор: Irina_N 14.2.2008, 11:53
     Мастером действительно не получается сделать так, как нужно. Главная форма связана с подчиненной, но не видно списка агентов - есть только переход по записям.

Автор: Akina 14.2.2008, 12:10
Цитата(Irina_N @  14.2.2008,  12:53 Найти цитируемый пост)
Мастером действительно не получается сделать так, как нужно

Надо создать самостоятельно обе формы, и затем размещать одну на другой - мастер подключится на этапе установления связи.

Цитата(Irina_N @  14.2.2008,  12:53 Найти цитируемый пост)
не видно списка агентов 

Значит, его (вернее, контрола для его отображения) нет на макете формы на начальном этапе создания.

Автор: Irina_N 14.2.2008, 12:28
       Тогда как разместить одну форму на другой, если обе должны быть в табличном виде? Получается, что формы Агенты и Поставщики должны быть размещены на третьей форме? Как их связать?

Автор: Akina 14.2.2008, 12:35
Цитата(Irina_N @  13.2.2008,  13:17 Найти цитируемый пост)
Есть Форма1. На ней подчиненные формы Агенты и Поставщики. 

По-моему, форм таки три... причем Поставщики - подчиненная для Агенты, которая в свою очередь подчиненная (или, может, внедренная?) для Форма1

Автор: bopoha 14.2.2008, 12:53
Цитата(Akina @  14.2.2008,  12:35 Найти цитируемый пост)
По-моему, форм таки три... причем Поставщики - подчиненная для Агенты, которая в свою очередь подчиненная (или, может, внедренная?) для Форма1 


Так не выйдет

Форм действительно три...
Основаная, без данных
Агенты
Поставщики

При изменении записи на форме Агентов, меняется фильтр на форме Поставщиков.

Работы на 30 мин... В чем сложности?

Автор: Irina_N 14.2.2008, 13:29
   Может быть, действительно всё просто, но у меня мало опыта и никак не получается правильно сделать. Так как же всё-таки правильно сделать этот фильтр?

Автор: bopoha 14.2.2008, 15:09
На форме Агенты, на событии текущая запись
Код

dim frmProd as Form

set frmProd = Me.Parent.элемент_с_формой_продавцов.Form
frmProd.Filter "ПолеКодаАгента = " & Me.КодАгента


Все! Тест на русском заменить на свой вариант...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)