Дополнение формы базы новыми элементами управления

Cadil
Дата: 03.11.2009 13:55:19
Есть некая узкоспециализированная нормально функционирующая база данных Access. Скрин формы этой базы показан на рисунке. При выборе из «Поля со списком» номера (поз. 1 на рисунке) выводятся результаты поиска в ленточном виде (поз. 3) поля по имени It_Items (поз. 2), которое через свойство «Данные» (поз. 4) связано с полем со списком It (поз. 1).

Необходимо на эту форму дополнительно ввести еще два ПоляСоСписком «Местонахождение» и «Бирка», чтобы при вводе в них информации выводились результаты фильтрации, как и раньше, через поле It_Items (поз. 2).

Как это сделать? А может быть задачу можно решить другим способом с минимальными изменениями работающей формы?

Заранее благодарен.
TpaBka
Дата: 03.11.2009 14:26:59
Я эту проблемe решаю следующим путем на событие «После обновления» поля со списком использу функцию сборки Recordsource подчиненной формы. Код, примерно следующий конечно корявый, но главное чтобы Вы поняли идею.
Dim БазовыйЗапрос, Условие
БазовыйЗапрос= “SELECT * From [Мойзапрос] ”
If Not IsNull(ПолеСоСписком1) Then
Условие= “[Мойзапрос].[Данные1] = ” & me.ПолеСоСписком1
ElseIf Not IsNull(ПолеСоСписком2) Then
Условие= Условие &” AND ”&“[Мойзапрос].[Данные2] = ” & me.ПолеСоСписком2
ElseIf Not IsNull(ПолеСоСписком3) Then
Условие= Условие &” AND ”&“[Мойзапрос].[Данные3] = ” & me.ПолеСоСписком3
End if
If Not IsNull(Условие) Then
Условие=Trim(Условие)
Условие=” WHERE “& IIf(Left(Условие),3)=”AND”,Right(Условие),Len(Условие)-3),Условие)
End if
Forms![ГлавнаяФорма]![ПодчиненнаяФорма].Form.RecordSource= БазовыйЗапрос” & Условие
Cadil
Дата: 03.11.2009 16:18:15
TpaBka
Я эту проблемe решаю следующим путем на событие «После обновления» поля со списком использу функцию сборки Recordsource подчиненной формы. Код, примерно следующий конечно корявый, но главное чтобы Вы поняли идею.
Dim БазовыйЗапрос, Условие
БазовыйЗапрос= “SELECT * From [Мойзапрос] ”
If Not IsNull(ПолеСоСписком1) Then
Условие= “[Мойзапрос].[Данные1] = ” & me.ПолеСоСписком1
ElseIf Not IsNull(ПолеСоСписком2) Then
Условие= Условие &” AND ”&“[Мойзапрос].[Данные2] = ” & me.ПолеСоСписком2
ElseIf Not IsNull(ПолеСоСписком3) Then
Условие= Условие &” AND ”&“[Мойзапрос].[Данные3] = ” & me.ПолеСоСписком3
End if
If Not IsNull(Условие) Then
Условие=Trim(Условие)
Условие=” WHERE “& IIf(Left(Условие),3)=”AND”,Right(Условие),Len(Условие)-3),Условие)
End if
Forms![ГлавнаяФорма]![ПодчиненнаяФорма].Form.RecordSource= БазовыйЗапрос” & Условие


Спасибо! Буду разбираться. А нельзя как-нибудь попроще. Например, через создание новой формы, используя ту же таблицу? Не хотелось бы вникать в программирование.
TpaBka
Дата: 03.11.2009 16:37:20
Cadil
Спасибо! Буду разбираться. А нельзя как-нибудь попроще. Например, через создание новой формы, используя ту же таблицу? Не хотелось бы вникать в программирование.

Можно определять условия отбора в самом запросе являющимся источником данных подчиненной формы, но здесь нужны знания языка SQL.
Папа Игорь
Дата: 03.11.2009 16:57:52
Cadil
... А нельзя как-нибудь попроще. Например, через создание новой формы, используя ту же таблицу? Не хотелось бы вникать в программирование.


Не садитесь за руль. А то еще придется вникать в правила дорожного движения.

P.S. Не обижайтесь. Это просто шутка. Успехов.
Cadil
Дата: 05.11.2009 11:06:58
Папа Игорь
Cadil
... А нельзя как-нибудь попроще. Например, через создание новой формы, используя ту же таблицу? Не хотелось бы вникать в программирование.


Не садитесь за руль. А то еще придется вникать в правила дорожного движения.

P.S. Не обижайтесь. Это просто шутка. Успехов.


Безусловно, в каждой шутке только доля шутки, остальное – правда. Заняться изучением SQL, ради вставки двух элементов управления на форму – слишком неразумно! Сначала я думал решить проблему с помощью инструментов Билла Гейтса в течение дня, но сейчас осознал серьезность проблемы.

Буду благодарен тому, кто вышлет мне фрагмент базы Access, где поиск проводится по нескольким параметрам, чтобы я по аналогии смог дополнить свою форму двумя полями. Задача, на мой взгляд, типовая – редко в какой базе поиск выполняется по одному параметру.

И вопросик попроще ... Завел в ПолеСоСписком (поз. 1 на рис. выше) вместо перечня номеров - список бирок. Схема работает, но как-то странно выводит выборку где одинаковые не только бирки, но и номера. Если есть необходимость - приведу рисунок.