powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баги Access (топик не закрыт, можно добавлять)
25 сообщений из 370, страница 5 из 15
Баги Access (топик не закрыт, можно добавлять)
    #33284891
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, я последний, кто не знал о том, что запросы с использованием внешнего соединения, где одним из полей связи является вычислимое ("литеральное") поле могут (будут) терять строки.

Потери строк не происходит, если оба поля связи вычислимые или оба поля "натуральные".

также я не догадывался, что сортировка по неиндексированным полям действительного типа в запросе не работает.
если в поле MyDecimal присутствуют положительные и отрицательные значения, то
ORDER BY BadSort.MyDecimal DESC;
отсортирует ни так ни сяк


лечить как-то так:
SELECT BadSort.MyDecimal
FROM BadSort
ORDER BY ccur(BadSort.MyDecima)) DESC;

или заведением индекса
или отказом поля (;;

исходная информация и дальнейшие ссылки найдены здесь
http://allenbrowne.com/tips.html

PS
а описанного в дальнейшей ссылке на КБ различия в поведении внешних соединений в Акцесс и СКЛ Сервер я тоже не подозревал. и всегда писал условия в левых соединениях для сервера в "стиле акцесс"
:)(:

ЗЫ2
может это вовсе и не в баги, а в знаете ли вы, что?...

(с выражением лица)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33284898
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VictoshaВероятно, я последний, кто не знал о том, что запросы с использованием внешнего соединения, где одним из полей связи является вычислимое ("литеральное") поле могут (будут) терять строки.
На всяк случай:
/topic/40342
/topic/40504
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33284899
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эээ, батенька - я тогда ищо не родился (на форуме). и скрижалей не читаю.
от большого ума.
:)
(с выражением лица)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33284956
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из нашего корпоративного фака:
---
1.
MS Access 2000, MDB.
При каких-либо ошибках в функциях и процедурах VBA (приблизительно на четвертом уровне вложенности функций друг в друга), в которых используются метод .Requery или .Refresh для какой-либо формы при попытке посмотреть источник ошибки с помощью кнопки "Debug" появляется сообщение "Выражение слишком сложное" (дословно текст не помню, но смысл именно такой). При нажатии на Ок - бесконечное повторение сообщения "Объект не найден" - спасает только Ctrl+Alt+Del
---
2.
MS Access 2000, MDB, ADP.
Если к функции ufMyProc, находящейся в модуле modModule, обратиться через
Код: plaintext
modModule.ufMyProc

И
если в этой функции есть ошибка,
ТО указатель при нажатии на "Debug" в отладчике остановится не на ошибке внутри функции, а на строке "modModule.ufMyProc"
---
3.
MS Access 2000, MDB, ADP.
То же самое для методов и функций пользовательского класса.
---
4.
MS Access 2000, MDB
При импорте\экспорте объектов (форм, отчетов и классов), содержащих ссылки на специфические библиотеки, на другие формы\отчеты или на ActiveX'ы из одного MDB в другой - как правило приводит к ошибке "Network Error" при попытке обратиться к исходному коду этих объектов. Лечится следующим:
- перед переносом создать форму, на которую накидать все необходимые ActiveX.
- для этой формы создать модуль (войти один раз в к.-л. событие)
- компилировать исходный код, сжать-восстановить проект
- провести импорт
- подключить все необходимые библиотеки и компилировать исходный код
- сжать\восстановить
Внимательно соблюдать правило - сжатие и восстановление всегда проводить ПОСЛЕ компиляции кода И только если компиляция прошла без ошибок.
---

А еще - при повороте экрана на 90 градусов, т.е. "набок" (используется приложение Pivot Software, идущее в комплекте с такими мониторами от Futjitsu Siemens) - перестают работать программы для просмотра виде-файлов
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33315434
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забавный баг наблюл в аксессе 97:

фтянул формичку из старого прожекта, + поменял чуть источники. в процедуре перехода по выбору (из списка) начали слетать поля связи

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
On Error Resume Next
    Me.FilterOn = False
    Me.OrbaseTable.Form.FilterOn = False
    
    Me.OrbaseTable.Form.RecordSource = Me.OrbaseTable.Form.RecordSource
    Me.RecordsetClone.FindFirst "[CODE] =" & Trim(Me![nDK].Column( 4 ) & "")
    Me.Bookmark = Me.RecordsetClone.Bookmark
