|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
Вероятно, я последний, кто не знал о том, что запросы с использованием внешнего соединения, где одним из полей связи является вычислимое ("литеральное") поле могут (будут) терять строки. Потери строк не происходит, если оба поля связи вычислимые или оба поля "натуральные". также я не догадывался, что сортировка по неиндексированным полям действительного типа в запросе не работает. если в поле MyDecimal присутствуют положительные и отрицательные значения, то ORDER BY BadSort.MyDecimal DESC; отсортирует ни так ни сяк лечить как-то так: SELECT BadSort.MyDecimal FROM BadSort ORDER BY ccur(BadSort.MyDecima)) DESC; или заведением индекса или отказом поля (;; исходная информация и дальнейшие ссылки найдены здесь http://allenbrowne.com/tips.html PS а описанного в дальнейшей ссылке на КБ различия в поведении внешних соединений в Акцесс и СКЛ Сервер я тоже не подозревал. и всегда писал условия в левых соединениях для сервера в "стиле акцесс" :)(: ЗЫ2 может это вовсе и не в баги, а в знаете ли вы, что?... (с выражением лица) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2005, 02:25 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
VictoshaВероятно, я последний, кто не знал о том, что запросы с использованием внешнего соединения, где одним из полей связи является вычислимое ("литеральное") поле могут (будут) терять строки. На всяк случай: /topic/40342 /topic/40504 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2005, 02:55 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
эээ, батенька - я тогда ищо не родился (на форуме). и скрижалей не читаю. от большого ума. :) (с выражением лица) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2005, 03:01 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
Из нашего корпоративного фака: --- 1. MS Access 2000, MDB. При каких-либо ошибках в функциях и процедурах VBA (приблизительно на четвертом уровне вложенности функций друг в друга), в которых используются метод .Requery или .Refresh для какой-либо формы при попытке посмотреть источник ошибки с помощью кнопки "Debug" появляется сообщение "Выражение слишком сложное" (дословно текст не помню, но смысл именно такой). При нажатии на Ок - бесконечное повторение сообщения "Объект не найден" - спасает только Ctrl+Alt+Del --- 2. MS Access 2000, MDB, ADP. Если к функции ufMyProc, находящейся в модуле modModule, обратиться через Код: plaintext
И если в этой функции есть ошибка, ТО указатель при нажатии на "Debug" в отладчике остановится не на ошибке внутри функции, а на строке "modModule.ufMyProc" --- 3. MS Access 2000, MDB, ADP. То же самое для методов и функций пользовательского класса. --- 4. MS Access 2000, MDB При импорте\экспорте объектов (форм, отчетов и классов), содержащих ссылки на специфические библиотеки, на другие формы\отчеты или на ActiveX'ы из одного MDB в другой - как правило приводит к ошибке "Network Error" при попытке обратиться к исходному коду этих объектов. Лечится следующим: - перед переносом создать форму, на которую накидать все необходимые ActiveX. - для этой формы создать модуль (войти один раз в к.-л. событие) - компилировать исходный код, сжать-восстановить проект - провести импорт - подключить все необходимые библиотеки и компилировать исходный код - сжать\восстановить Внимательно соблюдать правило - сжатие и восстановление всегда проводить ПОСЛЕ компиляции кода И только если компиляция прошла без ошибок. --- А еще - при повороте экрана на 90 градусов, т.е. "набок" (используется приложение Pivot Software, идущее в комплекте с такими мониторами от Futjitsu Siemens) - перестают работать программы для просмотра виде-файлов ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2005, 07:09 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
забавный баг наблюл в аксессе 97: фтянул формичку из старого прожекта, + поменял чуть источники. в процедуре перехода по выбору (из списка) начали слетать поля связи Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
всего то пара полей с именем [Name] (были и в прошлой базе), поимела индексы, причем уникальный индекс в мастере. Кто видел такую фичу (слёт линковок мастер/чайлд в момент исполнения)? С чем могабыть связано? (не пора ли полечицца ) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2005, 15:57 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
Нашел сладкую багу :) Строго говоря, бага относится не к самому аксесу, а к VBA и процессу измененения региональных настроек винды. Сначала, как говорится на anekdot.ru, преамбула. В VBA имеется функция Str(...), возвращающая строковое представление числа, переданного в качестве аргумента. Отличительной особенностью этой функции является то, что в возвращенной строке десятичным разделителем является точка, независимо от того, какой десятичный разделитель прописан в региональных настройках системы. теперь амбула. Для изменения десятичного разделителя через обычный виндузовый интерфейс требуется задействовать два окошка - одно (далее "родительское") вызывается из панели управления ("язык и региональные стандарты"), другое (далее "дочернее") вызывается по кнопке "настройка" в родительском окне. Экспериментируя с этой функцией и региональными настройками, обнаружил следующую багофичу. Если поменять региональный разделитель в "дочернем" окне и закрыть дочернее окно не закрывая родительское - то VBA-шная функция Str() возвращает строку с десятичным разделителем, равным не точке, а тому, что было задано в "дочернем" окне. Т.е. в этот момент ("дочернее" окно настроек закрыто, "родительское" еще нет) - функция Str() работает неправильно. После закрытия "родительского" все возвращается на круги своя, функция Str() начинает использовать в качестве десятичного разделителя точку, как и должна. Бага сама по себе не особо критичная, но пугает сам факт того, что функция, которая вообще не должна лезть в региональные настройки - зачем то туда лезет, да еще и умудряется неподтвержденные настройки оттуда выдирать (в родительском окне ведь можно еще и "Отмена" нажать). Проверялось на Windows XP SP2, Access 2002, Excel 2003 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 15:46 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
авторБага сама по себе не особо критичная, но пугает сам факт того, что функция, которая вообще не должна лезть в региональные настройки - зачем то туда лезет, тут неясно, почему она этого не должна. где-то она все-таки должна находить американские настройки. и совершенно не обязательно, что в собственном исходном коде. автор да еще и умудряется неподтвержденные настройки оттуда выдирать (в родительском окне ведь можно еще и "Отмена" нажать). что, вероятно, и доказывает, что не в собственном коде. а багофича интересная.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 16:25 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
ЛПНашел сладкую багу :) Эстетично! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 16:33 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
2 глупыйглупый авторБага сама по себе не особо критичная, но пугает сам факт того, что функция, которая вообще не должна лезть в региональные настройки - зачем то туда лезет, тут неясно, почему она этого не должна. где-то она все-таки должна находить американские настройки. и совершенно не обязательно, что в собственном исходном коде. По описанию - не должна (не обязана). Ей не требуются американские настройки. Не сказано, что Str возвращает строку в американском формате. Сказано что используется точка - и точка. Но на самом деле она туда (в настройки) все-таки лезет. Давно известно, что при некоторых региональных настройках (уже "подтвержденных") её может взглючить. Например, если задать в качестве разделителя какую-нибудь русскую букву - она и выведется внутри результата Str. А если латинскую букву - то точка. Так что с тем что она лезет в региональные настройки я как бы смирился. Но вот то что она неподтвержденные настройки способна утянуть - я не знал. При этом её глючит. Настройки, нормально обрабатывающиеся (т.е. замещающиеся на точку) - перестают нормально обрабатываться (замещаться) 2 Владимир Саныч Эстетично! Это типа гурманство :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 17:00 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
ОЧЕНЬ плохо, что об этом явно не сказано в справке. Видимо, это целая длинная история - почему не сказано. Но вот 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. ... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 17:39 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
Что такое "US-formatted string"? И какое отношение она имеет к системным региональным настройкам? US-formatted - оно живет в региональных настройках? Или оно живет где-то в мозге разработчиков? Если в региональных настройках, то выставление в системе штатовской локали и её модификация (изменение десятичного разделителя) должно оказывать влияние на работу Str, чего однако не наблюдается. Если же понятие "US-formatted" живет в мозге разработчиков - то какого ляда Str лезет в региональные настройки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 17:51 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
по своей глупости я не знаю ответа на этот вопрос. могу только фантазировать, что речь идет о некотрых "образцовых настройках", за которыми оно таки лезет в систему. не знаю. но ты же сам увидел, что лезет. и что на этапе "до завершения тразакции", "оно/они" даже маскируется текущими локальными установками. шо тревожишь - не знаю я словей. :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 18:11 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
2 глупыйглупый могу только фантазировать, что речь идет о некотрых "образцовых настройках", за которыми оно таки лезет в систему. Хорошо, пусть "образцовые настройки" живут не в голове у разработчиков, а зашиты где-то в систему (именно зашиты, они не меняются юзером, иначе они не "образцовые") Ну так и пусть он лезет за "образцовыми" настройками, а не за текущими :) но ты же сам увидел, что лезет. Видел :) и что на этапе "до завершения тразакции", "оно/они" даже маскируется текущими локальными установками. Не совсем так. Кажется мне, что и "до", и "после" - используются текущие настройки, закоммиченные или нет. Только "после завершения транзакции" используются текущие, и при этом все-таки как-то обрабатываются, а "до завершения транзакции" - никакой дополнительной обработки не происходит. есть ощущение, что сначала выполняется преобразование числа в строку с использованием текущих настроек, а потом тупым реплейсом заменяются на точку все известные (жестко прошитые) нечисловые символы. Потому и глючит на неизвестных символах (например русских буквах) в качестве десятичного разделителя. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 18:27 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
хитр'о завернул. :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2005, 18:31 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
не баг, но неожиданная (для меня) фичА: (аксесс 97) подчиненный отчет при отсылке на печать это совсем другой _экземпляр_ подчиненного отчета, чем тот, который подотчет открытого в предосмотре отчета. Хотя сам отчет - это один и тот же экземпляр. (установлено по разнице в статических переменных подотчетов "просмотрового" и "печатаемого" отчетов). В итоге вместо статиков в подотчете пришлось пользовать переменные уровня отчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2005, 12:44 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
есть база (mdb, Acc2002 10.6501.6626 SP3), в ней запрос с внешними объединениями и двумя обращениями к одной таблице с разными алиасами. По идее этот запрос открывается довольно быстро, но проходит пара дней и время, требуемое запросу дя выполнения становится примерно равным бесконечности (ни разу не дождался результатов, хотя оставлял запрос на час, а раньше он отрабатывал за 20-30 сек.). Лечится сжатием базы, после чего запрос убивается и созадётся новый с тем же кодом SQL. Есть другие способы лечения? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 08:27 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
DifF в ней запрос с внешними объединениями и двумя обращениями к одной таблице с разными алиасами.1.посмотреть на запрос можно? 2. где лежит база? (т.к. запросы к таблицам на сети могут работать на порядки медленнее "местных". Например со вложенными запросами типа Exists() или IN(Select ...) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 10:47 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
авторЕсть другие способы лечения? Предлагаю попробовать следующее: Открыть запрос в запрос в интерфейсе пользователя в режиме таблицы. После того как появятся строки - нажать кнопку сохранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 10:58 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
авторпроходит пара дней ... вероятно Вы оставляете брошенными (не закрытыми) объекты DAO. Аккуратно закрывайте QueryDef и/или Recordset, открытые на вашем сохраненном запросе. Это наиболее вероятная причина деградации. с багами, кстати, эта тема вряд ли стояла близко. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 12:09 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
2 4321: 1. имеет ли смысл? Есть другой запрос, почти аналогичный (различается только 1 условие) который работает всегда нормально. как его лучше выложить? картинку конструктора или текст? 2. база лежит в сети. Но не думаю, что это на что то влияет, т.к. в сети она лежит уже не первый год, а запрос ломается через день. Один раз нормально открывается, на другой день может вообще не открыться (ОЧЕНЬ долго). Вложенных запросов нет. 2 глупыйглупый: не проканает, т.к. в режиме таблицы (если запрос протух) он будет открываться часы, а не секунды, как должен. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 12:18 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
не бросайте открытыми динамические запросы и их базовые кверидефы - ничего не будет протухать. если "так надо" - работайте со статическими или форвард-онли рекордсетами. Тогда тоже тухнуть не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 12:27 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
2глупыйглупый: этот запрос открывается либо руками из списка запросов в окнее базы данных либо через DoCmd.OpenQuery (что вроде как одно и то же). Никакие связанные с этим запросом запросы по другому никогда не используются. Могут ли влиять на этот запрос явно не закрытые в коде совершенно левые рекордсэты? а на что это похоже, как не на баг, если 1 запрос тухнет, а остальные работают отлично? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 13:00 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
авторМогут ли влиять на этот запрос явно не закрытые в коде совершенно левые рекордсэты? Да. могут и влияют. Причем самым катастрофическим образом. Проверка сего обстоятельства крайне проста - у Вас должна заметно пухнуть база. Причем именно в вашей ситуации. Которая, после Ваших слов про опенквери, выглядит совсем кисло. Совета три приходят в голову ( в порядки важности) - Если это возможно по смыслу проводимых действий - рискну настоятельно рекомендовать в свойствах запроса поставить тип набора записей - статический набор. - Вероятно, разумно рассмотреть вариант открытия этого запроса не через опенквери, а через форму. - все-таки не оставлять рекордсеты брошенными. автора на что это похоже, как не на баг, если 1 запрос тухнет, а остальные работают отлично? Вот на что это похоже - Ваш запрос сохранен в "компилированном виде". При этом в запросе сохраняется некий базовый адрес, привязывающий запрос к Jet исполнителю выражений. опенквери происходит на фоне какого-то количества открытых (а может уже и забытых) рекордсетов. Не зависимо, есть ли в вашем запросе пользовательские функции (если есть - то все просто немного раньше "плохо" становится), "сохраненный базовый адрес" оказывается недоступным и происходит перекомпиляция запроса. Запрос в результате, перекомпилируется при каждом запуске, вызывая распухание базы. каждый следующий запуск кроме перекомпиляции, приводит к все более долгой загрузке компилированного текста запроса, чей план исполнения оказывается все дальше и дальше. В конце концов большую часть времени запрос занимется не извлечением строк из базы, а попытками загрузить себя в память и скомпилировать. --------------------------------- ящик не ящик, а литр пива я поставил бы на то, что Ваша ситуация мной описана 100% точно. --------------------------------- Ах, если бы Вы были обладалелем кнопки F1..... Лично мне было бы большое счастье. А то я без этого раздражаюсь, быстро теряю равновесие, пухну и падаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 13:58 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
ок. попробую. спасибо за советы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2005, 15:03 |
|
Баги Access (топик не закрыт, можно добавлять)
|
|||
---|---|---|---|
#18+
Ынтырэсный Фыча : код Код: plaintext 1. 2. 3. 4.
Если идти по закоментированному пути, то внутрь If err <> 0 не попадаем. и в отладчике err =0, хотя если сказать прямо в отладчике: x = MyDb.TableDefs(tblName).Name то окно ошибки таки всплывает. Пришлось добавлять прослойку Set mDb = MyDb. Токо тады попадам внутырь ашипыка. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2005, 12:28 |
|
|
start [/forum/topic.php?fid=45&msg=33342310&tid=1610055]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 564ms |
0 / 0 |