powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Крушения A97 на Union-запросах
7 сообщений из 7, страница 1 из 1
Крушения A97 на Union-запросах
    #32317768
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые гуру, работающие с А97!
Подскажите, пожалуйста, в чем может быть проблемса:
Есть два простых запросика на табличку с выборкой по like
а на них навешен Union.
В зависимости от выбранного параметра в комбобоксе формы
на этом union строится отчет.
Причем строится нормально в 98% случаев
но на двух (пока двух?) выбранных параметрах вылезает
любимое окно "программа выполнила недопустимую..."
с пояснением:
Программа MSACCESS вызвала сбой при обращении к странице памяти
в модуле MSJET35.DLL...

Ошибка лезет и на Office SR-2, и на третьем (последнем) сервис паке для Jet,
и без всего этого счастья...
Пока найдено решение вместо Union cскладывать результаты в табличку
но это же абсурд!..
Ни разу не приходилось сталкиваться с таким на А2000...
У кого какие мысли, отзовитесь!
Спасибо!
...
Рейтинг: 0 / 0
Крушения A97 на Union-запросах
    #32317961
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть в чем угодно....

Лучше бы конечно привести запрос и параметры, на которых летит....

А так - что можно сказать?!?!? Бывает.....

Я по опыт стараюсь не использовать в запросах ссылки на элементы формы - проще и себе дешевле (по-моему!!) динамически формировтаь и подставлять Sql из VB.... там же можно будет и отладить - что он подставляет в запрос - может фигню какую.....
...
Рейтинг: 0 / 0
Крушения A97 на Union-запросах
    #32325330
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос:

SELECT Report.ID, GetKol() AS Наим, Report.Инициатор, Report.Ответственный, ClAction.IDShowType, ClAction.ActionSort, Report.Action, Report.Name, Report.[Срок начала], Report.[Срок окончания], Report.[Исполнитель от подразделения], CombineString([УП],[АВТО],[VIP],[КОРП],[УПСФП],[УПК],[ЦОК],[ОПЕРУ],[ЮУ],[РИСКИ],[КРЕД],[ОРБП],[УРБ],[PR],[УБУиО],[УЭАПиУО],[КАЗН],[УИТО],[АТУ],[УБ],[УВА],[ОРП],[АП],[СПБ],[КАЗАНЬ],[НН]) AS Взаимодействие
FROM ClShowType RIGHT JOIN (ClAction RIGHT JOIN Report ON ClAction.Action = Report.Action) ON ClShowType.IDShowType = ClAction.IDShowType
WHERE (((Report.Инициатор) Like [Forms]![form1]![cmbDepartment]) AND ((ClAction.IDShowType)=1)) OR (((Report.Ответственный) Like [Forms]![form1]![cmbDepartment]) AND ((ClAction.IDShowType)=1))
ORDER BY Report.Инициатор;

Функции GetKol() и CombineString() - басяковые, одня достает колонку из комбосписка [cmbDepartment], другая соединяет вместе все переданные параметры

Второй запрос почти такой же (IDShowType)=2,
на них обоих - Union

Так вот если [cmbDepartment] содержит текст
УИТО
или
УЭАПиУО
- все накрывается...
То бишь при запуске каждого в отдельности - все ОК.
А при запуске UNion по ним - "...выполнила недопустимую..."

НО:
если эти запросы слить запросами на добавление в одну таблицу,
а на основании ее уже строить отчет - ВСЕ ОК!!!

Ну что за хрень?.. И Аксес разный, и винды разные, и все то же...

Господа гуру!!! (ВС, ЛП, SV!!!)
Неужель не встречалась подобная пакость?..

Спасибо всем, кто откликнется!..
...
Рейтинг: 0 / 0
Крушения A97 на Union-запросах
    #32326409
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Замени функции константами. Если не изменилось - дело не в них.
2. Возможна комбинация данных, приводящая к краху (в функциях).
3. Восстановление базы не помогает?
4. Юнион каков? (All, или не All?) По All с группировкой баг недавно описан Лохом П.
5. На "не полной" стороне объединения нет ли булевых полей? (ошибка в таком случае может вызываться (если не All) аналогом "дистинкт"ирования в юнионе. Правда результат не обяза валить аксес. Типичное сообщение "Текущая запись отсутствует". Но это - при комбинацие внешних объединений и группировки. В UNION работает что-то того же вида, но иначе. Попробуй явно привести такие поля к вычисляемому виду (заведомо не [только] булеву). Например (если Null в них необходим) - IIf(isnull(t.[field], Null,t.[field]) as field (я бы попробывал {1*[t].[field] AS [field]}), а если нет - лучше все преобразовать ф-ей Nz([field]). (проще всего оттестировать отбрасывая из сапросов по полю. А то, что валится при определенных данных может как раз и свидетельствовать о том, что внешние объединения начинают (для них) возвращать NULL-ы. Проще всего диагностировать источник удаляя поля (по одному) из группируемых запросов. Хотя, в случае с крахом "простота" сомнительна.:0)


Правда то, что проблема в JET (MSJET35.DLL) позволяет предположить что пп. 1. (2.) можно отбросить.
...
Рейтинг: 0 / 0
Крушения A97 на Union-запросах
    #32327448
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зрители интересуются.
(успехами/или подробностями)
/отнюдь не из праздного любопытства/
...
Рейтинг: 0 / 0
Крушения A97 на Union-запросах
    #32332064
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем откликнувшимся
сорри за редкое постирование...

а) Проблему вызывает функция

Function CombineString(ParamArray StringArray())
Dim tmp, j

For j = LBound(StringArray) To UBound(StringArray)
If Not IsNull(StringArray(j)) Then tmp = tmp + StringArray(j) + " "
Next

CombineString = tmp
End Function

ошибок не вижу
все работает как должно.
единственное предполжение - возможен крах msjet
когда результат становится длиннее 255 символов???
но как тогда сделать ПОЛЕ ЗАПРОСА с этой функцией МЕМО-полем?!
И почему добавить в табличу с мемо-полем результат выполнения функции джет может, а юнион по нём - не может?
это уж к MS, наверное...

б) лезут странные ошибки при запуске запросов в отдельности:
"Слишком большое число" и кнопочка ОК без Help
Причем результаты запроса все рно выводятся
Убиванием поля ClAction.IDShowType ошибка исчезает
- но поле числовое и Where стоит на него числовое
(в одном случае =1 вдругом =2)
Ну откуда глюк?!..
...
Рейтинг: 0 / 0
Крушения A97 на Union-запросах
    #32332678
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверь в 2000 с полседними апдейтами джета. Там возможна группировка по МЕМО. Если проблема снимется, собака порылась где-то рядом. (можно поэкспериментировать с ALL в UNION, - если я правильно понимаю, то UNION внутре себя без ALL выполняет нечто типа DISTINCT, что равносильно группировке, а по МЕМО в 97 группирвка запрещена. Как и DISTINCT.).

Что передается в функцию? Как функция возвращается в поле? Если результат для всех записей одинаков (или зависит от полей, выводимых в юнион) - подцепи после юниона.


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


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