'    Stop
    Me.OrbaseTable.Form.RecordSource = Me.OrbaseTable.Form.RecordSource
    '!!!!БУБЕН ДЛЯ БАГА
    Me.OrbaseTable.LinkChildFields = "C_HEAD" 'какого хрена слетают на Name ???
    Me.OrbaseTable.LinkMasterFields = "CODE" 'какого хрена слетают на Name ???

    Me.OrbaseTable.Form.RecordsetClone.FindFirst "[CODE] = " & Me![nDK].Column( 2 )
    Me.OrbaseTable.Form.Bookmark = Me.OrbaseTable.Form.RecordsetClone.Bookmark
Из кода видно, что ухожу от смены связи в момент исполнения поиска. Смена ничем не спровоцирована. Уттиффиттельное ряттом, но оно запрестчено.
всего то пара полей с именем [Name] (были и в прошлой базе), поимела индексы, причем уникальный индекс в мастере. Кто видел такую фичу (слёт линковок мастер/чайлд в момент исполнения)? С чем могабыть связано? (не пора ли полечицца )
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328467
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел сладкую багу :)
Строго говоря, бага относится не к самому аксесу, а к VBA и процессу измененения региональных настроек винды.

Сначала, как говорится на anekdot.ru, преамбула.
В VBA имеется функция Str(...), возвращающая строковое представление числа, переданного в качестве аргумента. Отличительной особенностью этой функции является то, что в возвращенной строке десятичным разделителем является точка, независимо от того, какой десятичный разделитель прописан в региональных настройках системы.

теперь амбула.
Для изменения десятичного разделителя через обычный виндузовый интерфейс требуется задействовать два окошка - одно (далее "родительское") вызывается из панели управления ("язык и региональные стандарты"), другое (далее "дочернее") вызывается по кнопке "настройка" в родительском окне.
Экспериментируя с этой функцией и региональными настройками, обнаружил следующую багофичу. Если поменять региональный разделитель в "дочернем" окне и закрыть дочернее окно не закрывая родительское - то VBA-шная функция Str() возвращает строку с десятичным разделителем, равным не точке, а тому, что было задано в "дочернем" окне. Т.е. в этот момент ("дочернее" окно настроек закрыто, "родительское" еще нет) - функция Str() работает неправильно. После закрытия "родительского" все возвращается на круги своя, функция Str() начинает использовать в качестве десятичного разделителя точку, как и должна.

Бага сама по себе не особо критичная, но пугает сам факт того, что функция, которая вообще не должна лезть в региональные настройки - зачем то туда лезет, да еще и умудряется неподтвержденные настройки оттуда выдирать (в родительском окне ведь можно еще и "Отмена" нажать).

Проверялось на Windows XP SP2, Access 2002, Excel 2003
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328582
авторБага сама по себе не особо критичная, но пугает сам факт того, что функция, которая вообще не должна лезть в региональные настройки - зачем то туда лезет,

тут неясно, почему она этого не должна.
где-то она все-таки должна находить американские настройки.
и совершенно не обязательно, что в собственном исходном коде.

автор
да еще и умудряется неподтвержденные настройки оттуда выдирать (в родительском окне ведь можно еще и "Отмена" нажать).
что, вероятно, и доказывает, что не в собственном коде.
а багофича интересная....
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328606
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ЛПНашел сладкую багу :)
Эстетично!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328697
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 глупыйглупый
авторБага сама по себе не особо критичная, но пугает сам факт того, что функция, которая вообще не должна лезть в региональные настройки - зачем то туда лезет,

тут неясно, почему она этого не должна.
где-то она все-таки должна находить американские настройки.
и совершенно не обязательно, что в собственном исходном коде.
По описанию - не должна (не обязана). Ей не требуются американские настройки. Не сказано, что Str возвращает строку в американском формате. Сказано что используется точка - и точка.

Но на самом деле она туда (в настройки) все-таки лезет. Давно известно, что при некоторых региональных настройках (уже "подтвержденных") её может взглючить. Например, если задать в качестве разделителя какую-нибудь русскую букву - она и выведется внутри результата Str. А если латинскую букву - то точка.

