|
|
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
Уважаемые гуру, работающие с А97! Подскажите, пожалуйста, в чем может быть проблемса: Есть два простых запросика на табличку с выборкой по like а на них навешен Union. В зависимости от выбранного параметра в комбобоксе формы на этом union строится отчет. Причем строится нормально в 98% случаев но на двух (пока двух?) выбранных параметрах вылезает любимое окно "программа выполнила недопустимую..." с пояснением: Программа MSACCESS вызвала сбой при обращении к странице памяти в модуле MSJET35.DLL... Ошибка лезет и на Office SR-2, и на третьем (последнем) сервис паке для Jet, и без всего этого счастья... Пока найдено решение вместо Union cскладывать результаты в табличку но это же абсурд!.. Ни разу не приходилось сталкиваться с таким на А2000... У кого какие мысли, отзовитесь! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2003, 10:28 |
|
||
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
Может быть в чем угодно.... Лучше бы конечно привести запрос и параметры, на которых летит.... А так - что можно сказать?!?!? Бывает..... Я по опыт стараюсь не использовать в запросах ссылки на элементы формы - проще и себе дешевле (по-моему!!) динамически формировтаь и подставлять Sql из VB.... там же можно будет и отладить - что он подставляет в запрос - может фигню какую..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2003, 18:22 |
|
||
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
Запрос: 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!!!) Неужель не встречалась подобная пакость?.. Спасибо всем, кто откликнется!.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2003, 10:07 |
|
||
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
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.) можно отбросить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 15:45 |
|
||
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
Зрители интересуются. (успехами/или подробностями) /отнюдь не из праздного любопытства/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 13:53 |
|
||
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
Спасибо всем откликнувшимся сорри за редкое постирование... а) Проблему вызывает функция 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) Ну откуда глюк?!.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 09:05 |
|
||
|
Крушения A97 на Union-запросах
|
|||
|---|---|---|---|
|
#18+
Проверь в 2000 с полседними апдейтами джета. Там возможна группировка по МЕМО. Если проблема снимется, собака порылась где-то рядом. (можно поэкспериментировать с ALL в UNION, - если я правильно понимаю, то UNION внутре себя без ALL выполняет нечто типа DISTINCT, что равносильно группировке, а по МЕМО в 97 группирвка запрещена. Как и DISTINCT.). Что передается в функцию? Как функция возвращается в поле? Если результат для всех записей одинаков (или зависит от полей, выводимых в юнион) - подцепи после юниона. Не понял, где числовое поле вызывает ошибку? В подзапросах юниона? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 11:14 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1716&tid=1678070]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 387ms |

| 0 / 0 |
