Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Кое-что о запросах и основанных на них формах. Критические ситуации / 20 сообщений из 20, страница 1 из 1
19.04.2018, 09:12
    #39632944
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Кое-что о запросах и основанных на них формах. Критические ситуации.

Есть у меня форма с подформой. Подформа основана на запросе. На мой взгляд не слишком сложном (но это моё мнение). Понадобилось мне добавить в подформу одно новое поле из новой таблицы. И вместо заполненной подформы получил пустое место. Вот так.

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
19.04.2018, 09:15
    #39632947
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Перешел в режим конструктора и попробовал заново открыть форму в режиме формы. Раньше она запускалась у меня при старте задачи из autoexec.
Получил Вот такое сообщение.
...
Рейтинг: 0 / 0
19.04.2018, 09:15
    #39632948
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Не прикрепил.
...
Рейтинг: 0 / 0
19.04.2018, 09:27
    #39632956
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Вот исходный запрос, на котором была основана подформа
...
Рейтинг: 0 / 0
19.04.2018, 09:30
    #39632960
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
А вот это, доработанный.
...
Рейтинг: 0 / 0
19.04.2018, 09:41
    #39632969
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Долго разбирался, в чем дело. Пробовал действовать последовательно.
Добавляю таблицу - всё работает.
Добавляю поле для вывода из таблицы. Перестаёт работать.

Сжатие и очистка от "мусора" не помогли.

Потом объединил связанные запрос и таблицу в один новый запрос и подставил его вместо задействованных запроса и таблицы. Вот так.
...
Рейтинг: 0 / 0
19.04.2018, 09:46
    #39632974
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Получается, что в некоторых случаях. запросы слишком тяжелы для форм. И их надо упростить, объединив несколько таблиц/запросов в один запрос, и уже его подставлять в итоговый.

Просто вот такое замечание, полученное опытным путём. Может кто-то уже с чем-то похожим сталкивался?
...
Рейтинг: 0 / 0
19.04.2018, 10:00
    #39632978
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
JossПолучается, что в некоторых случаях. запросы слишком тяжелы для форм. И их надо упростить, объединив несколько таблиц/запросов в один запрос, и уже его подставлять в итоговый.

