powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Зависимое поле со списком
19 сообщений из 19, страница 1 из 1
Зависимое поле со списком
    #39536452
Finmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
В форме есть два поля с выпадающим списком:
1 - с наименованием заемщиков,
2 - с номерами договоров.
Как сделать так, чтобы при выборе заемщика в поле "Выбор заемщика из списка" в выпадающем списке "Номер договора" появлялись только те договоры, которые относятся к выбранному в 1 поле заемщику. Сейчас у меня там выпадают все договоры со всеми заемщиками :(

Скриншоты прикладываю.

P.S.
Код: vbnet
1.
2.
3.
4.
5.
В поле "Выбор заемщика из списка" сейчас стоит такой источник данных:
SELECT [Заемщики].ИНН, [Заемщики].Заемщик FROM Заемщики;

В поле "Номер договора" сейчас такой источник:
SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП;
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536453
Finmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл указать важное.
Для того, чтобы все поля в форме "КП" обновлялись после выбора того или иного заемщика из "Выбор Заемщика из списка" или договора из списка "Номер договора" сделал следующее:

Для выпадающего списка "Выбор Заемщика из списка" прописано следующее событие в поле "После обновления".
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Комбинированная69_AfterUpdate()
    Dim rs As Object
    
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ИНН] = " & Str(Nz(Me![Комбинированная69], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    
End Sub



Для выпадающего списка "Номер договора" прописано тоже самое:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Комбинированная112_AfterUpdate()
    Dim rs As Object
    
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ИНН] = " & Str(Nz(Me![Комбинированная112], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536473
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Finmax, что мешает в условие второго списка поставить значение первого?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП where [КП].[ИНН]="""& Me.[Комбинированная69] & """"

Private Sub Комбинированная69_AfterUpdate()
Me.Комбинированная112.requery
End sub
Private Sub Комбинированная112_AfterUpdate()
    Dim rs As recordset
  Me.Painting=false  
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ИНН] = """ & Me![Комбинированная112] & """"
    If Not rs.Nomatch Then Me.Bookmark = rs.Bookmark
Me.Painting=true
End Sub


ключ конечно лучше чтоб был не текстовый, заполнение тоже спорное, но это наверное и так понятно.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536488
Finmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

Как не пробовал - не выходит. Либо различного рода ошибки, либо просто пустое окно.
Вот я загрузил файл на яндекс диск. Помогите плиз) готов финансово отблагодарить.
yadi.sk/d/dE3yOw3u3NmKuV
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536526
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Finmax,
если есть желание, поподробней,пожалуйста-озвучьте решаемую задачу
Что-то я смутно догадываюсь о неправильности схемы
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536548
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Finmax,
форма не открылась (у мну акс07).
ИНН оказывается у Вас числовой формат имеет (неожиданно). поэтому надо переписать
в конструкторе форм в строке источник строк поля со списком Комбинированная112
"SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП where [КП].[ИНН]= " & Forms![Main]![Комбинированная69] & ";"
либо
Код: vbnet
1.
2.
3.
4.
Private Sub Комбинированная69_AfterUpdate()
Me.Комбинированная112.RowSource ="SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП where [КП].[ИНН]= " & Me.Комбинированная69 & ";"
Me.Комбинированная112.requery
End sub


Код: vbnet
1.
2.
3.
4.
Private Sub Комбинированная112_AfterUpdate()
...
rs.FindFirst "[ИНН] = " & Me![Комбинированная112]
...


p.s. отчеты обычно открывают в режиме предварительного просмотра, т.е. никакие кнопки не работают.
лучше ИНН конечно не делать ключом, просто введите поле счетчик, и сделайте его ключом, пока кода немного.
надеюсь это учебная задача.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536569
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Finmax,
Если вы так смело ложите данные на яндекс, то может не затруднит сжать до 150кб и кинуть в ветку форума? (а то как-то с легкой руки некоторых правителей до яндекса не достучаться)
Если же не сожмется - сделайте копию базы и оставьте в ключевых таблицах несколько данных. Вопрос ваш не сложный, но проще сделать, чем объяснять.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536573
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko...

Код: vbnet
1.
2.
3.
4.
Private Sub Комбинированная69_AfterUpdate()
Me.Комбинированная112.RowSource ="SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП where [КП].[ИНН]= " & Me.Комбинированная69 & ";"
Me.Комбинированная112.requery'вообще излишне, а при большом кол-ве данных лицо бить нужно
End sub

...
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536576
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
а я вот знаю некоторых, которые тащатся от созерцания пиковых нагрузок в системном мониторе :)
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536596
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, излишне, только если менять RowSource в коде обновления, если же RowSource зашить изначально (в конструкторе ли, в коде ли (каком нить Form_Load)), a про замену в конструкторе формы писал выше- то requery необходим.
для того чтобы ТС не "потерял" его я его оставил. Беды большой не будет.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536603
blackbuster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я бы поставил событие на вход в список договоров:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Комбинированная112_Enter()
if isnull (me.Комбинированная69) then
Me.Комбинированная112.RowSource = "SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП"
else
Me.Комбинированная112.RowSource ="SELECT [КП].[ИНН], [КП].[Номер договора] FROM КП where [КП].[ИНН]= " & Me.Комбинированная69 & ";"
end if
End sub