Так что с тем что она лезет в региональные настройки я как бы смирился. Но вот то что она неподтвержденные настройки способна утянуть - я не знал. При этом её глючит. Настройки, нормально обрабатывающиеся (т.е. замещающиеся на точку) - перестают нормально обрабатываться (замещаться)

2 Владимир Саныч
Эстетично!
Это типа гурманство :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328833
ОЧЕНЬ плохо, что об этом явно не сказано в справке. Видимо, это целая длинная история - почему не сказано.

Но вот John Green, Stephen Bullen, Rob Bovey and Robert Rosenberg ни от кого ничего не скрывают и всю правду-матку напрямую режут

http://www.oaltd.co.uk/ExcelProgRef/Ch22/ProgRefCh22.htm

цитата
авторStr()
Converts a number, date or Boolean to a US-formatted string, regardless of the WRS, Windows language or Office language version. When converting a positive number, it adds a space on the left. When converting a decimal fraction, it does not add a leading zero. ...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328866
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое "US-formatted string"? И какое отношение она имеет к системным региональным настройкам?

US-formatted - оно живет в региональных настройках? Или оно живет где-то в мозге разработчиков?

Если в региональных настройках, то выставление в системе штатовской локали и её модификация (изменение десятичного разделителя) должно оказывать влияние на работу Str, чего однако не наблюдается.
Если же понятие "US-formatted" живет в мозге разработчиков - то какого ляда Str лезет в региональные настройки?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328925
по своей глупости я не знаю ответа на этот вопрос.
могу только фантазировать, что речь идет о некотрых "образцовых настройках",
за которыми оно таки лезет в систему.
не знаю.
но ты же сам увидел, что лезет.
и что на этапе "до завершения тразакции", "оно/они" даже маскируется текущими локальными установками.

шо тревожишь - не знаю я словей.
:))
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328964
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 глупыйглупый
могу только фантазировать, что речь идет о некотрых "образцовых настройках",
за которыми оно таки лезет в систему.
Хорошо, пусть "образцовые настройки" живут не в голове у разработчиков, а зашиты где-то в систему (именно зашиты, они не меняются юзером, иначе они не "образцовые")
Ну так и пусть он лезет за "образцовыми" настройками, а не за текущими :)

но ты же сам увидел, что лезет.
Видел :)