Просто вот такое замечание, полученное опытным путём. Может кто-то уже с чем-то похожим сталкивался?
Я тоже к этому пришел в свое время и так же опытным путем.
...
Рейтинг: 0 / 0
19.04.2018, 14:19
    #39633186
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
JossМожет кто-то уже с чем-то похожим сталкивался?
Частенько сталкиваюсь с таким. Текст запроса почему-то просто режется в случайном месте. Поэтому использую только простые запросы, либо сохраненные запросы любой сложности
...
Рейтинг: 0 / 0
19.04.2018, 14:24
    #39633192
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Joss, а sql текст запроса какой? думается мне что акс при обработке добавления таблицы в конструкторе, тип связи поставил Right join.
...
Рейтинг: 0 / 0
19.04.2018, 15:31
    #39633257
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
MrShinЧастенько сталкиваюсь с таким. Текст запроса почему-то просто режется в случайном месте. Поэтому использую только простые запросы, либо сохраненные запросы любой сложности Использовал как раз сохранённый запрос.
...
Рейтинг: 0 / 0
19.04.2018, 15:43
    #39633270
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Исходный текст
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT Тб321КлПериод.pYear, Тб321КлПериод.IdCodPeriod, Тб301РеЗастр.КодОКПО, Тб301РеЗастр.НаимОКПО, 
Тб301РеЗастр.НомЗапТб301, IIf(Len(Тб301РеЗастр!Улица)>3,", " & Тб301РеЗастр!Улица,"") AS Улица_, 
IIf(Len(Nz(Тб301РеЗастр!ДомКвартира,""))>0,", " & Тб301РеЗастр!ДомКвартира,"") AS Дом_, 
Тб301РеЗастр!НасПункт & [Улица_] & IIf(Len(Nz(Тб301РеЗастр!ДомКвартира,""))>0,
", " & Тб301РеЗастр!ДомКвартира,"") AS Address_, Тб301РеЗастр.КодСубъект, Тб304РеСубъект.НаимСубъект, 
Тб301РеЗастр.СумКоличОНС AS ОНС, Тб301РеЗастр.СумКоличСОНС AS СОНС, Тб301РеЗастр.КодПериод, 
IIf(Len(Nz([email],""))=0,"","@") AS Lemail, Тб319УНП.OKULP, Left([Тб301РеЗастр].[КодОКПО],8) AS ОКПО8, 
Тб301РеЗастр.КодОКОГУ, qry_OKOGU.OKOGU0, qry_OKOGU.НаимОКОГУ AS NameOKOGU, Тб324ОКОГУ.НаимОКОГУ
FROM ((((((Тб301РеЗастр LEFT JOIN Тб321КлПериод ON Тб301РеЗастр.КодПериод = Тб321КлПериод.КодПериод) 
INNER JOIN Тб304РеСубъект ON (Тб301РеЗастр.КодПериод = Тб304РеСубъект.[Код период]) AND (Тб301РеЗастр.КодСубъект = Тб304РеСубъект.КодСубъект)) 
LEFT JOIN tblAdressE ON Тб301РеЗастр.КодОКПО = tblAdressE.КодОКПО) 
LEFT JOIN Тб319УНП ON Тб301РеЗастр.КодОКПО = Тб319УНП.OKPO) 
LEFT JOIN qry_OKOGU ON (Тб301РеЗастр.КодПериод = qry_OKOGU.КодПериод) AND (Тб301РеЗастр.КодОКОГУ = qry_OKOGU.КодОКОГУ)) 
LEFT JOIN Тб324ОКОГУ ON (qry_OKOGU.КодПериод = Тб324ОКОГУ.КодПериод) AND (qry_OKOGU.OKOGU0 = Тб324ОКОГУ.КодОКОГУ))
WHERE (((Тб301РеЗастр.КодПериод)=currentperiod()))
WITH OWNERACCESS OPTION;

Модернизированный текст
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT Тб321КлПериод.pYear, Тб321КлПериод.IdCodPeriod, Тб301РеЗастр.КодОКПО, Тб301РеЗастр.НаимОКПО, 
Тб301РеЗастр.НомЗапТб301, IIf(Len(Тб301РеЗастр!Улица)>3,", " & Тб301РеЗастр!Улица,"") AS Улица_, 
IIf(Len(Nz(Тб301РеЗастр!ДомКвартира,""))>0,", " & Тб301РеЗастр!ДомКвартира,"") AS Дом_, 
Тб301РеЗастр!НасПункт & [Улица_] & IIf(Len(Nz(Тб301РеЗастр!ДомКвартира,""))>0,", " & Тб301РеЗастр!ДомКвартира,"") AS Address_, 
Тб301РеЗастр.КодСубъект, Тб304РеСубъект.НаимСубъект, Тб301РеЗастр.СумКоличОНС AS ОНС, 
Тб301РеЗастр.СумКоличСОНС AS СОНС, Тб301РеЗастр.КодПериод, IIf(Len(Nz([email],""))=0,"","@") AS Lemail, Тб319УНП.OKULP, 
Left([Тб301РеЗастр].[КодОКПО],8) AS ОКПО8, Тб301РеЗастр.КодОКОГУ, qry_OKOGUm.OKOGU0, 
qry_OKOGUm.НаимОКОГУ AS NameOKOGU, qry_OKOGUm.НаимОКОГУм AS НаимОКОГУ, tblEBase.КодОператора
FROM (((((Тб301РеЗастр LEFT JOIN Тб321КлПериод ON Тб301РеЗастр.КодПериод = Тб321КлПериод.КодПериод) 
INNER JOIN Тб304РеСубъект ON (Тб301РеЗастр.КодПериод = Тб304РеСубъект.[Код период]) AND (Тб301РеЗастр.КодСубъект = Тб304РеСубъект.КодСубъект)) 
LEFT JOIN tblAdressE ON Тб301РеЗастр.КодОКПО = tblAdressE.КодОКПО) 
LEFT JOIN Тб319УНП ON Тб301РеЗастр.КодОКПО = Тб319УНП.OKPO) 
LEFT JOIN tblEBase ON Тб301РеЗастр.КодОКПО = tblEBase.КодОКПО) 
LEFT JOIN qry_OKOGUm ON (Тб301РеЗастр.КодОКОГУ = qry_OKOGUm.КодОКОГУ) AND (Тб301РеЗастр.КодПериод = qry_OKOGUm.КодПериод)
WHERE (((Тб301РеЗастр.КодПериод)=currentperiod()))
WITH OWNERACCESS OPTION;

