Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Контролл в форме не показывает результат запроса / 11 сообщений из 11, страница 1 из 1
07.08.2018, 11:19
    #39684125
s_igor_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
Добрый день!
Ситуация:
Access 2010 из Office Professional 2010, русский
Есть форма Frm, режим - Только чтение, вид - Таблица.
Источник данных - SQL запрос из таблицы Tbl1, которая по ключевому полю x1 (тип String)
связана с таблицей Tbl2, отношение "один-ко-многим".
Таблица Tbl2 связана с таблицей Tbl3 по НЕ ключевому полю x2 (тип String).
Тbl1.[x1] отображается в Frm.[x], тип контрола - поле.
В Frm.[y], тип контрола - поле со списком - должен отображаться результат SQL запроса из Tbl3.

Все происходит в событии OnOpen формы Frm:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Private Sub Form_Open(Cancel As Integer)
  Dim RecSource As String, S As String

  RecSource = varSQL_PK ' глобальная переменная с именем запроса
  Me.RecordSource = RecSource
  S = Me.[x] 'ключевое поле
  With [y]
    .BoundColumn = 1
    .RowSource = _
      "SELECT Tbl3.[x2], Tbl3.[x3] FROM Tbl3" + _
      " INNER JOIN (Tbl2" + _
      " INNER JOIN " + RecSource + _
      " ON Tbl2.[x1]=" + RecSource + ".[x1])" + _
      " ON Tbl3.[x2]=Tbl2.[x2]" + _
      " WHERE Tbl2.[x1]='" + _
      S + "'" + _
      " ORDER BY Tbl3.[x3];"

    .RowSourceType = "Table/Query"
    .ColumnCount = 2
    .ColumnWidths = "0см;3,652см"
    .LimitToList = True
    .AllowValueListEdits = False
    .InheritValueList = True

    .Requery
  End With

End Sub


Проблема:
1) при открытии формы вся колонка Frm.[y] пустая, хотя при выборе любого [y] открывается список полей
2) для всех [y] список записей одинаков, т.к. в условие отбора Access ставит ТОЛЬКО
первую запись из Me.[x], хотя нужно - свое значение для каждой записи на форме.

Если убрать WHERE - тот же эффект, только в списке все записи.

В чем ошибка?

Отзовитесь, кто знает, ПОЖАЛУЙСТА!

P.S. Для Frm.[y] в Tbl1 есть поле [y] - можно ли как-то в Tbl1 обойтись без него?
Т.к. форма только для просмотра, результат запроса хранить не нужно.
...
Рейтинг: 0 / 0
07.08.2018, 11:33
    #39684135
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
s_igor_l, базу в студию. Что-то никак на пальцах не соображу.
...
Рейтинг: 0 / 0
07.08.2018, 11:38
    #39684142
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
s_igor_l,
что побудило засунуть это дело в Form_Open?
для того чтобы control что-то показывал нужно его прицепить к ресурсу .ControlSource = ...
...
Рейтинг: 0 / 0
07.08.2018, 11:56
    #39684158
s_igor_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
1) Базу выложить не могу, по некоторым соображениям
2) .ControlSource пробовал установить - результат тот же
3) А куда еще засунуть, кроме OnOpen?
4) Access'oм занимаюсь по "производственной необходимости" ("чайник"), нужной информации найти не могу, догадываться уже здоровья не хватает

Всем ответившим - СПАСИБО!
...
Рейтинг: 0 / 0
07.08.2018, 12:37
    #39684192
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
s_igor_l, обычно заносится в Form_Load
.requery убрать надо
конструкция в .RowSource с S не прокатит - делайте .x1=Forms!frmname!x
...
Рейтинг: 0 / 0
07.08.2018, 14:54
    #39684291
s_igor_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
alecko,
1) Form_Load - то же самое; по справке - то же, что Form_Open, только отменить нельзя
2) .Requery - то же самое, только работает быстрее, стественно
3) .x1=Forms!frmname!x - с этого начинал. Проблема в том, что Параметр в запросе, в ДАННОМ случае, Access Параметром НЕ считает
Похоже, проблема в форме, не пойму - какая.
...
Рейтинг: 0 / 0
07.08.2018, 15:21
    #39684312
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
Гммммм... я б попробовал вот тут
WHERE Tbl2.[x1]='" + _
S + "'" + _
+ на & поменять......
...
Рейтинг: 0 / 0
07.08.2018, 15:23
    #39684316
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
А то и во всех остальных местах.....
...
Рейтинг: 0 / 0
07.08.2018, 15:26
    #39684321
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
s_igor_lalecko,
1) Form_Load - то же самое; по справке - то же, что Form_Open, только отменить нельзя
А вот и нет. Аргументы только в Form_Open считать можно (вроде бы)
s_igor_l2) .Requery - то же самое, только работает быстрее, стественно
3) .x1=Forms!frmname!x - с этого начинал. Проблема в том, что Параметр в запросе, в ДАННОМ случае, Access Параметром НЕ считает
Похоже, проблема в форме, не пойму - какая.
И вообще, перенеси-ка ты весь этот код в секцию Form_Load
Если не получится, то в Form_Current
...
Рейтинг: 0 / 0
08.08.2018, 10:24
    #39684641
s_igor_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контролл в форме не показывает результат запроса
Joss,

Специфика моей БД такова, что Null в результатах запросов может быть только в некоторых местах, которые я обрабатываю отдельно, поэтому "+" и "&" - без разницы

alecko,
1) Аргумент только в Form_Open (Cancel As Integer), т.к. позволяет отменить обработку события OnOpen
2) В Form_Load переносил, без разницы
3) В Form_Current переносил, форма работает не корректно

*********************************
Вижу, придется опять самому по потолку бегать, как обычно)))))
Тема закрыта.
Всем откликнувшимся - СПАСИБО!
...
Рейтинг: 0 / 0
08.08.2018, 12:38
    #39684773
Контролл в форме не показывает результат запроса
s_igor_lВ Form_Current переносил, форма работает не корректно Если набор строк в ПС должен меняться для каждой записи, то менять источник строк ПС нужно именно на Form_Current.
Но это правильно работает на простой форме или на ленточной/табличной при условии, что в ПС отображается связанный столбец.
У вас связанный столбец скрыт и если в текущей записи его сохраненному значению соответствует строка в списке и значение из другого столбца этой строки отображается, то в других видимых записях строк, соответствующих сохраненным значениям может и не быть, тогда в ПС пусто (ваша проблема №1).
Стандартное решение для Акса - в ленточной/табличной форме в ПС выводить все строки, а для ввода/редактирования записи открывать другую (простую) форму.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Контролл в форме не показывает результат запроса / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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