и что на этапе "до завершения тразакции", "оно/они" даже маскируется текущими локальными установками.
Не совсем так. Кажется мне, что и "до", и "после" - используются текущие настройки, закоммиченные или нет.
Только "после завершения транзакции" используются текущие, и при этом все-таки как-то обрабатываются, а "до завершения транзакции" - никакой дополнительной обработки не происходит.
есть ощущение, что сначала выполняется преобразование числа в строку с использованием текущих настроек, а потом тупым реплейсом заменяются на точку все известные (жестко прошитые) нечисловые символы. Потому и глючит на неизвестных символах (например русских буквах) в качестве десятичного разделителя.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33328976
хитр'о завернул.
:))
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33340092
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не баг, но неожиданная (для меня) фичА:
(аксесс 97)
подчиненный отчет при отсылке на печать это совсем другой _экземпляр_ подчиненного отчета, чем тот, который подотчет открытого в предосмотре отчета. Хотя сам отчет - это один и тот же экземпляр. (установлено по разнице в статических переменных подотчетов "просмотрового" и "печатаемого" отчетов). В итоге вместо статиков в подотчете пришлось пользовать переменные уровня отчета.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33341537
DifF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть база (mdb, Acc2002 10.6501.6626 SP3), в ней запрос с внешними объединениями и двумя обращениями к одной таблице с разными алиасами. По идее этот запрос открывается довольно быстро, но проходит пара дней и время, требуемое запросу дя выполнения становится примерно равным бесконечности (ни разу не дождался результатов, хотя оставлял запрос на час, а раньше он отрабатывал за 20-30 сек.).
Лечится сжатием базы, после чего запрос убивается и созадётся новый с тем же кодом SQL.
Есть другие способы лечения?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33341875
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DifF в ней запрос с внешними объединениями и двумя обращениями к одной таблице с разными алиасами.1.посмотреть на запрос можно?
2. где лежит база? (т.к. запросы к таблицам на сети могут работать на порядки медленнее "местных". Например со вложенными запросами типа Exists() или IN(Select ...)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33341917
авторЕсть другие способы лечения?
Предлагаю попробовать следующее:
Открыть запрос в запрос в интерфейсе пользователя в режиме таблицы.
После того как появятся строки - нажать кнопку сохранить.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33342130
авторпроходит пара дней ...
вероятно Вы оставляете брошенными (не закрытыми) объекты DAO.
Аккуратно закрывайте QueryDef и/или Recordset, открытые на вашем сохраненном запросе.
Это наиболее вероятная причина деградации.
с багами, кстати, эта тема вряд ли стояла близко.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33342152
DifF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 4321:
1. имеет ли смысл? Есть другой запрос, почти аналогичный (различается только 1 условие) который работает всегда нормально.
как его лучше выложить? картинку конструктора или текст?
2. база лежит в сети. Но не думаю, что это на что то влияет, т.к. в сети она лежит уже не первый год, а запрос ломается через день. Один раз нормально открывается, на другой день может вообще не открыться (ОЧЕНЬ долго). Вложенных запросов нет.

2 глупыйглупый:
не проканает, т.к. в режиме таблицы (если запрос протух) он будет открываться часы, а не секунды, как должен.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33342186
не бросайте открытыми динамические запросы и их базовые кверидефы - ничего не будет протухать.
если "так надо" - работайте со статическими или форвард-онли рекордсетами.
Тогда тоже тухнуть не должно.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33342310
DifF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2глупыйглупый:

этот запрос открывается либо руками из списка запросов в окнее базы данных либо через DoCmd.OpenQuery (что вроде как одно и то же).
Никакие связанные с этим запросом запросы по другому никогда не используются.
Могут ли влиять на этот запрос явно не закрытые в коде совершенно левые рекордсэты?

а на что это похоже, как не на баг, если 1 запрос тухнет, а остальные работают отлично?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33342553
авторМогут ли влиять на этот запрос явно не закрытые в коде совершенно левые рекордсэты?


Да. могут и влияют.
Причем самым катастрофическим образом.
Проверка сего обстоятельства крайне проста - у Вас должна заметно пухнуть база.

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

автора на что это похоже, как не на баг, если 1 запрос тухнет, а остальные работают отлично?

Вот на что это похоже - Ваш запрос сохранен в "компилированном виде".
При этом в запросе сохраняется некий базовый адрес, привязывающий запрос к Jet исполнителю выражений.
опенквери происходит на фоне какого-то количества открытых (а может уже и забытых) рекордсетов. Не зависимо, есть ли в вашем запросе пользовательские функции (если есть - то все просто немного раньше "плохо" становится), "сохраненный базовый адрес" оказывается недоступным и происходит перекомпиляция запроса. Запрос в результате, перекомпилируется при каждом запуске, вызывая распухание базы. каждый следующий запуск кроме перекомпиляции, приводит к все более долгой загрузке компилированного текста запроса, чей план исполнения оказывается все дальше и дальше. В конце концов большую часть времени запрос занимется не извлечением строк из базы, а попытками загрузить себя в память и скомпилировать.
---------------------------------
ящик не ящик, а литр пива я поставил бы на то, что Ваша ситуация мной описана 100% точно.
---------------------------------
Ах, если бы Вы были обладалелем кнопки F1.....
Лично мне было бы большое счастье.
А то я без этого раздражаюсь, быстро теряю равновесие, пухну и падаю.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33342807
DifF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок. попробую. спасибо за советы.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33383748
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ынтырэсный Фыча :
код
Код: plaintext
1.
2.
3.
4.
    Set mDb = MyDb
    mDb.TableDefs.Refresh
    'x = MyDb.TableDefs(tblName).Name 'не возникает ошибки
    x = mDb.TableDefs(tblName).Name 'возникает ошибки
    If err <>  0  Then
MyDb - пропертя стандартного модуля.
Если идти по закоментированному пути, то внутрь If err <> 0 не попадаем. и в отладчике err =0, хотя если сказать прямо в отладчике:
x = MyDb.TableDefs(tblName).Name
то окно ошибки таки всплывает.
Пришлось добавлять прослойку Set mDb = MyDb. Токо тады попадам внутырь ашипыка.
...
Рейтинг: 0 / 0
25 сообщений из 370, страница 5 из 15
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баги Access (топик не закрыт, можно добавлять)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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