в этом случае и условия AfterUpdate Должны корректно работать
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536609
Finmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем все-таки не получилось самому.
Файл сохранил в версии 2003 Access, упаковал в архив.
Прикладываю.

P.S.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536620
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Finmax,
бр-р-р-р-р-р, схема данных - просто отпад
вообщем "я его слепила из того, что было". данные берутся из таблицы КП (опять таки, может вечер, а может старею... из предложенной схемы данных я не понял ничего, но! нормализацией даже не пахнуло), так как и "Заемщик" и "Номер договора" тама есть.
Поля со списком я удалил (заменил на другие, настройки дефолт) так как копаться в геморрое во всех нюансах некогда.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Комбинированная15_GotFocus()
If Комбинированная18 <> "" Then
    Комбинированная15.RowSource = "SELECT КП.Заемщик FROM КП WHERE (((КП.[Номер договора]) = '" & Комбинированная18 & "')) GROUP BY КП.Заемщик ORDER BY КП.Заемщик"
Else
    Комбинированная15.RowSource = "SELECT КП.Заемщик FROM КП GROUP BY КП.Заемщик ORDER BY КП.Заемщик"
End If
End Sub

Private Sub Комбинированная18_GotFocus()
If Комбинированная15 <> "" Then
    Комбинированная18.RowSource = "SELECT КП.[Номер договора] FROM КП WHERE (((КП.Заемщик) = '" & Комбинированная15 & "')) GROUP BY КП.[Номер договора] ORDER BY КП.[Номер договора]"
Else
    Комбинированная18.RowSource = "SELECT КП.[Номер договора] FROM КП GROUP BY КП.[Номер договора] ORDER BY КП.[Номер договора]"
End If
End Sub


сорри за zip, но rara не имею
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536626
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Finmax,
да, зависимость в полях со списком - так как на первом скрине, оба зависят друг от друга. если все таки надо так, чтобы зависимы были только договора, первую часть меняем на
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Комбинированная15_GotFocus()
'If Комбинированная18 <> "" Then
'    Комбинированная15.RowSource = "SELECT КП.Заемщик FROM КП WHERE (((КП.[Номер договора]) = '" & Комбинированная18 & "')) 'GROUP BY КП.Заемщик ORDER BY КП.Заемщик"
'Else
    Комбинированная15.RowSource = "SELECT КП.Заемщик FROM КП GROUP BY КП.Заемщик ORDER BY КП.Заемщик"
'End If
End Sub
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536634
Finmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vixxa,

спасибо! зависимость работает в вашем файле. Но теперь не работает нижняя часть формы, а именно не обновляются данные после текстового поля "После выбора договора во 2 окне обновляются значения ниже:"
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536640
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не смог открыть базу из рара, поэтому воспользовался базой, которую выложил vixxa (сути не меняет - просто изначальный вариант мне недоступен)
режут глаз данные до начала фильтрации, поэтому я их закинул в коллекцию. коллекцию прячем/открываем.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536651
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleckoПанург, излишне, только если менять RowSource в коде обновления, если же RowSource зашить изначально (в конструкторе ли, в коде ли (каком нить Form_Load)), a про замену в конструкторе формы писал выше- то requery необходим.
для того чтобы ТС не "потерял" его я его оставил. Беды большой не будет.В таком случае рэмить нужно и давать пояснение, потому как многие начинающие бездумно вставляют код. А так, что бы не всю объектную модель вписать?
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536717
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Finmax,
вот так всегда, сперва
Finmax сделать так, чтобы при выборе заемщика в поле "Выбор заемщика из списка" в выпадающем списке "Номер договора" появлялись только те договоры, которые относятся к выбранному в 1 поле заемщику.
потом
Finmaxспасибо! зависимость работает в вашем файле. Но теперь не работает нижняя часть формы, а именно не обновляются данные после текстового поля "После выбора договора во 2 окне обновляются значения ниже:"
Хочется привести цитату из этого форума:
sdkuпосмотрел Ваше "творчество"-а что Вы вообще делаете? ... ( конкретно и полно поставленная задача это 75-80 % её успешного решения )
А по сути, ведь изначально то вы сами ваяли форму, по своему(!) разумению. И если у вас изначально (в вашей редакции) все работало, но вопрос стоял только в данных для полей со списками, нужно просто допилить чуток код и все.... Тем более, что код у вас, и, я думаю вы прочли, что
vixxaвообщем "я его слепила из того, что было". данные берутся из таблицы КП (опять таки, может вечер, а может старею... из предложенной схемы данных я не понял ничего, но! нормализацией даже не пахнуло), так как и "Заемщик" и "Номер договора" тама есть.
Поля со списком я удалил (заменил на другие, настройки дефолт) так как копаться в геморрое во всех нюансах некогда.
вообщем, думаю вариант, предложенный alecko вас удовлетворит.
...
Рейтинг: 0 / 0
Зависимое поле со списком
    #39536741
Finmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vixxa,

и все остальные,
Спасибо! Все заработало! Ура.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Зависимое поле со списком
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]