Вряд ли здесь можно что-нибудь нарыть.
...
Рейтинг: 0 / 0
19.04.2018, 17:13
    #39633334
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
особенно учитывая что текст проблемного запроса не приведен :)
...
Рейтинг: 0 / 0
19.04.2018, 20:32
    #39633413
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Joss,

и видимо применена пользовательская функция
Код: sql
1.
WHERE (((Тб301РеЗастр.КодПериод)=currentperiod()))
...
Рейтинг: 0 / 0
19.04.2018, 21:02
    #39633421
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
aleckoособенно учитывая что текст проблемного запроса не приведен :)Почему?
Приведен.
Называется "модифицированный".
В нем новая таблица фигурирует - tblEBase. Из нее выбирается КодОператора.

Joss ,

А если при открытии формы задать
Код: vbnet
1.
Me.Recordsource = "<текст запроса>"

?
...
Рейтинг: 0 / 0
19.04.2018, 22:16
    #39633438
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
__Michelle, во втором запросе не должно быть запроса "qry_OKOGUm"- он создан позже, потому второй запрос - окончательный (проблем уже нет), и должна быть таблица "tblEBase "- в первом запросе её нет, т.е. он - начальный (проблем ещё не было)
...
Рейтинг: 0 / 0
20.04.2018, 08:55
    #39633515
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Если после события, описанного в первом посте (пустая подчинённая форма), перейти в режим конструктора, а потом попробовать обратно открыть форму, то Access может выдать следующее сообщение (смотри рисунок). Именно после него я и решил объединить отдельные таблицы в один запрос.
...
Рейтинг: 0 / 0
20.04.2018, 09:02
    #39633522
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
__Michelle Joss ,

А если при открытии формы задать
Код: vbnet
1.
Me.Recordsource = "<текст запроса>"

? И получим вот такое сообщение
...
Рейтинг: 0 / 0
20.04.2018, 09:06
    #39633526
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
ПЕНСИОНЕРКА, функция простенькая
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Function CurrentPeriod() As Integer
  If Nz(intPeriod, 0) = 0 Then
    CurrentPeriod = DMax("&#202;&#238;&#228;&#207;&#229;&#240;&#232;&#238;&#228;", "&#210;&#225;321&#202;&#235;&#207;&#229;&#240;&#232;&#238;&#228;", "Actuale<>0")
  Else
    CurrentPeriod = intPeriod
  End If
End Function
...
Рейтинг: 0 / 0
20.04.2018, 09:11
    #39633530
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кое-что о запросах и основанных на них формах. Критические ситуации
Ну вот опять русские буквы выдаются кодами
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Function CurrentPeriod() As Integer
  If Nz(intPeriod, 0) = 0 Then
    FilialPeriod = DMax("КодПериод", "Тб321КлПериод", "Actuale<>0")
  Else
    CurrentPeriod = intPeriod
  End If
End Function

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


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