powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баги Access (топик не закрыт, можно добавлять)
370 сообщений из 370, показаны все 15 страниц
Баги Access (топик не закрыт, можно добавлять)
    #32474173
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю сюда собирать известные "дырки" акцессе(-ах), а-ля
if me.mysubform.mycheckbox then
(кстати, кто ее щупал, поделитесь :)
Наверняка, эта информация могла бы многим пригодится...

Просьбы к пишущим:
1. Указывать версию(и) Access, где замечена ошибка, используемые библиотеки (ADO/DAO и т.п.) и версии иных программ, если надо.
2. Указывать гарантированный (ну или почти) способ ее получения.
3. По возможности указывать способы борьбы или обхода.

И от себя первый, который пришел на ум (последний, с которым встречался).
--------------------------------------------------------------------
Access 2002 SP3, SQL Server 2000 DE SP3, ADP

Ошибка:
Создаем на сервере таблицу с полем типа bit.
Создаем в проекте форму (Форма1) с флажком. Источник данных формы - созданная таблица, флажка - созданное в ней поле.
Выполняем команду
Forms("Форма1").recordset.resync
или
Forms("Форма1").recordset.resync adAffectCurrent, adResyncAllValues
Щелкаем по флажку.
Получаем "приложение выполнило недопустимую операцию, будет закрыто" и т.д.
С полями иного типа акцесс может выпасть после нескольких resync'ов в процессе редактирования записи.

Лечение:
Вместо
Forms("Форма1").recordset.resync
надо писать
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
dim t as long
dim c as access.control
c = forms("Форма1").ActiveControl 
t = nz(Forms("Форма1")("id"),0)
on error resume next
docmd.echo false
Forms("Форма1").requery
' если поле id невидимо или выключено сделать его видимым и включенным'
Forms("Форма1")("id").setFocus
docmd.gotorecord ,,acLast
DoCmd.FindRecord t, acEntire, , acSearchAll, , acCurrent
c.setfocus
' если поле id было невидимо или выключено вернуть его состояние'
docmd.echo true
on error goto 0


Этот способ работает тем дольше, чем больше записей в форме.

Ошибка неактуальна, если в форме не разрешено изменение/добавление записей.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32476296
Просто Лось
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinXP (sp1), A97 (SP2) (может по-этому?. Больше Админ не качает :() :

Столкнулся с таким багом, как лечить не знаю:
при попытке вызвать из Form2 метод .Undo контрола подчиненной формы Form1, например, из [Form2] вызвать

forms!Form1!sumFORM.form!field1.undo

получаю срезанный напрочь без предупреждения Access без права переписки с кем-либо кроме Билли на 10 лет:)) (пришлось обходиться без этого)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32476489
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я создал базу на SQL Server, все ключи сделал bigint, пытаюсь связать с клиентом в Access, и получаю таблицу где вместо записей стоит #Удалено.
Ключевое поле показывало, что оно char(255)

Тогда я все ключи сделал как numeric и все у меня нормально заработало.

Access 2000 - 2002 пробовал на обоих версиях.

SQL Server 2000
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32476753
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS Access 2002 SP1 - при попытке последовательного открытия нескольких отчетов на печать - акес вылетает - исправленно в SP2.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32478251
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Только что обнаружилось.\r
\r
/topic/86296\r
\r
Если в запросе идет поле из таблицы (пусть даже с алиасом, но главное без формулы), а потом * (в смысле "все поля"), то это поле среди "всех полей" не показывается.\r
\r
Если такой запрос включается в Union, то в лучшем случае вылезает ошибка про несоответствие количества полей, а в худшем показывается на одно поле меньше, но не те поля под не теми.\r
\r
Пример: если в таблице T есть поля A, B, то:\r
select A as Z, * from T -> выдает Z, B\r
select B as Z, * from T -> выдает Z, A\r
select 1 as Z, * from T -> выдает Z, A, B\r
union 1-го со 2-м -> выдает 2 поля, причем нигде нет ни A под A, ни B под B\r
union 1-го с 3-м -> выдает ошибку
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32478678
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вс

все работает правильно. это не баг. это логика.
* означает, что выбраны все поля. а так как поле уже выбрано, то и дважды его показывать ни к чему.
для того, чтобы его показать, надо поставить
принудительно
select T.*, Поле1
вот тогда оно покажет

вот тебе справка:
SELECT [предикат] { * | таблица.* | [таблица.]поле_1
[AS псевдоним_1] [, [таблица.]поле_2 [AS псевдоним_2] [, ...]]}
FROM выражение [, ...] [IN внешняяБазаДанных]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

предикат - Один из следующих предикатов отбора: ALL, DISTINCT, DISTINCTROW или TOP. Предикаты используются для ограничения числа возвращаемых записей. Если они отсутствуют, по умолчанию используется предикат ALL.
* Указывает, что выбраны все поля заданной таблицы или таблиц.
таблица Имя таблицы, из которой должны быть отобраны записи.
поле_1, поле_2 - Имена полей, из которых должны быть отобраны данные. Если включить несколько полей, они будут извлекаться в указанном порядке.
псевдоним_1, псевдоним_2 Имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице.
выражение - Имена одной или нескольких таблиц, которые содержат отбираемые данные.
внешняяБазаДанных - Имя базы данных, которая содержит таблицы, указанные с помощью аргумента выражение, если они не находятся в текущей базе данных.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32478990
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ну и чем твое
select T.*, Поле1
отличается от моего
select Поле1, T.*
?

Причем ведь я даже даю алиас.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32479058
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты написал
select A as Z, * from T

а я по-другому
select A as Z, T.* from T
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32479079
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да, действительно. Итого: алиас не помогает получить поле два раза, а помогает указание имени таблицы при *. Закономерность совершенно понятна, но логики я в ней не наблюдаю.

Я был уверен, что если в селекте всего одна таблица, то можно вместо T.* писать просто *. Вот перед нами случай, когда это неверно. Есть ли еще такие случаи?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32479129
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, стоит ли сюда повторно писать о найденных мною багофичах? Имею в виду глюк с Left/Right Join'ами по вычисляемому полю и и безобразие с агрегатами внутри подзапросов Union All.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32479133
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Сделай одним постом подборку ссылок на другие топики. И при каждой ссылке минимальный комментарий.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32479178
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вс

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

как ее ты спрашиваешь, так она
и отвечает.
сформулируй четко для нее запрос, она тебе четко
и ответит. при нечетком формулровании, она
начинает думать так, как считает нужным.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32479248
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 ищ:

* - значит все поля из всех таблиц
T.* - значит все поля из данной таблицы

Если одно из полей упомянуто в том же селекте еще раз, то ниоткуда не следует, что эти два синтаксиса должны вести себя по-разному. Конечно, узнав про это явление, можно задним числом сформулировать, в чем состоит разница.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32498782
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сообщения об ошибках в *.ADP:

Если на уровне таблицы задать текст сообщения об ошибке при нарушении ограничения или ключа, он будет выводиться только для пользоватетеля dbo. Под любым другим пользователем сообщение не выводится, вместо него выводится стандартное сообщение об ошибке SQL Server 2000.
Исправить эту ситуацию программно невозможно, если не лезть в Recordset формы (сообщение об ошибке недоступно), а лезть туда не стоит, как уже говорилось многими выше.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32511259
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32511261
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А на той странице как раз ссылка на наше обсуждение, которое именно той страницей и было спровоцировано.

/topic/33519
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32598967
Adams
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Green2Я создал базу на SQL Server, все ключи сделал bigint, пытаюсь связать с клиентом в Access, и получаю таблицу где вместо записей стоит #Удалено.
Ключевое поле показывало, что оно char(255)

Тогда я все ключи сделал как numeric и все у меня нормально заработало.

Access 2000 - 2002 пробовал на обоих версиях.

SQL Server 2000

У меня Numeric не помогло - поставил int - все сразу стало нормально.
Access 2000 + Sql2000
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32598995
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADP 2000 -2003
баг с использованием суммового поля в примечании формы при использовании
фильтра.
=sum(поле)


ведет себя по разному
в 2000 без сервис паков срезу пишет ошибку
в 2002 после использования фильтра формы
в 2003 после нескольких попыток реквери / фильтрации
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32599060
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По багу автора
Создаем на сервере таблицу с полем типа bit.

В А97 (в других - не знаю) помогает назначение default на это поле. По-видимому, Акс не может превратить автоматом Null to boolean

Код: plaintext
Geo добавил в сообщение:
В 2002 (а речь шла именно о нем, о проекте adp) это не спасает, как не спасает и использование типа smallint вместо bit.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32690469
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка компиляции:
http://www.sql.ru/forum/actualthread.aspx?tid=121644
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32690478
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мои 2 копейки:
странное поведение при закрытии Access:
при закрытии основного окна Access вызывается Form_Load
/topic/115316
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32721352
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли в одном ЛистБоксе переменная = 0,25л Молоко, то после добавления в другой ЛистБокс и удаленеия сей переменной из первого ЛистБокса, получается следующие: в первом ЛистБоксе переменная становится равной 25л Молоко и добаляется к предыдущему значению.
http://www.sql.ru/forum/actualthread.aspx?tid=127141
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32806641
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS SQL 2000 SP3
Access ADP

Взято отсюда.

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

Создайте форму из одной кнопки; в обработчик нажатия кнопки поместите этот код:

Код: plaintext
Private Sub Кнопка0_Click()\n  Dim t As Long\n  \n  \' Создаю обычную таблицу\n  With CurrentProject.Connection\n    .Execute "create table tempTable (kf int not null identity (1, 1), tempField int)"\n    .Execute "alter table tempTable add constraint pt_t primary key clustered (kf)"\n    .Execute "insert into tempTable (tempField) select 1234"\n    For t =  1  To  17  \' Это 131 тыс. записей, м.б. будет достаточно и меньшего числа\n      .Execute "insert into tempTable (tempField) select tempField from temptable"\n    Next\n  \n  CurrentProject.Connection.Execute "select 123 as a into #ttt"\n  \n    MsgBox "Временная таблица #ttt создана." & vbNewLine & _\n           "Пример извлеченного значения: " & _\n               .Execute("select a from #ttt")( 0 ) & _\n               "." & vbNewLine & vbNewLine & _\n           "В форме будет больше 100 тыс. записей. " & _\n               "Заполняю источник данных и пробую извлечь значение еще раз...", vbInformation\n\n    Me.RecordSource = "select * from tempTable"\n  \n    t = .Execute("select a from #ttt")( 0 )\n    MsgBox "Прочтено значение:" & t, vbInformation\n  End With\nEnd Sub

На выделенной строке получаем ошибку "Invalid object name #ttt".

Если войти в отладку, подождать несколько секунд, пока форма получит записи, и продолжить выполнение программы, то программа отработает дальше.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32807067
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
В Access не имеет смысла пользоваться не-глобальными временными
таблицами, иначе, как в хранимых процедурах (которые удалят таблицы после
работы).
Это не баг, но я нигде не видел отдельного упоминания об этом эффекте,
поэтому, думаю, будет невредно выложить отдельно.

Я бы это все-таки другими словами сказал.
Нельзя полагаться на неизменность/уникальность объекта соединения, возвращаемого методом. CurrentProject.Connection. Гарантируется только, что метод доступен, и возвращает объект соединения.
Однако последовательное обращение к методу может приводить к возврату различных объектов. Например, в случае, когда все текущие открытые соединения заняты/блокированы обработкой команды и выборкой результата, акцесс просто откроет в момент обращения еще одно соединение и вернет его в ответ на обращение. Это необходимо иметь ввиду по крайней мере при последовательном исполнении набора команд типа CurrentProject.Connection.Execute



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

#ttt- временная таблица доступная данному пользователю
##ttt времннная таблица доступная для всех пользователе

интересно, а второй вариант для случая Geo прокатит?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32807178
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только багом данное поведения я бы не называл. Данное явление имеет достаточно логичное объяснение.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32807877
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Victosha
Да, спасибо, так лучше.

2 вадя
Во втором случае таблица ##ttt будет видна всем connection'ам, т.е. ошибки не будет. Но оно неудобно в случае, если надо завести временную таблицу для конкретного пользователя, кроме него никому не видную. Равно как нельзя, используя currentproject.connection, полагаться на @@SPID.

2Alexey Sh
А я и не назвал :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32807934
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeoВ Access не имеет смысла пользоваться не-глобальными временными таблицами, иначе, как в хранимых процедурах
ну зачем же так сурово-то?
достаточно не использовать CurrentProject.Connection
сделай свой ADODB.Connection, открой на том же ConnectionString, и работай себе с не-глобальными временными таблицами.

или я чего-то не понял
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32807949
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктоша уже поправил. :)

А сурово - это от досады. Дело в том, что я пользовался именно так, а вчера случайно наткнулся на слова Aleks2. :(
Иногда полезно где-нибудь создать временную таблицу, и пусть она себе болтается. Держать для этого в переменной открытый коннекшен не очень удобно, мягко говоря.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32807958
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держать для этого в переменной открытый коннекшен не очень удобно, мягко говоря.
Вот и аксесу неудобно :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910628
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
глюк currentdb в сочетании с property
http://www.sql.ru/forum/actualthread.aspx?tid=158549
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910713
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправочка - это глюк CurrentDb в сочетании с TableDefs, а не с Property.
Аксес теряет неявную ссылку, и все что ниже TableDefs (в т.ч. TableDef, Fields, Field, Properties, Property) - начинает материться не па руззке.
Приходится принудительно сохранять (про запас) явную ссылку на CurrentDb или TableDefs

В сочетании с QueryDefs, Recordsets и т.п. сей глюк не проявляется.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910795
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот столкнулся при переводе MDB->ADP Acc2003 (как на других не знаю)
Если в названии объекта БД есть скобки (например [Oil - Point3 (Final-B)])
ADP его не видит.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910852
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идентификаторы должны состоять из латинских букв и цифр и начинаться с буквы. Багом является возможность создать в системе идентификаторы с пробелами, национальными символами, скобками , процентами и прочей лабудой. :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910865
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey ShИдентификаторы должны состоять из латинских букв и цифр и начинаться с буквы.
Ссылку на стандарт SQL?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910883
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандарт не догма :) нужен геморрой - называйте как РАЗРЕШАЕТ стандарт.
А я поднможеством обойдусь
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910898
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если MS SQL допускает использование спецсимволов в именах своих объектов - то он их допускает. Третьего не дано.
Если аксесовский adp-проект не видит каких-либо объектов MS SQL - то это баг аксеса.

Рассуждения о догмах, высоких штилях программирования и конвенциях наименования объектов - либо отдельным топиком, либо на лестнице.
А здесь баги аксеса живут
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32910905
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПРассуждения о догмах, высоких штилях программирования и конвенциях наименования объектов - либо отдельным топиком, либо на лестнице.
А здесь баги аксеса живут
Согласен, отползаю :))
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924256
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока не пьяный, еще один неоправданный глючок с полем со списком выложу.

A97 SP2, Win98 & Win XP

Создаем форму, в ней поле со списком, источник данных, скажем строка:
Код: plaintext
 1 ;"а..."; 2 ;"аа"
, можно таблицу, в которой одна из записей кончается на троеточие (с одной или двумя точками не пробовал). Говорим, что в источнике даных два столбца. "Связанный" столбец - первый. Он же невидимый. Классическая ситуация со справочниками. "Ограничиться списком" = да.

Выбираем строку, оканчивающуюся на многоточие, получаем "значения нет в списке" или как бишь ее.

Если первый столбец видимый, ошибки нет. Если А2002, 2003 (на 2000 тоже не пробовал), ошибки нет.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924381
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GeoЕсли А2002, 2003 (на 2000 тоже не пробовал), ошибки нет.
Попробовал 2000. Ошибки нет (если я правильно воспроизвожу).
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924427
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка. На ВинХП с таблицей ошибки нет. С источником данных "список значений" ошибка только, если последними стоят 3 и более точек.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924774
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geoпоправка. На ВинХП с таблицей ошибки нет. С источником данных "список значений" ошибка только, если последними стоят 3 и более точек.
проверил на Win2K + A97. Особенность (баг?) присутствует

получается следующее.
Если строка источника - источник1;a...;2;sddsa;3;dfsdf -
содержит (4х-символьную) комбинацию, завершающуюся на три точки, то

в NewData при выборе попадает (двухсимвольная) комбинация,
в конце которой стоит символ с тремя точками. Это 133=ASC и/или
8230=ASCW
Соответствующий колумн всегда содержит 4х символьную комбинацию -
по символу на точку.

Если источник создать программно так

Код: plaintext
Me.ПолеСоСписком0.RowSource = "1;a" & Chr( 133 ) & ";2;b222;3;c333"
то NotInList не возникает

в случае "а...б" NotInList не возникает и ... занимает по символу на точку.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924871
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Victosha(двухсимвольная) комбинация,
в конце которой стоит символ с тремя точками. Это 133=ASC и/или
8230=ASCW
А если отключить автозамену?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924880
Odess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера столкнулся с очень гнусным багом.
Access XP + ADP проект.
Законектился под юзером у которого ограничены права, проверял работу. Забыл об этом и создал 2 User Defined Functionю Достаточно "геморойные" - с CASE и т.п. Потом перелогинился под DBO - и продолжил работать с отчетом использующим эти функции. Смотрю вываливается месседж типа нет такой процедуры или функции!
Лезу в закладку запросы и вижу - к имени функции добавилось имя юзера под которым я их создавал "Оборотка 1 Sale" - уже не помню были скобки или нет(в Sale). Я долго не думая щелкаю 2 раза на имени запроса и удаляю "Sale". Краем глаза увидел что функция вроде исчезла из списка. Не придав значение этому переименовываю вторую. Открываю отчет - снова нет такой функции!
Начинаю искать - таки нет. Открываю Enterprise Manager - даже близко ничего похожего! Искал во всех базах - тмп и т.п. - как испарились!
Log Explorerom просмотрел логи и им сопутствующие записи - никаких следов
С матом и присвистыванием часа 2 восстанавливал функции.
Так тчо осторожнее с такими вещами...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924907
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Victosha(двухсимвольная) комбинация,
в конце которой стоит символ с тремя точками. Это 133=ASC и/или
8230=ASCW
А если отключить автозамену?

да Вы Шаман, батенька.
Так бить в бубен нельзя научиться. Это или есть или нет.

Явно прописана автозамена трех точек на трехточечный символ.
Как научиться догадываться отключать (такую) автозамену?
И, почему, кстати, она не срабатывает, когда эти три точки "внутри" слова?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924911
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Victosha Владимир СанычА если отключить автозамену?
да Вы Шаман, батенька.
Так бить в бубен нельзя научиться. Это или есть или нет.
А кто же, по-Вашему, батенька, заменяет три точки на этот символ, если не автозамена?

VictoshaИ, почему, кстати, она не срабатывает, когда эти три точки "внутри" слова?
Наверно, этот символ предназначен только для многоточий как знака препинания в конце фразы...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32924918
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Victosha Владимир СанычА если отключить автозамену?
да Вы Шаман, батенька.
Так бить в бубен нельзя научиться. Это или есть или нет.
А кто же, по-Вашему, батенька, заменяет три точки на этот символ, если не автозамена?


об Этом и знает Шаман.

Владимир Саныч
VictoshaИ, почему, кстати, она не срабатывает, когда эти три точки "внутри" слова?
Наверно, этот символ предназначен только для многоточий как знака препинания в конце фразы...
ох-ох-ох
тут должен бЫ общий бЫ механизм срабатывать бЫ. - типа
если уж автозамена, то она либо есть, либо тен<->нет

черным по беломк прописана автозамена
friday - Friday

дописываем в источкик friday - получаем фихвам, а не notInList.
ладно. типа база регистронезависимая.

допысываем свою автозамену
bedday - birthday
и помещаем bedday в источник - отменно получаем NotInList
как-то кривовато.

еще кривее, что после 97-го (АксXP) ничего даже близкопохожего не происходит
ни с включенной автозаменой, ни с выключенной.
типа - около птицы все это комбобоксу - не распространяется.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32934871
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A97 sp1 sp2, Win98
Акс срезается напрочь при попытке выполнить запрос QryFrmLitshTotal.
QryFrmLitshView выполняется нормально.
Как вылечить не придумал пока.
пробовал Акс ХП без СП под вин2К3 - пишет "обнаружена ошибка, отправить отчет?"
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32934874
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обошел так:
Создал запрос с именем QryTotal0
Код: plaintext
1.
2.
3.
SELECT Sum(NachOpl.Nach) AS Sum_Nach, Sum(NachOpl.Opl) AS Sum_Opl, NachOpl.fldYear
FROM NachOpl
GROUP BY NachOpl.fldYear;
... и уже его использовал в QryFrmLitshTotal.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32934983
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
Ошибка повторяется на а2002/2003 винХР.
Обходится проще - выкидывается сортировка из запроса "НачОпл". (Кстати, зачем сортировка в подзапросе?)

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

А лечится, кроме убирания ORDER BY в NachOp
еще так:

вариант 1) переделать в NachOp
ORDER BY Year([ДАТЫ_сдв]), Month([ДАТЫ_сдв]);
на
ORDER BY 100*Year([ДАТЫ_сдв])+ Month([ДАТЫ_сдв]);

вар. 2)
ORDER BY 100*Year([ДАТЫ_сдв]), Month([ДАТЫ_сдв]);

вар 3
выражение для ORDER BY = выражение для Group By
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32935271
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ы - запрос еще используется для других целей.
2 деревяшкин - буду пробовать (может в другие цели придется не целится)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32935273
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совсем забыл...
синтаксис там для А97, мож в нем дело для версий выше ?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32935279
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На листбокс повешен рекордсет, проматываем его скроллбаром. Далее удаляем рекордсет Set Me.Listbox.Recordset = Nothing. Потом присваиваю заново Set Me.Listbox.Recordset = Rst. Листбокс грузится (висят часы) до той позиции, на которой был скроллбар в момент уничтожения рекордсета.

Вылечил только искусственным обнулением скроллбара через WinAPI.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #32955209
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
пробовал на Access 2002 SP3, 2003. ADP + MSDE2000

Аксесс некорректно обрабатывает условие Is Not Null в "Условии на значание" (ValidationRule) контрола формы.

Так, для числовых полей, у которых задано IS NOT NULL на самом сервере, вместо "сообщения об ошибке" (ValidationText) выдается ошибка 3162 (Попытка присвоить значение Null переменной, не принадлежащей к типу Variant).

Для текстовых полей (пробовал на char, varchar, nvarchar & nchar) с IS NOT NULL на сервере, условие вообще не отрабатывается при очистке поля формы.

С rules'ами я ни разу не работал, поэтому не смотрю, будет ли акцесс также проверять их до того, как смотреть в свои собственные условия и, соответственно, генерить свои события.

Может это и не баг, конечно, но баловство с их стороны в любом случае.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33034360
Anton_Snitko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2000,2002,2003
1 Не всегда копирует меню из панели в панель CopyFace, PasteFace - выдает ошибку (Metod copyface of object _commandbarbutton failed)- приходитя пропускать, поэтому не всегда видны картинки в панелях.

Причем замечено локально происходит не часто - при работе в терминале чаще.

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

Access'97
Функция Mod
Если передать в нее обе переменные, объявленные как Byte, то через раз(!) возникает переполнение. Если одна Byte, другая - другая, то все Ок;)

З.Ы:
В Help'е не нашел ограничение на передачу ей такого варианта...

Попробуйте, мож у меня только так?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33036584
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в запросе находяться повторяющиеся строки...то при нажатии кнопки сортировки, Access накладывает на этот весь набор DISTINCTROW условие, так что осторожнее.то есть было одно кол-во и станет меньше уже:)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33036623
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MDB 2002
если создать Query достаточно сложной конструкции, при которой следующий добавленный уровень вложенности подзапросов приводит к ошибке "Слишком сложный запрос" и основать на этом запросе форму то при попытке сортрировать форму посылаемся в Microsoft...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33036669
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DateAdd(interval, number, date)
2 и 3 агрумент могут быть либо число либо дата
притом без разницы как вы их запишите.можно и так
DateAdd(interval, date,number )
результ будет тотже.
но вот если у вас 3 агрумент будет как строка, тогда он может быть только третьим. область действия VBA
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33038571
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще глюк
если в запросе есть поле типа денежный , то access97 при исполнении запроса заместо чисел типа дробных 1.5 покажет 2, а если нажать в это поле то покажет 1.5 :) но это токо если сам запрос пустить на выполнение, само 1.5 всегда 1.5 , он просто визуально глючит:)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33039784
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще мелкий баг, а может я ошибаюсь.
В текстбоксе формат - dd.mm.yy" "hh:nn:ss. То есть необходимо, чтобы между датой и временем было несколько пробелов. В результате часы отображаются то одной, то двумя цифрами. Дни, месяцы, годы, минуты и секунды - всегда двумя. Access XP ADP.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33039852
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mediumЕще мелкий баг, а может я ошибаюсь.
В текстбоксе формат - dd.mm.yy" "hh:nn:ss. То есть необходимо, чтобы между датой и временем было несколько пробелов. В результате часы отображаются то одной, то двумя цифрами. Дни, месяцы, годы, минуты и секунды - всегда двумя. Access XP ADP.

Custom formats are displayed according to the settings specified in the regional settings of Windows.

intl.cpl вот через выполнить запусти, и глянь, у тебя стоит в винде H:mm:ss
поэтому и без 0 они.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33040066
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexeiK
Цитата из хелпа Аксеса Свойство «Формат поля» (Format) - Поля даты/времени
"hh Число часов, состоящее из двух цифр (00-23)". У меня не Custom формат, а самопальный. А Аксес его причесывает под кастом. В этом и баг.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33040625
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторCustom formats inconsistent with the settings specified in the regional settings of Windows are ignored.тада еще и это плюсуем.

авторThe following are examples of custom date/time formats.

Setting Display
ddd", "mmm d", "yyyy =Mon, Jun 2, 1997
вот это называеться custom ......


dd.mm.yy" "hh:nn:ss и вот это не есть самопальный, это есть custom.(по твоей цитате)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33040712
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
крупный баг:
Crosstab (перекрестный запрос) считате неверные результаты
подробности тут:
http://www.sql.ru/forum/actualthread.aspx?tid=179104
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33041378
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access2K ru - > AccessXP ru несовместимость версий
http://www.sql.ru/forum/actualthread.aspx?tid=179970
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33052766
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ACCESS 2003 - ADP
если в источнике данных поставлена СП или еще что-то, и при выборе уникальной таблицы Access , бывает лажаеться и не дает выставить ее.
тогда надо на событие Открытие, формы, проставить ее. и все будет ок.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33065148
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAO (Jet4.0 SP8) Access 2003
метод Open объект recordset
при открытие на базе sql строки содержащей оператор JOIN в условии ON , котрого указано объединение по не существующему полю.....отсылает вас в microsoft.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33078798
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Смешной баг. Открыта таблица, две колонки спрятаны (Hidden). Помечаю несколько клеток правее спрятанных колонок и делаю Paste. Все работает нормально, но помеченными черным оказываются не те клетки, где я делал Paste, а на две колонки левее.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33083885
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access XP ADP.
В форме есть комбобокс cbMY и текстбокс tbMY. У комбобокса 3 столбца, около 20 записей, выбрана средняя
Если у текстбокса в конструкторе определен источник данных =[cbMY].[Column](2;0) , то согласно хелпу на column ожидаю, что в текстбоксе отобразится третий столбец первой строки набора записей комбобокса. Но оказывается, что отображается первый столбец третьей записи. Т.е. все наоборот и надо указывать =[cbMY].[Column](0;2).
А может просто жара. Кому-нибудь интересно?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33084122
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открываем access97 и открываем 2003 sp1 ADP
заходим в свойство какого нить элемента на форме, переходим копируем значение из какого нить поля с Закладки Данные ...и вставляем его в тоже свойство любого элемента в 2003 access ии 2003 уже генерирует критическую ошибку и отсылает вас с отчем в MS. :) это если копируем текст из 97 в русской раскладке . система 2000 винда sp4.
я просто хотел скопить имя функции из 97 в 2003 .....чтобы руками не вводить а он меня вывалил с отчетом об ошибке.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33133510
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще парочка:
ADP, XP

1. Есть таблица CONTRACT переименовываю в нижний регистр Contract
нажимаю энтер - название остается в верхнем регистре. помогает переименовать в Contract1 а затем Contract

2. странный глюк, так и не понял в чем его прикол.
был отчет, основан на хранимке в секции заголовка поле с формулой
= format ... & .... работало на всех компах, потом везде перестало,
стало давать ошибку что в ровсете нет поля format - не понял я юмора с чего он VBA функцию стал запрашивать из рекордсета, разбираться не стал вынес заполнение поля в код форматирования секции
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33135584
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу №2 в предыдущем посте обнаружил что формат перестал работать во всех отчетах, стал искать причину нашел ее в том что каким то страныым образом референс на ADO 2.8 перескочил на ADO 2.1 после поправки ссылок глюк исчез. странно что референсы влияют на поведение стандартных компонентов - отчетов
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33136216
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От меня тоже глючок:
Делаем контрол поле со списком и на источник вешаем запрос такого вида
Код: plaintext
1.
2.
SELECT CFU.Новый_Код, CFU.ЦФУ FROM CFU
ORDER BY CFU.Код;
,
то при открытие формы контрол позволяет выбрать первый четыре значения из списка, а остальные ку-ку(при выборе сбрасываются)
Пришлось писать так
Код: plaintext
1.
2.
3.
SELECT CFU.Новый_Код, CFU.ЦФУ, CFU.Код
FROM CFU
ORDER BY CFU.Код;
Хотя поле CFU.Код вообще не задействовано на форме, оно лишь для сортировки. (MDB XP)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33160119
Баги говорите? Хм...
Вот вам совершенно свежий и невероятный, на грани кина "Ван Хельсинг"... Предупреждение – в домашних условиях не повторять! Этот трюк выполнен профессиональными каскадёрами.

Достаточно серьёзный проект, winXP PRO, Access 2002 SP3 .mdb (Jet 4.0 SP8 4.00.8618.0) DAO 3.6. (есть причины у заказчика использовать именно такой фарш) Примерно треть уже готова, более 2500 процедур и функций при очень высоком повторном использовании кода, объекты, классы и прочая хрень... Через месяц показывать заказчику основной, базовый функционал (он работает и уже активно тестируется тестерами).
4 дня назад, очередной слёт Аксеса (с открыткой к MS - типа, не смогла я...) Код больше не открывается. Обычная история. Раз в неделю. Создаю новый .mdb, декомпилирую, импортирую объекты, восстанавливаю референсы. Вроде завёлся... Опа... Опять вылет на пустом месте. Не понял... Бьюсь головой об стену 3 дня и 3 ночи. Путём отсечения кода и какой-то матери выясняется, что в коде больше не работает Me.Refresh именно для форм с подчинёнными формами в виде грида. Опа-на.(! Погодите смеяться, дочитайте до конца) Ещё сорок три «Привета в Микрософт», ведро шамана и новый клок седых волос. Проверка патчей, программной среды, переустановка от блудного беса – всё тщетно. Наполовину готовый проект встал намертво! Заказчик нервно грызёт ногти, я пью валидол.
Для чистоты эксперимента, переношу код, формы, отчёты, таблицы и запросы в текст. Текст несу на СОВЕРШЕННО СВЕЖУЮ, только что установленную машину, Офис, патчи, всё для жизни. Создаю базу ТАМ, импортирую объекты, компилирую – без замечаний. Доходит до Me.Refresh – упал! Я уже в шоке. За 8 лет активной разработки на Аксесе видал всякое, но такое. Форма с подчинённой чуть сложнее «перетягивания каната». Ломаться нечему. Прямой рекордсет. Me.Refresh. Ё-о-о...

Ладно. Берём с нашим админом машину с Аксом 2003 – отрабатывает нормально, без падений и с присвистом. Приехали. И больше ни на какой машине с 2002-м ЭТОТ код НЕ поднимается. Отказ устойчивый. Уважаемые знатоки, внимание вопрос: а что же тогда тестируют тестеры? У них всё ок. (откомпилированный .mde) Поднимаю архивы из хранилища с их ветками кода, сравниваю с текущей – коды идентичны и по временным маркерам НЕ менялись с момента ПРАВИЛЬНОЙ компиляции. Перекомпилирую РАБОЧИЕ ветки, запускаю – упал!.. Санта Клаус, блин. Ради эксперимента – поломанную базу несём на 2003 – отрабатывает влёт.

Я-то понимаю, что это баг Джета4 в связке со средой Аксеса (msjet40.dll генерирует ошибку, дамп регистров прилагается) Я понимаю, что надо мучить техсуппорт Микрософта, а не вас, уважаемые читатели форума. Я всё это понимаю. Но дальше 2003-го не убежишь! И гарантий никаких. И уже порядком надоело колупаться в ТАКИХ багах! Достало! Сменю среду, к чёртовой матери. Уже книгу могу написать - "1001 Шаманский бубен в Аксесе и почему ни один вам не поможет..." Не вернёт она мне ни денег, ни нервов, ни времени, затраченного на чехарду одной корпорации, не доводящей до ума ни один из своих продуктов. ДальшеВЛес-Темнее-Глючнее.

З.Ы. Извините. Накипело. В моей кунсткамере Аксеса есть ещё 3-4 совершенно невероятные истории багосторительства (благо с серьёзными свидетелями, иначе сочли бы меня за сумасшедшего). И ещё 20-30 бесов поменьше. Но Аксес просто неисчерпаем! Это очень интересный инструмент, несомненно, уникальный в своей нише, и плюсов много, и минусов, как у любого ЯРКОГО инструмента. Но иногда он достаёт меня.

З.З.Ы. Я всё сказал.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33160354
А теперь на десерт!
Люди! Готовьтесь! ЭТО НАДО ВЫДЕРЖАТЬ СТОЯ !!! Я убил почти 4 дня на решение этой головоломки. Я её решил. Теперь у меня всё ОК! Но как мне жить дальше с ЭТИМ знанием? Как не разочароваться в человечестве?

Итак, не буду томить. Решение следующее (без всяких ср_ных техсуппортов МС). На форме (относится ТОЛЬКО к формам с подчинёнными формами в виде грида, на формах с одной таблицей - всё работает даже с ЭТИМ) есть группа лейблов (LABEL) содержащих ШРИФТ WINGDINGS !!! Повторяю - просто лейблы, просто текст, просто шрифт Wingdings с картинками (стоит на каждой Винде), ни с чем не связанные - просто украшалка серого фона формы... Шестым чувством, убираю этот шрифт (на исходе-то 4-го дня сумасшествия, звонков, прессинга Заказчика, размышления о смене профессии...) И О ЧУДО ЯВИЛОСЬ!!! АКСЕС 2002 ПЕРЕСТАЛ ПАДАТЬ!

ПРОСТОЙ ЗАМЕНОЙ ШРИФТА В ЛЕЙБЛЕ! Я показал коллегам - они не поверили глазам своим. Я тоже. Я сплю...

Вернее - лучше бы я спал. (вырезано цензурой - десять минут ора матом ...)

Поздравляю себя. Я прошёл очередной тест работы с продуктом МС. (Правда, за это медаль не дадут или даже жёваный сертификатишко... Для тех кто одновременно работает в Асксес97 и Аксесе200х знакомы проблеммы шрифта Haetten.ttf (файл которого в системе вовсе и не так называется.) И я ещё шутил в 1-й день, в состоянии аффекта,- "Ага, потом окажется, что Аксу какой-нибудь шрифт не нравится или приложение Калькулятор у него не той модели...)

Господи, прости меня!

З.Ы.
Модераторы, пожалуйста, не убивайте мои посты! Я не клоун, я живой! Я уже седой, реальный дядька, жизнь проживший! У меня есть свидетели!.. Позовите консула, в конце-то концов!..

З.З.Ы. Если ты настоящий мачо, готовый бороться с ветряными мельницами - Аксес твой инструмент, сынок... Это не розыгрышь! Теперь на меня и на "битую шрифтом Wingdinds базу" коллеги будут ходить смотреть, как в зоопраке. (Разместить код в публичный доступ не могу - коммерческая, заказная разработка.) :-( А очень бы хотелось - в назидание потомкам!..

З.З.З.Ы. По пятибальной шкале моего личного "дерьмометра" для Аксеса, этот косяк Микрософта тянет на 5+ баллов! Использующие МС Аксес 2003 - в этом месте спите спокойно, поправили втихую... :-(
Повторяя слова Юлиуса Фучека, скажу - "Люди, будьте бдительны..."
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33160369
Попытались повторить глюк на вновь созданной базе, новые таблички, формы (попроще кончено, в качестве эксперимента) - нет глюка. Зараза! Не повторяется. На боевом, реальном проекте - падает. Убираем шрифт Wingdings из надписей (лейблов) - живёт... Б... какие-то сказки Пушкина!
А вы говорите - баги! (Кстати, реальный проект пересоздавался с нуля с экспортом уже много раз, в том числе и из-за этого глюка.) Наверное, в проекте какой-то особый микроклимат... Не, я всё-же отошлю багрепорт в Микрософт, интересно - что скажут?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33160373
Я уже ничего не понимаю... Три последние часа база работала нормально. Теперь стала падать и без Wingdings'а... На 3-х разных машинах! Что вообще происходит?..

Брошу я Аксес нафиг! Это уже не глюки - это Злые Духи! :-( "Окропить помещение!.." (с) Булгаков.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33160375
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор 2500 процедур и функций при очень высоком повторном использовании кода, объекты, классы и прочая хрень...

честно говоря вся эта фраза целиком и отдельными частями - сильно смущает. и, видимо, исключает возможность посмотреть глазом на такое
чудесное поведение.
а было бы любопытно и познавательно.
а в меньшем масштабе воспроизвести и как полную демонстрацию положить - никак не получится?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33161044
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТеньОтцаГамлета Брошу я Аксес нафиг
кажецца с очень похожей траблой билась на форуме какая-то дама. не далее чем... с полгода, нарно. не помню, чем кончилось.


ззы - фчера в древнем прожекте 97 (перетащен с 2.0) убил очередную траблу - не любит, хад, одноименных форм и атчетов. к билу не шлет, но ватсона вызыват.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33162427
В данном конкретном случае, фраза "более 2500 пр-р и ф-ций..." (MZ-Tools Statistic) - это характеристика проекта, мера объёма, если хотите, а не длинна ХХХ в сантиметрах. Простите, пожалуйста, если кого задел. Можете воспринимать это как биллетристику. Но, в общем, вы правы - к делу это не относится.

Повторить сей фантастический глюк на простом примере - 2 формочки, 2 таблички и запрос с объектом - к сожалению, не удалось. Самому хотелось продемонстрировать его широкой публике. Чтоб "порадовались вместе". Резать реальный проект под эту примитивную дему... Ну не до этого мне, поймите и извините. Корма повисла над пропастью. Мои предыдущие посты, это просто крик отчаяния в форточку... Я не просил помощи. Со временем поборем и этого зверя. Первый шок прошёл, осталась техническая злость. Решаем. Если точно и однозначно определим проблему с коллегами, проинформирую. Пока зацепиться не за что.

Прошу прощения, далее в обсуждении учавствовать не могу. Вопил от избытка чувств... ну, в общем, понятно.

З.Ы. Описанный глюк не чудо и, наверняка, имеет под собой осязаемые корни. Просто ЭТО пока вне моего понимания и опыта. Апостериори. Как гроза для древних. Только древние приносили в жертву соплеменников, а я всего-лишь стал дёргать шрифты, коллег, код и нафлудил в форуме. И с той же эффективностью. :-)) В основе и того и другого - страх и непонимание природы происходящего. Суеверия, короче.

З.З.Ы. А бага на месте. Падения странные - то 10 из 10, то 6 из 10, зависит от фазы Луны. Подозрения есть, но надоело молиться колесу. Ждём-с техсуппорта.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33162434
Odess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай дам ссылку - может кто споткнется:
http://www.sql.ru/forum/actualthread.aspx?tid=190203&pg=9#1698088
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33162534
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ТеньОтцаГамлета
у меня нечто аналогичное было

решилось в лоб - для каждого открытого рекордвета вставил close и nothing

а вылетало так же не стабильно.


ЗЫ
не думаю , что в таком проекте новички учавствуют , но .... и на старуху бывает..



ЗЫ
а у меня тоже баг не баг (мдб/ХР)
в форме делаю Recalc. на другой форме в подформе происходит обновление данных.
в другой форме Recalc тот же эффект.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33162659
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати говоря о незакрытых рекордсетах и прочих траблах связанных с переполнением оперативки
в качестве диагностики:
попробовать установить большой и фиксированный размер своп файла (например несколько гигабайт) если падения прекратились/ стали реже значит вероятная причина - плодящиеся неприбитые объекты

дело в том что винда всех версий может давать ошибку в выделении дополнительной памяти в момент когда своп файл заполнен и идет процесс его автоматического увеличения и эта ошибка далеко не всегда обрабатывается ...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33163770
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
больше 4Г не получится
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33164140
Vugar_Miri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица с полями
3 PrintID int 4 0
0 TemplatesID int 4 0
0 UserLogin nvarchar 25 0
0 PrintDateTime datetime 8 0

У таблицы есть триггер

ALTER TRIGGER Tbl_Prints_TriggerMain
ON dbo.Tbl_Prints
FOR INSERT, UPDATE, DELETE
AS
DECLARE @InsertedCount INT
DECLARE @DeletedCount INT
SET @InsertedCount =(SELECT COUNT(*) FROM INSERTED)
SET @DeletedCount =(SELECT COUNT(*) FROM DELETED)
IF (@DeletedCount>0)
IF (@InsertedCount>0) BEGIN
INSERT INTO dbo.Tbl_Logs
(LogDate,
UserLog,
LogDescription,
LogNewValue,
LogOldValue,
ID,
IDDescr)
SELECT CURRENT_TIMESTAMP,
CURRENT_USER,
'Update print table',
rtrim(inserted.UserLogin) + ' ' + rtrim(CONVERT(char(10), inserted.PrintDateTime, 104)),
rtrim(DELETED.UserLogin) + ' ' + rtrim(CONVERT(char(10), DELETED.PrintDateTime, 104)),
deleted.PrintID,
'PrintID'
FROM INSERTED, DELETED
END
ELSE BEGIN
INSERT INTO dbo.Tbl_Logs
(LogDate,
UserLog,
LogDescription,
LogOldValue,
ID,
IDDescr)
SELECT CURRENT_TIMESTAMP,
CURRENT_USER,
'Deleted from print table',
rtrim(DELETED.UserLogin) + ' ' + rtrim(CONVERT(char(10), DELETED.PrintDateTime, 104)),
PrintID,
'PrintID'
FROM DELETED
END
ELSE BEGIN
INSERT INTO dbo.Tbl_Logs
(LogDate,
UserLog,
LogDescription,
LogNewValue,
ID,
IDDescr)
SELECT CURRENT_TIMESTAMP,
CURRENT_USER,
'Inserte in print table',
rtrim(inserted.UserLogin) + ' ' + rtrim(CONVERT(char(10), inserted.PrintDateTime, 104)),
PrintID,
'PrintID'
FROM INSERTED
END

Если для таблицы задать Primary Key то при добавлении записи выскакивает сообщение,
The data was added to tha database but the data won't be displayed in the form because it doesn;t satisfy the criteria in the underlying record source. в таблице добавленная запись помечается как удаленная, но после закрытия и открытя запись показывается.
Решение не нашел, просто не использую PrimaryKey. Так что, если вдруг кто найдет причину буду благодарен, а пока для услады самолюбия называю это багом.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33164256
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не баг это
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33164262
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалить из таблиц в которые вставляешь историю поля идентификации
и в начало триггера set nocount on
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33164419
Vugar_Miri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал иденты в таблице логов и все зарабатало (SET NOCOUNT ON не обязательно). Спасибо, и если можно под конец немного теории, почему при изменении или удалении сообщение не появлялось только при добавлении?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33164442
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предположительно это происходит потому что для того чтобы приложение (неважно аксесс или еще какое)
смогло догадаться что ему надо загрузить какую то только что добавленную запись оно получает с сервера переменную @@IDENTITY и по ней подтягивает новую запись.

если идет в триггере вставка в таблицу где есть идентификация то эта переменная сервера принимает значение идентификатора таблицы в которую добавил запись триггер последний раз, по идее в форуме предлагалось модифицировать триггер на запоминание этой переменной до вставки в таблицы истории и назначение правильного значения в конце триггера
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33187050
Продолжение триллера, если кому интересно.
Как и предполагалось, обращение в техподдержку МС ничего не дало. Выслушали, поцокали, вежливо послали в... Редмонд, США. Спасибо и на том. Это информация на заметку тем, кто собирается покупать девелоперские лицензии - если вы не Газпром, особо разговаривать с вами не будут. Как было заявлено - ни в СНГ, ни в России НЕТ поддержки разработчиков Аксеса. Есть платные программы поддержки девелоперов, но, если вы не Газпром (см.выше). Посоветовали походить по форумам...

По сути проблемы. Уже почти месяц убили на её локализацию. Пришлось даже открутить объектную модель и переделать на функциональную у проблемной зоны, чтобы убрать "шум" объектной модели ВБА+Аксес. Что удалось выяснить (не истина в последней инстанции, понятно...) Ошибка в ДЖЕТЕ - 90%, 8% - особенность архитектуры приложения, 2% - цейтнот и замыленный глаз. Ситуация такая - есть основная таблица, у неё подчинённая, один-ко-многим, на основе этих таблиц есть 3-4 запроса, динамика. Обновления с формы идут прямо в динамический запрос и каскадом возвращаются в таблицу. В форме есть код, отлавливающий события и производящий запись в том же Engine(n) отдельными пакетами UPDATE. Всё пучком работало почти пол-года (A2002-2003).

Почему падал Me.Refresh (упрощённо, своими словами, т.к. действительная модель сложнее). Как и предполагалось, ДЖЕТ не может нормально разобраться с блокировками "динамиков", когда их много и они идут пакетно, вмешиваясь в процесс обновления друг друга (обработчики ошибок "подожди, я обновляюсь" везде присутсвуют, но срабатывают не стабильно, то перехват - блокирован другим процессом ядра - жди, то как и нет никаких блокировок, а на выходе из процедуры - крэш... Причём, обращения из кода других клиентов видят блокировку нормально, а сам локальный код не даёт исключения - пролетает как в унитаз) Это явная бага с уровнями блокировок, и МС проще послать нас в... (Редмонд, по-нашему Бобруйск), чем разбираться с такой, цитата, "штучной багой". Радости добавляет и операционная система.

Открыт Журнал, корневая запись + 2 динамических запроса, открыта Накладная + подчинённая + 3 динамических запроса. В коде нескольких проц-р может происходить (в т.ч. и рекурсивно) обращение frm.Refresh (аналог Me.Refresh, форма - по ссылке) и управление в код этой рекурсии возвращается раньше, чем подтянутся все обновления динамиков. Но код не стоит на месте, у него идут расчёты и обновления UPDATE (уже не текущим рекордсетом). И вот этот режим ОЧЕНЬ не нравится ДЖЕТу. Не любит он его, хотя ни в MSDN, ни в КноледжБэйсе нет замечаний по такому режиму работы, я не нашёл, во всяком случае (на заметку разработчикам). В общем, в данном случае или ДЖЕТ, или ОС тупят на блокировках процессов ядра, а может быть и на уровне файловой системы - не знаю, гадать не буду, не моя компетенция.

DoEvents с временнЫми задержками - решает проблемы падения. Написал код, разруливающий "многозадачность" ДЖЕТа. Но это КОСТЫЛИ! В общем, танцы с бубном. Таким способом решена одна из проблем. В другом месте проекта падения пока не прекратились - там тоже похожая проблема, но, кажется, ДЖЕТ ведёт себя несколько по иному (многоликий наш Гудвин).

Разобрались и почему некоторое время проект шевелился при смене шрифта Wingdings. К баге это не относится. Здесь рассказывать не буду. Стыдно... Почему в откомпилированном на месяц раньше mde код срабатывал нормально - загадка. "НЛО, необъявленный визит..."

Продолжаем разбираться. Если поборем и второй баг - напишу.

З.Ы. Господа из Микрософта! При попытке записи какого-либо процесса в не успевшую измениться на данный момент времени запись должен срабатывать флаг блокировки и возвращаться номер ошибки! А не падать всё приложение, со вздохом "не шмогла я..."! "Учите албанский..." Однозначно!

З.З.Ы. По поводу шамании с оперативкой, утечкой памяти, затыков файловой системы и т.п. Я думаю, гораздо эффективнее использовать мониторы замеров производительности (перфомансы всякие), с временнОй сеткой, и потом читать графики - там будут отражены и выделения памяти, и свободные дескрипторы, и дисковый кэш, промахи попадания, и ваши неубитые объекты, и взрывные увеличения памяти. Запустил своё приложение, пожамкал пимпочки - читай логи монитора. Да и хорошим тоном в программировании являются директивы компилятора и логи отладки. "Родил объект, не поленись записать, убил - то же... То же самое для критических операций. На малых проектах это может и лишнее, а вот на больших расход времени на эту служебную инфу с головой окупится потом, при обнаружении "висяков и косяков". А в конечной сборке служебного мусора не будет.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33187169
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ТеньОтцаГамлета
а там у тебя me!recalc случаем гденить не используется?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33187177
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
маленкий смешной глюк - фичу:
тока что заметил ADP представление открыто как таблица (может также и mDB и просто в таблицах, но наткнулся именно здесь)

копирую запись в которой "рога и копыта" OOO
выделяю ячейку в другой строке на линии пересечения клеток (курсор - крест) чтобы выделилось не содержимое а вся ячейка

делаю вставку CTRL+ V

и вижу чудо!
рога и копыта OOO

кавычек нет!!!!!!!!!!

если войти в клетку то вставка с кавычками нормально проходит
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33187252
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК> маленкий смешной глюк - фичу:

Подтверждаю. Акцесс97 sr2, если для копирования выделить текст в ячейке, а не всю ячейку ("крестом")
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33187293
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРазобрались и почему некоторое время проект шевелился при смене шрифта Wingdings. К баге это не относится. Здесь рассказывать не буду. Стыдно...
а жаль очень.
попробуйте посмотреть на с другой стороны.
Вряд ли это смертельно опасно - услышать в свой адрес "вот видишь, мол.."
Зато это действительно может оказаться полезным для других.
( Например, для меня).

По существу всего остального.
Мне понятно Ваше раздражение в ответ на неполучение технической, или, хотя бы эвристической, консультации.
Я не являюсь ни сотрудником microsoft, ни знатоком предмета.
И содержательного Вам совета не дам. Скажу только, что абсолютно полной, ясной и однозначной уверенности на 100% в том, что Вы имеете дело с багом, у меня не возникает. Признаки того, что это "баг" есть. И Вы достигли потрясающих успехов в деле осмысления ситуации.
Однако, не имея до конца ясной картины происходящего, Вы не можете,
во первых, исключить последующего повторения: "Здесь рассказывать не буду. Стыдно..."
Во вторых, создавая, по вашему описанию, весьма сложную конструкцию, размещенную в сложном операционном окружении, вы справедливо предполагаете, что ошибка может быть в другом или на стыке.
Даже в этом случае это не обязательно баг, а, может быть, проблема "параметров исполнения".
Кргда я сам попадаю в подобные ситуации - меня ясно и точно раздражает проблема отсутствия информации. Это может привести к осознанию безысходности.

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

В этом плане совет - идите вы, мол, в Редмонд - выглядит вполне конструктивно, на мой взгляд.

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

Ненарушение "заветов" минимизирует соприкосновение с ними.
Я думаю, что тема Вашей борьбы вполне достойна того, чтобы быть изолированной от темы "баги" потому, что Вы находитесь в стадии исследования сложной задачи, ясно претендующей на формирования чего пригодного для заветирования и скрижалирования.

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

ЗЫ
То есть очень все это интересно, понятно в эмоциональном плане и совершенно сочувственно. Но, кажется, переросло стадию "блин, кругом баги и все козлы" и, почти должно либо завершиться фиксацией передаваемой техники, либо фиксацией четко описанного бага, либо и того и другого.
Причем вполне достойнно и уместно - в отдельном топике.

С искренним интересом и симпатией, но в полной несостоянии содержательно помочь,
Victosha.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33190574
2 вадя:
Я читал Ваши посты о Рекалке. Смотрел пример - интересный эффект. :-)) Загляните, пожалуйста, в свой топик.

2 Victosha:
Захламил я топик, однако. Замечание принято. Извините. Я понимаю, что выступаю вне темы - просто всех коллег и близких уже колбасит от этого, а поделиться хочется. Всё, последний пост... :-)

Про стыдно. Тут не боязнь показаться смешным и нелепым. Ошибаться не зазорно. Посмеяться над собой, любимым, полезно. Коротко - сидел я, в состоянии лунного затмения, шаманил и закомментировал строчку кода. Пару часов радовался жизни. Вовремя не заметил. Потом, видать, при очередной правке - ой, а чего это он закомментирован? - вжик и бага снова на месте...

Про Редмонд. Я не зол на техсуппорт, у них своя работа. И представляю, каковы усилия и стоимость вылова этого дурацкого глюка. В МС мы готовы предоставить полный код проекта с инструкцией по воспроизведению проблемы (может наши ноу-хау и смешные для МС, но это "наше всё", имейте милость к падшим...). Готовы даже приехать (только не в США - кирдык бизнесу с такой рентабельностью) и вместе разруливать. Но это не нужно им! И я также понимаю, что жать убогий Российский техсуппорт МС бессмысленно. Тут надо садиться с разработчиками ДЖЕТа и шагать код в отладчике, до момента - ага, вот!.. Дезассемблировать же код ДЖЕТа мы не имеем ни квалификации, ни времени, ни права. Плюс P-код Аксеса - это таакой лес! В общем, мина та ещё. И, действительно, обидное ощущение, что тебя просто "кинули", как только проблема стала сложнее, чем "поставьте галочку в настройках". И тут спасает только три вещи. 1) Бубен. 2) Два бубна. 3) Возможная помощь многих людей (форум), объеденённых в некое условное сообщество и уже топтавших эти грабли.

Про скрижали. Я не могу сейчас однозначно зафиксировать технику. У меня вопросов больше, чем внятных ответов. Тут, по хорошему, целую статью писать в какой-нибудь "Акссес НьюсВик Ресёрч". И ждать реакции прогрессивной общественности. Но не до этого. Да и коллеги осудят - "да вы с дуба рухнули использовать Аксес в такой позе"... И будут, в общем-то, правы. Хотя, этот проект не самый крупный из наших Аксессных. Есть и поболее монстры, что сами удивляемся. Но с другой внутренней архитектурой, более простой и "деревянной". А жаль, Акс - хороший инструмент. Его бы до ума довести, муками всей планеты. Но к бизнесу МС это, видать, не относится. Да и их вердикт, возможно, будет - "вы переоценили возможности инструмента, сами дураки, лучше купите у нас новых мягких французских булок...".

Про выявленную аномалию. Общий совет всем разработчикам: избегать архитектур, при которых возможна конкурентная запись в "длинные" цепочки каскадных рекордсетов и изменяемых запросов. (передал по ссылке - обработал - передал дальше, следующий обработал свою часть - передал - и т.п - а последний вернулся в объект и решил обновить не отображающую последних изменений форму - и тут ему ага...). Особенно с открытыми на момент записи формами (особенно со сложными полями с условным форматированием - там вообще глюкодром), которые в свою очередь ловят события обновления для своих целей.
Особое внимание, при хранении динамических рекордсетов в экземплярах классов, как внутренних локальных объектов. Так и тянется рука простым присвоением внутреннего свойства получить автоматическую цепочку обновлений (фантастически удобно - просто гимн Аксесу, такая вкусная идея). Но там минное поле... Заставить всё это шевелиться - поседеешь. В общем, старый как мир завет - чем проще код, тем надёжнее работает.

Всё, всё. Ушёл. :-) Ещё раз пардон автору топика. Всем удачи.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33190724
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ТеньОтцаГамлета
Читал, полностью согласен по поводу техподдержки - сами нарывались так.
Касаемо остального - надо смотреть на примерах.

2 ALL
Вот наткнулся недавно на свой скрин 2-х годичный (не фейк) - мож кто такое и наблюдал - проявлялось при сохранении форм как текст или ещё при какой-то недокументированной опции.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33195735
AlexeiK (as guest)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот баг с полностью русскими именами функций, функции размещены на тулбарах и контекстных меню.access перестает их видеть, когда произведен экспорт отчета в excel . и еще одна ошибка с русскими именами функций при экспорте в тот же excel , ошибка:". и ! обнаружены и т.д......" происходит если в заголовке отчета стоит вызов функции с русским именем, примечание отчета не генерирует ошибки. вот собсно 1 ошибка лечиться перезапуском проекта, и вторая ошибка просто не дает скинуть отчет в excel.
одним словом перебор! так с русским касячить это нечто, интересно с другими кодировками , кроме английского так же косячит.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33195748
AlexeiK (as guest)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл дописать: adp , access 2003 sp1 ,reports(shape)
оба глюка лечаться, заменой русских имен на английские.
...
Рейтинг: 0 / 0
Баги 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
Баги Access (топик не закрыт, можно добавлять)
    #33384026
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЫнтырэсный Фыча :
Access XP SP3
проверил в процедуре стандартного модуля с включенным и отключенным дао, с КаррентДБ и с со свойством модуля МайДиБи, с созданием новой таблицы между сет и рефреш и без него.
Ничего близко похожего не вижу пока.
Думаю, речь идет о потере указателя на объект базы, причины которой из показанного кода не видны
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33385149
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha Ничего близко похожего не вижу пока.
верю
на всяк случай вот корректный пример кода "с фичей" для 97 (т.е. того, где она проявлялась)

Код: plaintext
1.
2.
3.
4.
    err.Clear
    MyDb.TableDefs.Refresh
    x = MyDb.TableDefs(tblName).Name 'не возникает ошибки
    If err <>  0  Then
        'сюда не попал
примерно такое пропертя:

Private vMyDb As DAO.Database
Public Property Get MyDb() As DAO.Database
'не открывает заново, если открыто
On Error Resume Next
If vMyDb Is Nothing Then
Set vMyDb = ...
ElseIf vMyDb.Name = "" Then
'err - Если .Close
Set vMyDb = ...
End If
Set MyDb = vMyDb
End Property
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33385159
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то в памяти мусор у меня какой-то сохранился на тему глюков
объявлений объектных переменных уровня модуля в 97м.
типа - Private, бывает, сбрасывается, а Dim - вроде как надежнее.

попробуй для смеха
Private vMyDb As DAO.Database
на
Dim vMyDb As DAO.Database
заменить.

(не должно бы быть такого (первоначально описанного) глюка и в 97м тоже)
а с Private/Dim какие-то хитрости были...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33385196
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не в этом дело оказалось, (хотя все вызовы были в том же модуле) а в On Error Resume Next
"полечилось" так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Property Get MyDb() As DAO.Database
    'не открывает заново, если открыто
On Error Resume Next
    If vMyDb Is Nothing Then
    Set vMyDb = ...
    ElseIf vMyDb.Name = "" Then
        'err - Если .Close
        Set vMyDb = ...
    End If
On Error GoTo  0  'важно ДО Set MyDb = 
    Set MyDb = vMyDb
End Property
- т.е. On Error Resume Next имел силу на строке ?((((
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33385199
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если On Error GoTo 0 поставить после присвоения св-ву ссылки, то "фича" остаецца.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33420989
сложные чувства - акцесс все-таки расстается со своими заслуженными багами.

Form bookmark bug - старый как сам Акцесс, тянулся со 2й версии.
Мирно жил во всех последующих. Плавно и уверенно доплыл до 2003й.
Взяли да и пофиксили.

http://support.microsoft.com/kb/903074/

неужели полностью и окончательно?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33422931
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
баг, с потерей функции в именах которых русские символы, после использования экспорта в excel или word , знает кто , как поправить?
очень надо.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507349
2 глупыйглупый:

Не переживайте, Микрософт думает о нас! Нарожал Мудрапраграм, индийский лидер программёров МС, не оставит нас без развлечения! Он уже добавил в аксес много новых, цветастых, трудно повторяемых и диагностируемых баг! :-)

Плююсь через день! В топик не пишу, ибо это будет клиника длинною в годы! Нервы дороже - просто ебъезжаю баги костылями! Охо-хо... Начертил себе на рабочей доске страшную древнюю клятву - больше аксесовских проектов - ни-ни! Чур меня...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507366
Звереныш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТеньОтцаГамлетаНачертил себе на рабочей доске страшную древнюю клятву - больше аксесовских проектов - ни-ни! Чур меня...
Обратите внимание на собственные руки.
Может в консерватории что подправить? (с)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507426
2 Звереныш:

Да уже поздно что либо подправлять. Спасибо за самый оригинальный ответ на форуме! :-)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507438
авторОн уже добавил в аксес много новых, цветастых, трудно повторяемых и диагностируемых баг! :-)
если бы меня спросили - о чем это в применении к текущим версиям акцесса?

я бы предположил, что, вероятно, тема где-то вокруг свойства Form.Recordset
крутится (и очень может даже быть, что в adp-проектах).
какая-то часть глюков как следствие неотключенной автозамены имен может быть.

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

Вот наблюл одно из проявлений:
Если источник данных формы не содержит записей (форма открывается на новой записи), то попытка добавить на форму флажок и привязать его к полю источника данных закончится крахом акацесса в момент сохранения формы.
Этого не произойдет, если источник возвращает хотя бы одну запись.
(Access 2002 SP3)
--

закралось подозрение - вы там часом не 12й ли акцесс альфа-бета-тестируете?
интересно было бы посмотреть.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507505
2 глупыйглупый:

Хотите верьте, хотите нет, а дело было так... (с) "Полосатый рейс"

Последний баг А2003 (Jet4, mde, раздельные интрефейс и таблицы) - в шоке всем отделом - ставим клиенту обычный пароль БД - падение клиента с письмом к Билли! Заинтересовались, открутили весь код при старте - не поверите - падает редиска!.. Даже старта кода нет. Без пароля на локальную БД - живёт, ставим пароль, падает с письмом... Дамп, мудриль замудрёвая...

Ну не верьте, если не хотите. Можете даже пройтись по моим рукам, сдавшим за последние 9 лет с десяток КРУПНЫХ проектов на Аксе, как сделал(ла) это Зверёныш... Мне от этого ни холодно ни жарко. Факт есть факт. Работаем без паролей на клиентах. Шаманили, били в бубен, экспорт, декомпил и прочая молитва от блудных бесов, переустановка ОС и офиса... Ага... Почитайте мои предыдущие посты в этом топике. Многое поймёте. Техсуппорт МС, вежливо - идите нафик!.. Иду. Работаю.

На новой, чистой БД - не повторяется. Ну не повторяется совсем! На боевом проекте - упала милая... Так и живём! Ё...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507554
авторНа новой, чистой БД - не повторяется. Ну не повторяется совсем! На боевом проекте - упала милая...

интересная тема.

а в список шаманских действий входило потрахивание закладки General
окна Options из меню Tools->Options редактора?

и, есть ли отличия в "формате файла" и какой он у боевого файла и создаваемых вновь?
2003 или 2000?

верю. в целом охотно.

Кроме того, в последнее время вместе с лохматостью у меня повышается степень самолюбование от неперехода на 2003.
:)

(сверчок в голове объявился, что может быть и не суждено 2003му офису в конце концов достичь состояния работы пользователя без мата и корвалола.)
вероятно, я неправ.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507636
2 глупыйглупый:

"вероятно, я неправ"

Скорее всего вы правы. Я вот вспоминаю глюки а97 как милые пушистые игрушки. После глобального перехода основной части наших клиентов на а2000-2003 - сплошное "Цигиль-цигиль ай-лю-лю... Я тебе потом обьясню что она хочет..." (с) Брилиантовая рука. Похоже МС на акцец наплевать, такими темпами он закопает очень интересный, яркий инструмент, сведёт его на нет...

А пробовать... да почти всё пробовали, кроме переписать клиентов на другой среде. И Гетца с его томами в помощь звали и кучу другой умной литературы, и опыт сын ошибок трудных впрягался - воз и ныне там... Падает. Форматы одинаковые. Полное пересоздание проекта - с нуля, экспорт в текст, включая макеты форм... Падает.

Всё, извините, опять не по теме топика... Ушёл пить горький чай... :-)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33507857
вероятно, у интерфейсного файла опции "сжимать при выходе" нет, но,
если вдруг да - попробуйте снять.

про формат одинаковый.
мои подозрения где-то вокруг механизма загрузки/компиляции проекта в первую очередь были бы.

во вторую, если проект завязан на АДО, я бы в такой ситуации пробовал самыйсамый сервис пак на операционную систему ставить.

Задача - максимально mdac в порядок привести.
(заметил, что microsoft как-то тихо, но внятно снимает со свего сайта примеры использования АДО в mdb проектах Акцесс, осталяя только примеры использования ДАО. история про "переходите на АДО" - похоже, закончилась.)

про формат
если текущий - формат 2003, то попробовать новый проект создавать в формате 2000. как-то покомбинировать форматом файла попробовать...

Еще бы я обратил внимание на то, полностью или нет скомпилирован проект
в тот момент когда он гарантированно падает и в те моменты, когда еще работает.

может быть еще пробовал бы декомпилировать проект в 2002й версии
, потом снова компилировать и сжать на втором подъеме акцесса.
потом смотрел бы - воспроизводится ли ситуация с падением.

если нет, то можно попробовать подсунуть такой проект 2003-му
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33508037
2 глупыйглупый:

Сенкс за конструктив. :-) Но у нас всё запущенно...

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

Код в основном ДАО, Есть при старте АДО, в основном - наследование построчной блокировки записей, т.к. сам ДАО не имеет такого режима, но может наследовать его от опен коннекшына. Но сама нагрузка практически вся ДАО - и быстрее и функциональнее, плюс манипуляция объектами БД, АДО здесь не при делах, большой гетерогенности источников данных нет - моно, и в АД никто за файлами не ходит. :-) Так что...

Сжатия флаг у локального клиента стоит. Да. Хм... (задумался)

Проект скомпилирован mde. Где рунтайм, где среда. Падает и mdb исходник - брекпойнты побоку, даже если стартовый код закомментирован совсем - и перекомпилирован, т.е. на пустой стартовой болванке боевого проекта. Что-то ему аура не нравится, наверное... У меня есть чутьё, но пока только чутьё - это где-то в областях безопасности и цифровых подписей VBA копать надо, там косяк. (наделали фич, тьфу)

Проект большой, даже слишком. Много всего напичкано. На простых примерах не повторяется. Кстати, это всё тот же самый многострадальный проект, что и в моих предыдущих постах в этом треде - он блин какой-то заколдованный индийскими заклинателями кода из МС! Только теперь он введён уже в промэксплуатацию у заказчика и проходит цикл окончательной доводки и сдачи "госприёмки". :-) Так что это теперь не просто моя головная боль, как тим-лида, это ещё и жёсткий трах в натуральный масштаб 1:1

Механизма загрузки... Да хз... Вот прежняя бага с падениями - никуда не ушла - выход на /refresh из экземпляра класса на динамическом рекордсете - привет Билли. Бага не исчезла, уже SP3, багрепортами весь сервак Микрософту забили - пришлось переписывать куски проекта с ООП на чистый функционал! Блин... Именно поэтому я писал "дал страшную древнюю клятву...", а не от того, что аж целых 3 месяца как Акс увидел. Наелся глюков - аж выворачивает. В копилке отдела есть такие перлы, как например ошибка лейблов при загрузке отчётов - обхохочешься... :-(

Сам проект показать не могу, поскольку проприетарный коммерческий продукт. (Ну да вот, смейтесь - угораздило вот так вот на Аксе). Просто поверьте на слово - в проекте матёрые волки. Всё жёстко и по-взрослому. Заборем и эту багу, не в первый раз, просто она - свежак, только вот проявилась. И в аксе так постоянно - никогда ни в чём не уверен - то ли у тебя уже старческий маразм прёт, то ли IDE сошёл с ума, то ли нечёткий баг именно в твоём окружении БД... Слабо предсказуемый инструмент! Его надо доводить до ума, кропотливо, а не выбрасывать каждый год новые версии!

Уф... Пардон, накипело.

Раскапывать эту багу пока не будем. Своя подсистема аутентификации и авторизации. Баг не стоит остро. Просто сам факт, разговор-то шёл о багах! :-) Тем более пароль в Аксе mde - метод самовнушения, сносится с хедером файла, заголовком, 5-ю строчками ВБА кода. (Ну вот даже тут весь МС во всей красе!)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33508465
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, но тут не прозвучало про выгрузку в тхт файл и востановление из него.

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

Добрый вечер! :-)

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

Да фиг бы с ней, плюнули уже - записали в багтрек, присвоили статус "отложено"... Это даже не самый придурочный баг а2003 и нашего проекта! Думаю, потом как нибудь, случайно окажется, что что-то, где-то, совсем не имеющее отношение к Аксесу, надо было перепатчить, заменить на горячую, и в полнолуние перегрузить три раза, но только в среду. :-))

Это что! :-) Вон у нас начальник админов в мыле - у него винда падает на какой-то элементарной фигне, Микрософт суппорт долго сопел в трубку, потом выдал - "Да, проблема в нашем продукте..." и повесил трубку! :-))) Он теперь орёт - и чего мне теперь, повеситься в туалете? Юмор и Бизнес... Ведущий рубрики Вильям Гейтс Третий!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33508577
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у него винда падает на какой-то элементарной фигне, Микрософт суппорт долго сопел в трубку, потом выдал - "Да, проблема в нашем продукте..."

оффтоп
если это элементарная операця, то почему она не встречается у многих?
значит не все применяют это, (по своему незнанию, или не пониманию того с чем работают), поэтому и нет мелкомягких патча на ето.

что у самого таких случаев мало? 99 юзеров работают и нормально, придет один дотошный/косолапый в такую позцию прогу поставит (по логике его должно быть лучше, и ,если подумать, он прав) но 99 серых юзеров и не думали что-то использовать лучше, и не выловили твой баг.

в таких случаях мелкомягких ругать нада, чтоб форму не теряли, но и понимать их нада - все мы люди. плохо то, что персонал у нх носы слишком задрали...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33508613
Да безтолку их ругать. Где они, а где мы со своими проблемами. Монополия де факто, планетарного масштаба. А по поводу персонала, по моему это чисто российское явление. Кто из нас не сталкивался с неприятным поведением персонала, скажем в супермаркете?.. Да и не говорил я, что в суппорте МС носы задрали. Наоборот - всё очень корректно, 32 амерканских зуба! Просто - "зайдите как нибудь вчера..." во вполне вежливой, культурной форме. "Бэз прэтэнзий" (Золотой Телёнок). По форме - мёд, по сути - "пшёл нах..." просто вся их, кхм... заботливость... что ли... имеет вкус пластмассовой картошки с витрины...

- Вы тонете? Ой, как жаль... Простите пожалуйста, мы не можем вам ничем помочь, потому что все менеджеры спасательных кругов заняты! Потому что у нас спасательные круги не той системы! У нас нет таких спасательных кругов! Может в Редмонде есть? Спасибо за звонок. Ту-ту-ту...

З.Ы. Может я старомоден, но по мне лучше спец, который меня обложит, конечно, не без того, на руки кривые мне попеняет и т.п., но окажет мне реальную помощь, или попытается оказать, а не отделается вежливой отпиской. И в следующий раз я пойду к нему - ругай, руби, но помоги. А в "культурный офис" чего звонить-то? Лучше к психологу.

З.З.Ы. "Элементарная фигня" - это фигура речи такая, цитата. Может там не так всё и элементарно. :-))

З.З.З.Ы. А вообще, на месте модераторов, я бы потёр нафиг весь этот мусор, который я тут развёл. Оффтоп злостный. В dev/null !
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33508684
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну всё стирать не нада
тут есть чему поучиться, хотя бы подходам к решению глобальных проблем.
тут ругань мягких хоть и звучит громко, но конструктивно. и видно что люди приложили ум чтоб разобраться, а уж потом шумят
в 99% я встечался с теми кто знает меньше, а ругают мягких , так ....
начнешь разбираться - оказываются комп не включили, на клаву журал положили..., а шуму, шуму навели...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509346
Если кому интересно... :-)

Падения на откомментированном коде (чистый старт БД) при установленном пароле прекратились. Духи смилостивились.
Шаманили по одному и тому же кругу - экспорт, паки, хотфиксы, референсы и т.п. Сами не поняли почему, проект стал загружаться (уже что-то). Может, в референсах собака...

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

Т.е. пароль для клиента всё равно применить невозможно. Без пароля - всё как часы.
На сегодня больше новостей нет.

З.Ы. Тем кто читает этот тред и форум. Пожалуйста, учитывайте то, что форум, как правило, довольно кривое зеркало! Сюда люди не идут, когда всё работает или проблема в пределах досягаемости и опыта, знаний или ожидаемых реакций самой среды. Акс абсолютно нормальный инструмент! ПО сложное, многослойное, зависит от огромной кучи параметров и окружения. Да и где нет баг? И на солнце тоже есть баги. Да и с человеком - венцом творения, Господь тоже чего-то перемудрил, имхо... :-) Так что, делайте поправку на ветер! :-) Всем удачи и хороших проектов!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509356
авторНо это ещё не всё. :-)
Теперь падает при работе кода инициализации приложения. Т.е. не выбрасывает ошибку, если она вообще есть, (везде стоят обработчкики, а кто не может обработать самостоятельно - передаёт ошибку вверх по стеку вызова). Падение с выносом акса из процессов и письмом. (подозрение на хитропопо создаваемый экземпляр воркспейса, но это уже наши руки...)

как раз именно сегодня морщил репу примерно на эту тему.
сочинял текстовку то ли для фака, то ли еще для чего ненужного.

что бы посоветовал: каленым железом выжечь все методы классов, не имеющие собственные обработчики ошибок.
И в первую очередь методы, связанные с обработкой событий.
Т.Е. под страхом смертной казни не допускать в классах методов, передающих ошибку вверх по стеку вызова.

Посмотреть, что получится.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509425
2 глупыйглупый:

"Т.Е. под страхом смертной казни не допускать в классах методов, передающих ошибку вверх по стеку вызова."

Хм... Задумался...
Почешем и тут. Только это так удобно - иногда трапать стандартной пр-рой на верхушке стека и раскручивать вниз. (~40%) Всё равно вход в метод класса не происходит извне без обработчика! Т.о. во всём проекте 3-4 стандартных ловушки + вкусности - ошибка в лог, ракрутили переменные в лог, т.е. на дебаг-режиме это просто песня... Сия фича уже не раз экономила нервы и время на реальной эксплуатации - от заказчика ни бе, ни ме не добьёшься. Отказ от такого подхода повлечёт увеличение объёма кода ~20% на пустом месте и усложнение сопровождения...

Охо-хо... Вот и гадаю - как и рыбу съесть и на паровозе покататься.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509449
Прошу прощения за уточнение... Ну, чтобы была приблизительно ясна цена вопроса. Плюс ~20% это плюс ~7тыс.стр. кода. Для RAD объём чувствительный. А бюджет проекта уже ням-ням... :-(
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509596
вероятно я слишком эмоционально насчет "всех" методов класса высказался.

попробую уточниться.

Надо обратить специальное внимание на методы обработки событий вообще
и на функции обработки события Terminate в особенности.

1) про ошибки в процедурах событий
Пусть есть форма, в которой на кнопку повешен код

Код: plaintext
1.
2.
3.
Private Sub Кнопка1_Click()
   Dim k
   k =  5  \  0 
End Sub
пусть код процедуры обработки события загрузки фомы выглядит так:

Код: plaintext
1.
2.
Private Sub Form_Load()
    Кнопка1_Click
End Sub

Пусть у вас есть стартовая функция StartFunction, которая запускается в
макросе Autoexec
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Function StartFunction()
    On Error GoTo ErrorBlock
    DoCmd.OpenForm "Форма1", acNormal
    Exit Function
ErrorBlock:
MsgBox "была ошибка и мы ее перехватили:" & Err.Description
  Debug.Print Err.Number, Err.Description
End Function

Приблизительно с фразы
автор"ошибки обработки событий локализуются в процедурах обработки событий. Такие ошибки не передаются в вызывающую функцию, в частности в Sub Main приложения".
начинается всякая приличная книжка про VB.
(Свое внимание я лишь недавно на это обратил)

В Акцессе, в данном примере, если в процедуре обработки события открытия формы происходит (неперехваченная) ошибка, то информация об этой ошибке в любом случае не попадает в StartFunction.

В mdb-проекте среда остановит выполнение на ошибочной строке, предлагая исправить или обойти ошибку.
В mde-проекте такая ошибка просто "пропадет", возможно вызвав сброс переменных проекта. Но никакого перехвата в с возвратом в вызывающую функцию не будет.
Мораль проста - потенциальные ошибки в процедурах обработки событий должны обрабатываться в самих процедурах обработки событий.
Ответственность за такую процедуру без обработчика ошибок - на разработчике.

Есть еще один специальный случай - ошибки в специальных событиях класса
- Initialize и Terminate

Пусть есть в стандартном модуле

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub FirstSub()
    On Error GoTo ErrorBlock
    SecondSub
    Exit Sub
ErrorBlock:
  'тут хотим обрабатывать перехваченную во внутренностях ошибку
  Debug.Print Err.Number, Err.Description
End Sub 

пусть есть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub SecondSub()

    Dim MyObject As CMyClass
    Set MyObject = New CMyClass
    
    'MyObject.MyErrorProc
    MyObject.NormalProc
    
    Err.Raise vbObjectError +  54321 , , "My Terrible error"
    
End Sub

NormalProc - процедура в классе CMyClass - обычный метод, в которой не возникает ошибки.
MyObject.MyErrorProc - процедура в классе CMyClass (обычный метод), в которой возникает ошибка.


Привозникновении ошибки во второй процедуре, при выходе за ее границы экземпляр CMyClass подвергентся процедуре уничтожения.
Если в классе есть функция обработки события Terminate (Private Sub Class_Terminate() ), то она будет вызвана.

Если в этой функции нет источника для возникновения собственной ошибки, то информация об ошибке, возникшей в normalProc или, если код, как показано, закомментирован - в строке Err.Raise
передается в обработчик, установленный в FirstSub.

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

В моих экспериментах - Акцесс не падает - в мдб среда останавливается на сбойной строке (Проект переводится при этом в состояние невозможности сохранения изменений). В mde - возникает окно сообщения о сбое в работе макроса, но краха акцесса не происходит. (проверял в 2002м)
В любом случае на это место нужно обратить внимание, особенно если
- класс содержится в библиотечном проекте
или
- в классе присутствуют "внешние" члены - типа рекордсетов и т.п.
Возможно в сложных проектах это может быть одной из причин падений.

---------------------------------------------

Еще один момент. С обработкой ошибок не связанный.
Для 97го акцесса существовала техника "предварительной загрузки модулей",
когда в стартовой процедуре дергались публичные константы модуля. с целью его принудительной загрузки и исключения задержки при первом обращении
к функциям модуля.
Для последующих версий оно вроде как не актуально.
Но среди прочего, не понимая куда двигаться, может быть я и за эту нитку дернул бы...

-----------------------------------------------
кроме того, хорошо бы изолировать багосбойные места типа
- перевода составной формы из иконизированного состояния в развернутое
- перехода формы в принт-превью и назад (результат - сброс объекта формы с потерей состояния самописных членов класса)
- обрашение к вложенной подчиненной в табличном виде до е первого разворота

(и т.п.)
-----------------------------------------------
Удачи.

ЗЫ
Если что-то надыбается пригодное к рассказу - послушал бы с удовольствием и благодарностью.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509663
2 глупыйглупый:

Ух! Целая лекция! :-) Пошёл предметный разговор!

По сути вопроса.

Ситуаций, как "ошибки обработки событий локализуются в процедурах обработки событий. Такие ошибки не передаются в вызывающую функцию, в частности в Sub Main приложения" у нас нет принципиально. Т.е. ошибки обработчиков _событий_ по стеку не передаются. Есть работа с евентами нестандартных АктивИксов, проверим и их, может проморгали чего... Но тут может сработать закон подлости - на реальном проекте очень сложно что либо откручивать - замучаешься, не факт что прикрутишь назад, БагТрек и так не простаивает, а на тестовых примерах всё может работать без запинки.

"- в классе присутствуют "внешние" члены - типа рекордсетов и т.п."
Присутствуют, заразы, и в большом количестве. Поскольку, просто само просится обернуть конкретную запись в экземпляр класса (да ещё и не один - вложенный по принципу матрёшки), в динамическом рекордсете, со своими методами - исполнение кода методов выходит в стандартные модули, используя общие пр-ры, возвращается обратно, опять выходит - большая вложенность. Городить массивы и коллекции на этом непрактично. Именно эти возможности и есть - гимн Аксесу, за них его и люблю! Но много мин... впрочем, я уже как-то это писал.

В Class_ Initialize и Terminate в основном работают только счётчики объектов и освобождение ссылок на внутренние рекордсеты (!). Проверим. Но там есть одна хитрость... Фактически, инициализация класса происходит в специальном методе, встроенные недолюбливаю, бывают странности - "то возникает специальная ситуация, когда вновь возникшая ошибка скрывает информацию о предыдущей ошибке" - а вот над этим вообще задумался...

"При возникновении ошибки во второй процедуре, при выходе за ее границы экземпляр CMyClass подвергентся процедуре уничтожения." А вот это уже теплее - может падения Акса на объектах вызвано тем, что когда фактически рекурсия должна возвратиться в объект, объект уже сброшен или потерян Аксом, в результате какой-то нештатной ситуации. Т.е. вероятно Аксесовский интерпретатор просто передаёт управление на произвольный кусок памяти с мусором. (опять же это уже зона компетенции разработчиков Акса).

Собственно, обьясню, что я имел ввиду под обработкой ошибок в своём предыдущем посте. Извините, буду писать схематично, без деталей реализации.

1-я Ситуёвина. Классическая, академическая, в любом учебнике и екзамплах от МС. Я её описывать не буду - каждая пр-ра или ф-ция имеет свой обработчик, кучу строк кода, прямую реакцию на ошибку и т.п. Этот подход неудобен в реальных проектах, из-за большого кол-ва однотипного кода, копи-пасты, невозможностью повторного использования, рефакторинга и т.п. (много причин).

2-я Ситуёвина. Уже лучше. Применяется в реальной работе, в пр-рах, у которых обязаны быть явные обработчики. Но без недостатка 1-го метода.

Function BlaBla (...) As Long

On Error Goto err_no:
...
err_no:
Exit Sub '- штатный выход

err_yes:
Sys_ErrorHandlerA(ByRef BlaBla As Long, ...) 'стандартный обработчик ошибок проекта, тип А
...
End Sub

В данном случае ошибки перехватываются накоплением, но обработка и реакция, а так-же логирование и т.п., а так-же принятие решения переносится в стандартные трапы уровня проекта - и уже там ракручиваем стек. Именно таким методом у нас обрабатывается до 80% ошибок. Ситуация может усугибиться большой вложенностью, выходом из VBA в API, но штатно вызывающая пр-ра ВСЕГДА обязана передавать вверх, вместе с результатами своей работы и контрольные точки - номера ошибок или флаги FL_STOP, FL_TRAP, FL_ABORT... Это позволяет вызывающим пр-рам однозначно обрабатывать ситуацию.

3-я Ситуёвина. Вот как раз она вызывает у меня сомнения, но приносит реальную пользу в проекте, например, избавляя от обработки достаточно большого кол-ва тривиальных ситуаций, не требующих изощрённого траха.

Function BlaBla (...) as Long

On Error Goto err_no:
...
ExampleClass.Go '- метод класса, не имеющий обработчика
ExampleClass.End '- тоже
...

err_no:
Exit Sub '- штатный выход

err_yes:
BlaBla = Sys_ErrorHandlerB(...) 'стандартный обработчик ошибок проекта, тип B
...
End Sub

В этом случае ошибка внутри метода экземпляра класса, теоретически и практически (99%) возвращает ошибку внутрь вызывавшей пр-ры - и опять уходит на обработку в другую пр-ру, которая, блин, тоже может содержать свой обработчик. Сложнее с ситуациями, когда внутри метода класса код уходит в модули, вызывая стандартные методы, которые в свою очередь имеют глобальные обработчики, и в свою очередь могут вызывать методы классов, которые не имеют обработчиков, а могут возвратить ошибку в вызывающую и... см. мочало с начала... Т.е. вот тут-то и могут возникать штопорные рекурсии системных ловушек Sys_ErrorHandlerB, довольно муторные в отслеживании и понимании - и это главный недостаток такого подхода.

Уф... утомился... :-) К сожалению всё выше описанное к трабле с паролем имхо не имеет отношения, поскольку пр-ры инициализации входят в тот %% пр-р, имеющих собственные и безусловные перехваты ошибок. Вот в них-то как раз и загадка. Вместо выброса ошибки Аксес падает. :-( Локализуем.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509688
2 ТеньОтцаГамлета

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

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

в целом - сорри за оффтоп.


по содержанию последнего вашего поста -
Если вы раскручиваете стек через самописный связный список-стек, то и информация о текущей ошибке внятно привязывается к каждому текущему входу стека любым удобным образом.
Если вы как-то иначе раскручиваете стек вызовов, и это не военная тайна,
и нет внутреннего сопротивления - может поделитесь в отдельном топике
(я и вопрос могу задать по такому случаю - как, мол, мне до стека добраться настоящего, без прикручивания рядом своего ? :)) )
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33509690
глпглп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
типа уточнение:
Источники (точки) вызова при этом как правило находятся за пределами вба-кода.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33510089
2 глупыйглупый:

"Есть надежда, что этот текст все-равно для кого-нибудь будет полезен."
Реально полезен! :-) Не сомневайтесь!

"Если вы раскручиваете стек через самописный связный список-стек, то и информация о текущей ошибке внятно привязывается к каждому текущему входу стека любым удобным образом"
Именно, путь наименьшего сопротивления и наибольшего удобства.

"может поделитесь в отдельном топике"
Увы мне... Совсем нет времени писать, просто не до этого. Я больше читаю и больше по конкретным своим вопросам. А ору в форум тогда, когда уже прищимило и опухло! :-)

"Источники (точки) вызова при этом как правило находятся за пределами вба-кода"
Да можно ловить и там (да пребудет с вами СИла и API, или что-либо другое, имеющее на борту адресную арифметику)... Вопрос - зачем и кого тут хотеть перемудрить? MZ-Tools, например, имхо, именно так и поступает. Но вот код проекта Аксеса (не дай бог ещё и компилируемый налету) это такой фарш из нативного кода ОС, среды, Джета, интерпретатора байт кода и т.п... там жизни не хватит разобраться.
Но вообще-то, я лично, изначально, против таких методов - теряется цельность (красота что ли) пректа и в некоторых местах он становится похож на бред параноика... :-( Смешивать тёплое с квадратным - плюсы от таких подходов могут потеряться среди минусов. Если мне, как прикладнику, не дали в ВБА явно оперировать указателями и участками памяти (хитровыверты не в счёт), то это "жжж" неспроста!..

Всё имхо, ессно. :-) Удачи. Спасибо за участие.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33518344
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up (по запросам трудящих)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33538035
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот я собрал описание глюка.
компоненты: access 2003 sp2(rus), winxp sp2(eng) , 3dplanesoft screensaver(lostwtach)
какую нибудь форму с пустым источником данных делаем в adp проекте.
на открытие вешаем код, который к рекордсету формы присваивает рекордсет(локальная переменная) полученный на базе adodb.command.
после этого присвоения можно проверить recordsource у этой формы, и он будет выглядить типа {?= sptest (?,?) }
потом ставим запуск скринсейвера на 1 минуту и ждем...
дождались запуска, двигаем мышкой , кликаем в логин, входим в сеанс и получаем ошибку....типа "select * from {?= sptest (?,?) } такого источника нету"....
если, не получиться сделать так, то просто надо взять подчиненную форму.
еще особенность. можно сделать это с листбоксом. тада access при входе в сеанс после скринсейвера перезапросит его источник данных и слетит выбранный элемент.
глюк токо с 3dplanesoft screensaver (скринсейвер такой)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33587932
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот пост лучше бы назвать "глюки акцесс".

не знаю ни "как попал", ни "как выбрался". Но на прошлой неделе день был целиком потерян.

"Вдруг" (последовательность событий не отследил) стал глючить проект в одном из мдбюков в коде класса.

код в классе примерно такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private lngVar as Long
Private aR() as String ' Lbound=1 
...

Sub Add(Element as String)
...
    lngVar=lngVar+ 1 
    aR(lngVar)=Element
...
End Sub

Глюк проявился в том, что
при прохожденнии кода отладчиком после выполнения строки
lngVar=lngVar+1
значение lngVar отставалось равным нулю, а значение aR(lngVar) оставалось присвоенным внутри процедуры и сразу
терялось по завершении процедуры.
Последующее обращение к массиву в другом методе дает ошибку выхода за границы диапазона, а сам массив пустой. как будто его не заполняли.
При этом код вида lngVar=125 (конкретное значение) вполне нормально выполнялся.
в стандартых модулях - "все нормально".
Глюк касался конкретного проекта. В других "все путем".
Намучился я с этим до потери пульса. Как только ни тряс бубном.
и декомпайл тебе, и переменные местами поменять, и компилировать и сохранить, выйти и войти. Экспорт модуля, удаление, импорт из текстового файла. - Ноль эмоций.
Перезапуск кампутера - ничего конечно не дал.
Оно вроде дешевле в новый проект все импортировать. Но так задрало, что бился головой в эту стену до конечного одурения.

В какойто момент заметил, что при если держать мышиный курсор на "больной" строке, то, при подадании маркера позиции исполнения на эту строку видно, что значение присваивается и тут же теряется.
чума.
решил - щаз покурю и "разберу халабуду вдребезги...".
Что я сделал после покурить - я не запомнил. Какая-то очередная комбинация на тему сжать, выйти и войти, компилировать и сохранить.
После чего просто нажал F5 и оно сработало. Проект "вылечился".
Не хотел писать, потому что не знаю, как стабильно воспроизвести такую ситуацию. Как и не запомнил/не понял "лечащую" комбинацию.
Потом подумал - кажется, сам я все-таки наверно больше одного раза в такое попадал.
Может все-таки кто-нибудь скажет - "что это было", и как же с ним грамотно бороться.
акцесс 2002 сп3
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33587972
2 Victosha:

Эпиграф:
"Есть многое на свете, друг Горацио, что без пол-литры, хых, не разобрать..." (с) Кажется, С.Есенин.

Лирика:
Коллега, выпейте чаю с мёдом и сушками... :-) Отстранитесь на денёк от этой работы. Отдохните. Потом свежим взглядом в бой.

По сути вопроса:
Я вас понимаю... :-) Код очевидный до простоты. Глюк... Нда-с... Можно много чего гадать, всё равно кроме вас никто вердикт не вынесет, проект-то ваш и вам там всё виднее. К сожалению, чем больше и сложнее проект на Аксе, тем чаще проявляются "духи тундры". У любого аксессиста с опытом целый ворох таких историй. ПО сложное, многослойное, и понять кто там где (а главное - почему) глючит порою очень сложно. Как лечить такие глюки я и сам не знаю. Знаю только по личному опыту, что они имеют свойство накапливаться и жутко выбивают из рабочей колеи. И, кстати, потом как-то тихо сами собою сходят на нет, рассасываются... В общем - "верь, бойся, проси".

Гадание на:
1. Евенты для объекта содержащего данный код есть? Нет ли в них терминейта данного объекта?
2. Нет ли во время работы висящих классов таймеров (опять таки с кодом терминейта или работающе с данной переменной?)
3. Есть ли хитрый ватч экспершын? Или алиасы локальных переменных... Условная компилейшын? Чёрт знает...
33... (33 дурацких пункта прямого к делу отношения не имеющие)

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

З.Ы. Искренне сочувствую. Бывает. :-)

З.Ы.Ы. Просто поддержал, типа, морально. Всё равно импортируйте в новый проект весь код и проведите дефрагментацию и чистку всего рабочего компа. И реестра тоже. От греха... (тьфу 3 раза, по дереву, с левой ноги, и т.п. см. сборник народных рецептов)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33587973
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, что конкретно было и как конкретно с этим бороться.
Но повреждения компилированного VBA кода, увы, встречаются очень часто. И проявления этого бывают разные. Какое-то время назад я создал ярлык, запускающий Access с /Decompile. И очень активно им пользуюсь. Считаю, что это хорошо помогает избавиться от подобных проблем.


ЗЫ Извините, если я ответил не в тему. Еще не проснулся :-)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33587992
2 Serge Gavrilov:

Дык в том-то и беда, что не всегда декомпил форева! :-( Не думаю, что автор Victosha не знает об этом ключе.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33587996
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Victoshaзначение lngVar отставалось равным нулю, а значение aR(lngVar) оставалось присвоенным внутри процедуры и сразу
терялось по завершении процедуры.
Симптомы (почти) такие, как будто эти две переменных описаны дважды - один раз внутри процедуры и один раз вне. Тогда внутри процедуры происходят нужные действия с локальными переменными, а при выходе становятся видны внешние, у которых ничего не изменилось.

Victoshaи переменные местами поменять
Интересно, пробовал ли ты добавить в явном виде описание локальных переменных в процедуре, которое Аксессу примерещилось, а потом его убрать.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33588000
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТеньОтцаГамлета2 Serge Gavrilov:
...
Не думаю, что автор Victosha не знает об этом ключе.
Я и не подразумевал это. Я сказал лишь о том, что при написании кода я запускаю Access практически только с этим ключем. А не тогда, когда уже может и поздно.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33588010
2 Serge Gavrilov:

>Я и не подразумевал это.
А я и не подразумевал, что вы подразумевали... :-)) Не хотел задеть, извините.

>Access практически только с этим ключем.
Да я делаю почти так-же. Только реже - в конце дня сбрасываю последнюю сборку, перед копией в архив. И каждый раз думаю о том, что ДЕКОМПИЛ - деструктивный, недокументированный метод. Тот же Гетц, околомайкрософтовские гуру на забугорных форумах по Аксу, всегда ПРЕДУПРЕЖДАЮТ о том, что часто им пользоваться чревато... (тут невнятное бормотанине на 3 страницы)... Но я понимаю, что это - край, экстремальная медицина.

Глубокий офф-топ, рекурсивный:
Вот интересно, а если со следующим сервис-паком Акса, ключ /DECOMPILE без явного указания параметров -rX%123-CDE и -rY%DASF-OBANA будет просто форматировать винт программисту? :-)) Ну им ваапще удобно так, в микрософте...

2 Victosha:
А это мысль - попробвать совсем другие имена переменных и массива. Вдруг интерпретатору они не нравятся, по религиозным мотивам, всякое бывает...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33588039
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТеньОтцаГамлета2 Serge Gavrilov:

>Я и не подразумевал это.
А я и не подразумевал, что вы подразумевали... :-)) Не хотел задеть, извините.
Да вы меня и не задели, вам показалось :-)
ТеньОтцаГамлета...
И каждый раз думаю о том, что ДЕКОМПИЛ - деструктивный, недокументированный метод. Тот же Гетц, околомайкрософтовские гуру на забугорных форумах по Аксу, всегда ПРЕДУПРЕЖДАЮТ о том, что часто им пользоваться чревато... (тут невнятное бормотанине на 3 страницы)...
"Я не знаю, как там в Лондоне, я не была, может у них и собака друг человека, а у нас УПРАВДОМ друг человека" (с) "Бриллиантовая рука"

Не думаю, что запуск с decompile опаснее, чем просто запуск Access
По крайней мере по моему опыту, а он не очень маленький.
Происходит удаление записей с компилированным кодом из таблицы MSysAccessStorage (для формата 2002)
Многие стандартные действия зачастую оказываются гораздо опаснее недокументированных фичей.

ТеньОтцаГамлета
...
Вот интересно, а если со следующим сервис-паком Акса, ключ /DECOMPILE без явного указания параметров -rX%123-CDE и -rY%DASF-OBANA будет просто форматировать винт программисту? :-)) Ну им ваапще удобно так, в микрософте...
буду явно указывать параметры, если еще буду работать с Access
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33588058
2 Serge Gavrilov:
Лично у меня с декомпилом тоже пока не было никаких проблем (тьфу 3 раза... и всё такое). Однако, "ложки-то нашлись, но осадок остался" :-))

>Многие стандартные действия зачастую оказываются...
"Это точно..." (с) Красноармеец т.Сухов.

2 Victosha:
У меня был очень похожий глюк с глобальной переменной, ещё на А97 до SR2, году эдак в 98-м... Компилятор ругался на явно описанную переменную. Тоже не понял почему. Тоже бубен по кругу... Вылечил как? Обхохочитесь. Просто строчку с объявлением написал на одну строчку ниже! Заработало! Возвращаю на прежнее место - еггог в коде, переменная не обьявлена. Закомментил эту строчку русскими идиоматическими выражениями.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33588217
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПросто строчку с объявлением написал на одну строчку ниже!
это мы не раз проходили. как раз с 97го живой иногда бубун.
и на 2000м живой. на 2002м вроде не приходилось так сильно руками махать.

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

Это плохо. Это может и не "баги акцесс". Но отсутсвтие внятно документированного описания поведения проекта. Это раздражает.

Недавно натыкался где-то на информацию о том, что неправильная последовательность действий после /decompile может приводить проект в очумение. чего-там там сразу после декомпайл делать не рекомендуется. то-ли сжимать, то-ли копмилировать-сжимать. надо раздельно сделал одно. вышел-вошел, сделал другое.

Это, кажется, связано с еще и с переносом прокта из старшей версии (2003) в младшую (2000).
2003й сохраняет в проекте ссылку на свою библиотеку типов, с которой 2000й обойтись не может. надо типа на 2000м тот самый декомпайл и волшебную последовательность.
то-ли это статья на support.microsoft, то ли где-то в типах у кого-то. думал запомню. а сейчас найти не могу.

Кстати, фенечку про запуск пустого акцесса с опцией декомпайл я у Serge Gavrilov приметил. он относительно недавно в каком-то топике об этом говорил. Мне понравилось - удобная штука. я себе тоже такой ярлык завел. Спасибо.

Еще один для меня рядом лежащий для вопрос - переход mdb проекта в
состояние "контроля доступа". при программной работе с экзеплярами форм/отчетов и их свойствами.
Когда-то даже попадалось описание набора набора свойств формы, изменение которых должно к этому вести. Опять же - не сохранилось, а строить серию экспериментов я уже точно сил не найду. Впрочем, в условиях - "каждому по экземпляру интерфейса" - оно вроде только теоретический интерес.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33612835
дурачок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При печати формы, основанной на сохраненном запросе с опцией WITH OWNERACCESS OPTION;,
методом PrintOut для формирования данных в поле печати требуется наличие
прав на чтение для базовых таблиц запроса.

обсуждение здесь
http://www.sql.ru/forum/actualthread.aspx?tid=273355
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33634867
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
use pubs
create proc авторы
@ct as int
as
select * from authors where contract=@ct

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

также приложен adp проект. все сделано на базе pubs.

нужно открыть форма1
свернуть ее, развернуть ее.
и получим косяк.который никак не отловишь. а как обойти тоже идей нету.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33634875
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Косяк, подчиненные формы и таб бар.

обсуждения косяка постом выше по этой ссылке.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33657098
RoloTomasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALTER COLUMN
если поле NOT NULL запрос
Код: plaintext
ALTER TABLE [table] ALTER COLUMN [mid] INTEGER NULL;
сделает его nullable(NULL)
но если поле NULL
то запрос
Код: plaintext
ALTER TABLE [table] ALTER COLUMN [mid] INTEGER NOT NULL;
бесполезен.
Кто нить знает как побороть(DDL) не пересоздавая таблицу?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33657157
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RoloTomasiALTER COLUMN
если поле NOT NULL запрос
Код: plaintext
ALTER TABLE [table] ALTER COLUMN [mid] INTEGER NULL;
сделает его nullable(NULL)
но если поле NULL
то запрос
Код: plaintext
ALTER TABLE [table] ALTER COLUMN [mid] INTEGER NOT NULL;
бесполезен.
Кто нить знает как побороть(DDL) не пересоздавая таблицу?
Вы не перепутали? У меня результат противоположен вашему (Access 2002, mdb).
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33657692
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Gavrilov Вы не перепутали? У меня результат противоположен вашему (Access 2002, mdb).+1 (2000, mdb) (NOT NULL работает, NULL - нет)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #33657838
RoloTomasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovВы не перепутали? У меня результат противоположен вашему (Access 2002, mdb).
Так и есть
Исправленая версия
ALTER COLUMN
если поле NULL запрос
Код: plaintext
ALTER TABLE [table] ALTER COLUMN [mid] INTEGER NOT NULL;
сделает его not nullable(NOT NULL)
но если поле NOT NULL, то запрос
Код: plaintext
ALTER TABLE [table] ALTER COLUMN [mid] INTEGER NULL;
не работает.
Т.е. NULL->NOT NULL работает а обратно нет.
Кто нить знает как побороть(DDL) не пересоздавая таблицу?
Пока только
-создание временого(идентичного нужног поля)
-перенос данных из переопределяемого
-переименование временого и удаление старого
-ну и манипуляции с констрейнтами.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34124194
забавная бага 97 аксесса
1. есть запрос (табличек 5-7, да плюс один сохраненный запрос, усе провязаныя INNER джойнами).
2. получен преобразованием базы пердыдущей версии, не правился (руками).
3. возвращает некоторое количество данных (при открытой соотвествующей форме - т.е. заданных значениях параметров).

4. Заменяем одну из связей на LEFT джойн - записи не возвращаются.
5. даже не заменяя - копирую текст в пустой бланк - записи не возвращаются (начинаю вспоминать про "фичи" типа х-прод-джойна, и тихо сходить с ума)
6. тады просто шевелю одну связь в конструкторе мышом, ничего больше не меняя - записи перестают возвращаться.

7. на нн-ые сутки замечаю, что связь между двумя табличками (вернее - 2-мя экземплярами одной таблички) и в конструкторе и в тексте не та, которая должна быть, т.е. не та, "которая возвращает записи". (а зеркальная - там типо дерево). (и, собсно, не та, что осталась в предыдущей версии).


Получаица, что если не трогать "неправильно" сохраненный по какой-то причине запрос, он выполняется "правильно". как аксесс умудрился перевернуть связь в тексте (бланке) запроса, при этом сохранив где-то унутре праильный "откомпилированный запрос", который видимо и выполнялся, пока его не потревожишь руками - непнятна.
такие дела.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34430056
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в модуле класса объявлена переменная c withevents и строка с объявлением переменной находится в блоке условной компиляции, то такой проект нельзя декомпилировать - Access валится. Обнаружено на Access 2002. Пример приложен.

зы Под декомпиляцией понимается открытие базы в ms access, запущенного с параметром /decompile
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34430217
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovЕсли в модуле класса объявлена переменная c withevents и строка с объявлением переменной находится в блоке условной компиляции, то такой проект нельзя декомпилировать - Access валится. Обнаружено на Access 2002. Пример приложен.

зы Под декомпиляцией понимается открытие базы в ms access, запущенного с параметром /decompile

нашел обсуждение 2003 года.
http://groups.google.ru/group/comp.databases.ms-access/browse_thread/thread/a158f90d3308237b/a6b8654fafa52993%23a6b8654fafa52993

там говорится, что для краха достаточно иметь просто объявление константы условной компиляции в одном модуле с объявленной переменной с событиями.
#Const a = 1
Private WithEvents b as TextBox
(проверил в а2002 - падает при при декомпиляции)

упоминается и вышеописанная проблема.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34430765
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victoshaнашел обсуждение 2003 года.
http://groups.google.ru/group/comp.databases.ms-access/browse_thread/thread/a158f90d3308237b/a6b8654fafa52993%23a6b8654fafa52993

там говорится, что для краха достаточно иметь просто объявление константы условной компиляции в одном модуле с объявленной переменной с событиями.
#Const a = 1
Private WithEvents b as TextBox
(проверил в а2002 - падает при при декомпиляции)

упоминается и вышеописанная проблема.
Я достаточно долго искал причину в большом проекте. :-(
Интересно что, если в модуле с withevents в другом месте используются блоки условной компиляции, то декомпиляция проходит без проблем.
Access 2003 SP2 тоже валится, но тихо, по английски.
Исправлять баги ms не спешит и теперь уже данный баг вряд ли поправит.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34430842
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victoshaнашел обсуждение 2003 года.
Спасибо.
Непонятно почему Peter Miller утверждает, что
Peter Miller - Access XP doesn't have this problem, nor does Access 97.
Может он хотел сказать, что нет проблемы в БД формата 2002. Надо будет проверить.

Далее Peter Miller пишет:
Peter MillerThe situation you describe is essentially the same situation. The
problem depends upon the presence of both (a) condition compilation
arguments and (b) an object variable declaration using withevents.

Your example includes the object variable declaration within the
conditional variable if-then statement, but if you shift the
declaration of frm outside the if-then statement, you'll see the
decompile crash still occurs...
Это не совсем так (а может я неправильно понял). Крэш произойдет в том случае, если блок условной компиляции тоже находится в разделе описаний модуля. Если же этот блок находится в другом месте, то это не приведет к крэшу. Например такой код будет нормально декомпилироваться:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Option Compare Database
Option Explicit

Public WithEvents frm As Form

#If anyone = - 1  Then
Sub a()
    MsgBox "a"
End Sub

#End If
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34431621
Мшсещырф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторМожет он хотел сказать, что нет проблемы в БД формата 2002. Надо будет проверить.
это я проверил первым делом. проблема есть. формат дела не меняет.
единственный вариант, когда "проблемы нет" - это когда константа условной компиляции заявляется не в модуле, а в свойствах (параметрах запуска) vba-проекта.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34431650
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мшсещырф авторМожет он хотел сказать, что нет проблемы в БД формата 2002. Надо будет проверить.
это я проверил первым делом. проблема есть. формат дела не меняет.
Спасибо, я так и предполагал, было бы странно, если бы менял.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34779222
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2007

Код: plaintext
Application.ConvertAccessProject SourceFile, DestinationFile, acFileFormatAccess2007

Если SourceFile имеет формат 2002-2003 (acFileFormatAccess2002), то ошибка 3078:
Код: plaintext
The MS Office Access database engine cannot find the input table or query MsysAccessObjects.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34823421
Фотография garvy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баг - не баг, просто наблюдение:
Файл проекта ADP с установленной опцией сжимать перед закрытием совершенно не сжимается в ACCESS 2003 и жмется как милый при открытии в ACCESS XP
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34871435
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Сегодня снова наткнулся на баг, который был еще черт знает когда и даже в 2003 не исправлен. Вот код, который надо написать в отчете:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Private Type str_PRTMIP
    strRGB As String *  28 
End Type
Private Type type_PRTMIP
    intLeftMargin As Integer
    intTopMargin As Integer
    intRightMargin As Integer
    intBotMargin As Integer
    intDataOnly As Integer
    intWidth As Integer
    intHeight As Integer
    intDefaultSize As Integer
    intColumns As Integer
    intColumnSpacing As Integer
    intRowSpacing As Integer
    intItemLayout As Integer
    intFastPrint As Integer
    intDatasheet As Integer
End Type

Private Sub Report_Page()
XXX
End Sub

Private Sub XXX()

Dim PrtMipString As str_PRTMIP, PM As type_PRTMIP

PrtMipString.strRGB = Me.PrtMip
LSet PM = PrtMipString
Debug.Print "t " & PM.intTopMargin
Debug.Print "b " & PM.intBotMargin
Debug.Print "r " & PM.intRightMargin
Debug.Print "l " & PM.intLeftMargin

End Sub

И при этом оказывается, что intRightMargin соответствует не правому полю, а верхнему.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #34883651
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу упомянуть об ошибках при сохранении форм в *.adp. встречал два типа ошибок.
1. Форма сохранена в неверном формате
2. Недостаточно памяти для открытия
При обоих ошибках форме приходит ПОЛНЫЙ трендец..ни дикомпиляция,ю ни перенос формы в другой рпоект..вобще ничег оне помогает..форму можно смело удалять.
это проявляется достаточно регулярно в 2003 аксе хотя работая в 2007 тьфу тьфу такого не наблюдал пока.. бум надеятся что в SP3 для 2003 офиса это исправили, хотя сильно сомневаюсь
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555443
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баг?
Если в главной форме выбрать несколько записей, то обращение к свойству Form контрола подчиненной формы вызывает ошибку.
Пример прилагается.

1. На форме Suppliers щелкнуть по области выделения записи (или меню Edit - Select Record).
2. Нажать клавишу Shift и кликнуть несколько раз по стрелке влево (выбрать записи).
3. Нажать кнопку
Ошибка 2455 "You entered an expression that has an invalid reference to the property Form/Report."
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555454
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovБаг?
Если в главной форме выбрать несколько записей, то обращение к свойству Form контрола подчиненной формы вызывает ошибку.
Пример прилагается.

1. На форме Suppliers щелкнуть по области выделения записи (или меню Edit - Select Record).
2. Нажать клавишу Shift и кликнуть несколько раз по стрелке влево (выбрать записи).
3. Нажать кнопку
Ошибка 2455 "You entered an expression that has an invalid reference to the property Form/Report."
Нет ошибки. В 2003 нет и в 2007 нет. Все по рецепту, но не вышло. Мессаджбокс выскакивает и все.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555490
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access XP (без SP)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555495
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_worldНет ошибки. В 2003 нет и в 2007 нет. Все по рецепту, но не вышло. Мессаджбокс выскакивает и все.
Я баг репорт получил от пользователя в другой стране.
Проверил у себя на нескольких компах и разных Access (2002,2003). Эффект есть.
Вы shift когда отпустили? После того как выбрали записи?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555506
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбирал и мышкой и с шифтом. Шифт отпускаю после выбора. Ради эксперимента и кнопку нажимал с шифтом. И в каждой записи по отдельности нажимал шифт. Не могу выйти на описаный эффект.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555511
Фотография Александра-Александра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня вообще странно... В подчиненной форме вместо букв какая-то абракадабра... Или, кажется, какой-то из арт-шрифтов из моей системы...
Попробовала изменить шрифт - никакого эффекта...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555512
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп. Я кажется понял. Вы предлагали выбрать в главной форме, а я выбирал в субформе. Если в главной, то ошибка выходит. Точно по описанному сценарию.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555513
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баг пропадает если форму вынести из области данных :/ в заголовок формы например :/
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555517
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KrukVNБаг пропадает если форму вынести из области данных :/ в заголовок формы например :/
спасибо, интересно...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555518
Фотография Александра-Александра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да... кроме того, ошибка выскакивает... (А2003)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555521
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще. Если форму с подчиненной в области данных попытаться вывести в ленточном режиме, то microsoft вываливает мессагу как на картинке
а если подчиненная находится в заголовке например, то все окк. т.е. вероятно такое поведение следует рассматривать не как баг, а как ограничение. так наверное
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555543
Serge GavrilovБаг?
...
Ошибка 2455 "You entered an expression that has an invalid reference to the property Form/Report."

еще одно наблюдение.
в момент воспроизведения ошибки
методы объекта Screen - ActiveForm и ActiveControl дают ошибку.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35555698
xbz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще можно попробовать снимать выделение переводом фокуса в одно из полей, логика понятна, вы выделяете шифтом несколько записей в главной форме через шифт, а затем пытаетесь открыть форму месаджбокс с именем формы продуктов, собственно для него не понятно про какое имя идет реч, из первой выделеной записи или из второй. короче даже не ограничение а нарушение логики работы акса
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35556100
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xbzеще можно попробовать снимать выделение переводом фокуса в одно из полей, логика понятна, вы выделяете шифтом несколько записей в главной форме через шифт, а затем пытаетесь открыть форму месаджбокс с именем формы продуктов, собственно для него не понятно про какое имя идет реч, из первой выделеной записи или из второй. короче даже не ограничение а нарушение логики работы акса
не вижу никакого нарушения логики работы.
Если же следовать вашей логике, то Access вообще при этом не должен показывать никаких значений в полях подчиненной формы. Но он их показывает.
К тому же все нормально работает, если подчиненная форма находится, например, в заголовке главной формы.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656023
Guest33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баг?
А2003 SP2
Долго и кропотливо делаешь Union-запрос, без сохранения выводишь в режим таблицы, потов в режим предварительного просмотра...Потом случайно нажимаешь Вид->Конструкор (Вид->SQL при этом недоступен!) ... и получаешь пустой бланк запроса.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656078
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest33Баг?
А2003 SP2
Долго и кропотливо делаешь Union-запрос, без сохранения выводишь в режим таблицы, потов в режим предварительного просмотра...Потом случайно нажимаешь Вид->Конструкор (Вид->SQL при этом недоступен!) ... и получаешь пустой бланк запроса.

У запроса нет режима предварительного просмотра. Такое есть у отчета и у страницы доступа к данным.

Запрос с Union никакими силами, по крайней мере в аксе 2003, не перевести в конструктор. Только скл-представление, конструктор не поддерживает объединение

Непонятно, о чем речь вообще?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656163
Guest33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MDS-World! А Вы попробуйте!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656177
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656208
Guest33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала предварительный просмотр, см. внимательно картинку 1, там запрос в режиме Previw
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656224
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest33Сначала предварительный просмотр, см. внимательно картинку 1, там запрос в режиме Previw
Не получается! Выходит на SQL. И никак его по-другому не заставить. Хотя, действительно, активна только кнопка Конструктор. И понятно почему - это же фактически отчет.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35656232
Guest33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам повезло, а у меня получилось сегодня на работе и уже дома, когда показывал картинки...
(A2003 11.6566.6568 SP2)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35766524
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание проблемы:
Acc XP, 2003; ADP, SQL-2005.
Имеется форма (справочник не-важно-чего). Ходим по табличной части (ленточная подформа), под которой лежит набор вкладок, на одной из которых находится подформа для редактирования одной записи справочника (обновляется по Form_Current ленточной формы).

В подформе одной записи в дизайнере установлено AllowAdditions = False, однако после обновления выборки (а она делается изменением рекордсета этой формы, так, как показано ниже), AllowAdditions слетает, т.е. подформу можно колесом мыши поставить на добавляемую запись и попытаться там что-то ввести.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    ' Эта ф-я выполняет запрос с параметрами и возвращает экземпляр ADODB.Recordset
    Set Me.Recordset = sqlExecText2("SELECT * FROM dbo.Клиенты where ID = @klID", _
                "@klID int", Array(ParentForm.CurrentID), adLockOptimistic)

    ' Здесь слетает значение свойства Me.AllowAdditions
    ' Следующую строчку пришлось написать, чтобы от бага избавиться.
    Me.AllowAdditions = False

Как видно из кода, баг обходится легко (просто возвращением на место значения AllowAdditions), так что этот пост - просто для информации форумчанам-коллегам.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35920225
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2007
CurrentObjectType возвращает -1 в случае, если в панели навигации выбрать прилинкованную MS SQL таблицу.
Если таблицу открыть, то возвращает правильное значение 0.
В 2003 все было нормально.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35920374
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и боян, но я не нашел думаю скорее фитча чем баг
Office XP SP3
На формах используются элементы управления на разные события которых "повешаны" самописные Public функции. В конструкторе формы данное выражение выглядит так:
=fncProstoMoyaFunction(1;2;3)
То есть символами разделителями араметров(аргументов) для конструктора является ";"
После редактировании функции в стандартных модулях(!!!), а именно - добавления нового параметра - fncProstoMoyaFunction(Param1,Param2,Param3,Param4), при открытии формы в режиме конструктора вызов данной функции меняется с =fncProstoMoyaFunction(1;2;3) на =fncProstoMoyaFunction(1,2,3). Если много параметров - очень неудобно перебивать "," на ";"!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35920424
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovAccess 2007
CurrentObjectType возвращает -1 в случае, если в панели навигации выбрать прилинкованную MS SQL таблицу.
Если таблицу открыть, то возвращает правильное значение 0.
В 2003 все было нормально.

Странно. Вроде CurrentObjectType возвращает все согласно документации.

Name Value Description
acDefault -1
acDiagram 8 Database Diagram (Microsoft Access project (Microsoft Access project: An Access file that connects to a Microsoft SQL Server database and is used to create client/server applications. A project file doesn't contain any data or data-definition-based objects such as tables and views.))
acForm 2 Form
acFunction 10 Function
acMacro 4 Macro
acModule 5 Module
acQuery 1 Query
acReport 3 Report
acServerView 7 Server View
acStoredProcedure 9 Stored Procedure (Microsoft Access project (Microsoft Access project: An Access file that connects to a Microsoft SQL Server database and is used to create client/server applications. A project file doesn't contain any data or data-definition-based objects such as tables and views.))
acTable 0 Table
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921206
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа ИгорьSerge GavrilovAccess 2007
CurrentObjectType возвращает -1 в случае, если в панели навигации выбрать прилинкованную MS SQL таблицу.
Если таблицу открыть, то возвращает правильное значение 0.
В 2003 все было нормально.

Странно. Вроде CurrentObjectType возвращает все согласно документации.

Должен, но не возвращает (по крайней мере у меня в Access 2007 SP1).
Поэтому я и поместил эту иформацию в данном топике.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921219
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovДолжен, но не возвращает (по крайней мере у меня в Access 2007 SP1).
Поэтому я и поместил эту иформацию в данном топике.

Так нет в документации в перечислении разбивки на линкованую и простую таблицы.

Т.е. для всех таблиц возвращает 0.

У меня так и происходит.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921320
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа Игорь,
внимательно посмотрите, я говорил о таблице с SQL сервера. Для таблицы прилинкованной с другого mdb файла все нормально. Глюк проявляется в Access 2007.

То, что есть в документации я знаю.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921394
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovПапа Игорь,
внимательно посмотрите, я говорил о таблице с SQL сервера. Для таблицы прилинкованной с другого mdb файла все нормально. Глюк проявляется в Access 2007.
То, что есть в документации я знаю.

Вот, что возвращает при закрытой и открытой таблице с SQL сервера :

?CurrentObjectType
0
0

Может гремлины?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921406
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа ИгорьВот, что возвращает при закрытой и открытой таблице с SQL сервера :


Сборка.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921431
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа Игорь,

баг я обнаружил после получения рекламации от пользователя.
Т.е. это не локальный эффект.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #35921456
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovПапа Игорь,

баг я обнаружил после получения рекламации от пользователя.
Т.е. это не локальный эффект.

Проверил.

Да, в таком виде имеет место быть. С сервером да, а, например с Excel нет.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36254306
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попал в западню... Доигрался с обработкой события Form_Load в форме, которая параметрами запуска Акса установлена на открытие файла (mdb). Проблема была в том, что я допустил в коде ошибку, но, видимо, Debuger включается не сразу и не в состоянии тормознуть ошибочный код. Все просто тупо повисает... Создаваемая при ошибке рез.копия тоже не спасает, ибо там тоже эта злосчастная форма стоит на загрузке...
http://www.sql.ru/forum/actualthread.aspx?tid=703885
P.S. аккуратнее расписывайте формы, стоящие в автозагрузке при открытии...;);)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36255312
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, вопрос. Является ли багом выполнение бесконечного цикла, вводящего Аксесс в ступор?
По-видимому, не является, поскольку Аксесс честно выполняет инструкции. Однако, со стороны удобства использования это баг, поскольку Аксесс не предоставляет возможности безболезненно снять задачу без повреждения базы.

Ну что ж, вот сегодняшняя задача для разминки мозгов № 7 про длительные вычисления.

В кабинете под табличкой "Сомов С.С." сидит толстый дяденька с усами. Он пьёт колу и не думает ни о чём. В 10 часов утра к нему заходит начальник и просит сделать несложный расчёт. На листке написана задача для школьника 8 класса.
"Какая цифра будет стоять на 500000-м месте, если выписать подряд все целые числа, начиная с единицы? И, кстати, сколько времени потребуется, чтобы добраться до этой цифры, если на выписывание одной цифры уходит одна секунда?"
Насколько быстро сосчитает Сомов ответ, если каждое действие он будет делать со скоростью 1 цифра в секунду?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36255338
Фотография Рремешок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CoolMind,

хм.. а ctrl+break не срабатывает ?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36255384
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рремешок, у меня обычно срабатывает... Но тоже не 100%.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36255468
Фотография Рремешок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гы.. тогда вопрос должен звучать так.

можно ли на Access написать программу, которую сам Access не сможет обработать.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36255809
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рремешок,
нет, Ctrl+Break - это первое, что пришло мне в голову. Выручил Shift!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36525693
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access2002. ADP
Есть форма с заголовком, областью данных и примечанием (F0).
В области данных - подчинённая - ленточная форма(F1).
Если в примечании главной формы поместить ещё одну подчинённую форму(F2), то в контекстном меню формы F1 становится неактивным пункт "Удалить фильтр".
При перенесении контрола с подчинённой формой F2 из примечания главной формы в заголовок главной формы - пункт "Удалить фильтр" конткестного меню формы F1 опять становится активным
Тестировал не очень детально, но пока сложилось вот такое устойчивое впечатление.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36536348
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2003SP3 .adp SQL SRV 2005

Уже сто лет пользуюсь Resync. Удобно, много всяких нестандартных вещей можно сделать. Но вот с составным ключем не доводилось производить Resync. А тут пришлось. Полезли ошибки.

Читаю хелп:

The ResyncCommand property is a string expression representing a SQL statement or stored procedure that is parameterized by the key columns from the Unique Table in the output cursor, using ? as parameter markers.

You can set this property by using the property sheet or Visual Basic.

The parameters must match in number and ordering to the set of key columns for the table identified by the UniqueTable property. The purpose of the ResyncCommand property is to pull in the "fixed up" values of a row in a recordset after an update has been made, including an update to a join column.

Есть таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE [dbo].[DriverSaldoPoint](
	[Dt] [datetime] NOT NULL,
	[DriverInd] [int] NOT NULL,
	[PlanSaldo] [numeric]( 15 ,  2 ) NOT NULL,
	[BookSaldo] [numeric]( 15 ,  2 ) NOT NULL,
	[DtRes] [datetime] NOT NULL,
 CONSTRAINT [PK_DriverSaldoPoint] PRIMARY KEY CLUSTERED 
(
	[Dt] ASC,
	[DriverInd] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

эта таблица объявлена UniqueTable в форме.
Есть хранимая процедура:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER proc [dbo].[hpDriversSaldoPointSync](@Dt datetime,@DriverInd int) 
as
begin
	set nocount on
	select
		S.DriverInd,
		D.FIO,
		D.NomStr,
		S.Dt,
		S.DtRes,
		S.PlanSaldo,
		S.BookSaldo
	from dbo.DriverSaldoPoint S
	inner join dbo.Drivers D on D.Ind=S.DriverInd
	Where S.Dt=@Dt and S.DriverInd=@DriverInd
end

Ключ таблицы (Dt datetime,DriverInd int)
строка синхронизации ResyncCommand:
Код: plaintext
exec dbo.hpDriversSaldoPointSync ?,?


Делаю Form.Recordset.Resync
Смотрю в профайлере:
exec sp_executesql N'exec dbo.hpDriversSaldoPointSync @P1,@P2', N'@P1 int,@P2 datetime' ,252,'2010-02-01 00:00:00:000'

То есть The parameters must match in ... ordering to the set of key columns но только по факту в обратном порядке!
Процедуру переписать невпадло, но осадок остался...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36707911
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот мне встречалась в Аксессе 2003 несколько раз ситуация:

На форме есть число типа Double. Назовём это число Остаток. Например 5182.456

С субформе (на этой же форме) есть колонка чисел - тоже тип Double. Назовём его Расход. Например 5182.456

Видно что числа равны. Остаток - Расход должен быть НОЛЬ.

Но почему то вместо нуля появляется результат, например 0,14256899. И так далее.

Откуда этот хвостик?


Эту ситуацию на конкретном примере хотел обсудить на форуме.

Пока просто пишу, что такое было. И не смог понять почему.

Может кто встречался с такой проблемой?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36707923
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo,

проблема старше мира. Храните остатки в полях типа Currency (Денежный). Это специальный целый тип. А в полях с плавающей точкой (Double, Simple) не гарантируется точность.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36707962
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Понял. Не знал даже. А где про это поподробнее почитать? В хелпе?

Или это есть в FAQе?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708027
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может лучше оставить Double?

Но при это указать фиксированную точность DecimalPlaces = 3.

У меня объём в кубических метрах.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708034
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот отюда совет Бенедикта:

http://sql.ru/forum/actualthread.aspx?tid=335035&hl=currency#3099388
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708425
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
NeboИли это есть в FAQе?
Есть.
http://www.sql.ru/faq/faq_topic.aspx?fid=213
вопрос 19, ответ 1.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708544
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Спасибо!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708603
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeboА может лучше оставить Double?

Но при это указать фиксированную точность DecimalPlaces = 3.

У меня объём в кубических метрах.
Nebo, рассчитывать надо по заданному алгоритму. Это другой вопрос. Но хранить то, что потом требуется сравнивать, надо в типе данных с фиксированной точностью.

Ну, а DecimalPlaces или Round это уже вообще вопрос интерфейса пользователя.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708643
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,


авторNebo, рассчитывать надо по заданному алгоритму. Это другой вопрос. Но хранить то, что потом требуется сравнивать, надо в типе данных с фиксированной точностью.

Короче всё таки Current ? Да ?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708648
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь.

Currency (Денежный) ???
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708730
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeboИзвиняюсь.

Currency (Денежный) ???Да. Но для промежуточных вычислений в Currency, действительно, может не хватить точности. Там надо Double. Или же, как писал Бенедикт в топике по вашей ссылке, договориваться о точности изначально. Тогда сравнение с образцом будет не на точное совпадение, а на попадание в заданый интервал.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708798
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Понял. Спасибо.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708858
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo, всю 10 страницу можно удалить :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36708931
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CoolMind,

:)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36709001
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Прочитал в справке про Масштабируемое целое от
–922 337 203 685 477,5808 до 922 337 203 685 477,5807.

***
Денежные поля удобны для проведения расчетов с денежными значениями или для вычислений с фиксированной точкой, в которых требуется высокая точность. В полях этого типа сохраняются числа, содержащие до 15 знаков в целой части и до 4 знаков в дробной. В Visual Basic для этого типа используется символ описания @.
***

mds_world, а как в деталях происходит отнимание 5182.456 - 5182.456 ?

По какому алгоритму? Что здесь является целым? Часть числа слева до точки? Часть числа справа после точки. или всё это число умножается на 10000 (чтобы стать целым) перед любой операцией над этим числом.
Тут мне конечно непонятно. Так то вроде как 5182.456 дробное число.
Но объявляется масштабируемым целым (currency).
Я многие вещи просто не знаю.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36709119
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo,

Currency и есть целое. Но при отображении и операциях с ним десятичная точка смещена на 4 знака.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36709310
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Понял. Спасибо. Просветили насчёт Currency:)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36709312
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CoolMindNebo, всю 10 страницу можно удалить :)
+1
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #36709313
Фотография Ёжик`
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Источник данных для подчиненной формы exec dbo.MySp @Param1 работает,
а вот exec dbo.MySp @Param1, @Param2, @Param3 вышибает акс 2010 с фатальной ошибкой.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37190728
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Alexus12оригинал: http://allenbrowne.com/NoYesNo.html

кратко:
а) поле YesNo не способно принять значение NULL
б) в outer join запросе возможно получение NULL в таком поле, на что JET реагирует крахом

предлагаю включить в FAQ
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37191092
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычAlexus12оригинал: http://allenbrowne.com/NoYesNo.html

кратко:
а) поле YesNo не способно принять значение NULL
б) в outer join запросе возможно получение NULL в таком поле, на что JET реагирует крахом

предлагаю включить в FAQ

Протестировал. Попробовал и Right Join, и Left Join. Никакого аварийного завершения не заметил. По крайнем мере у меня А2003. Видимо та статья была про А2000. В той версии может быть это и был баг. :(
Если у автора есть "аварийная версия" запроса, то хотел бы посмотреть.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37191474
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studieren, если бы мы разбирали каждый случай вылета запроса в каждой версии, на обычную работу у нас бы не оставалось времени. Может, ну их в баню, эти реализации, отходящие от стандарта?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37191492
Breathman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, может это ситуация и обычная, но недавно столкнулся с тем, что после удаления формы остался ее модуль, и он постоянно выдавал ошибку. Попытка удалить его или текст приводили к краху. Создал пустую форму с тем же именем, выше-зашел, удалил модуль, удалил форму-все заработало.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37193571
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если поставить галочку "Синтаксис для SQL Server (ANSI 92)" и попробовать создать запрос вот с таким текстом, то Access не будет ругаться, но зато с крахом будет закрываться!
Код: plaintext
Execute Запрос1
По крайнем мере в А2003 и в А2007 так происходит всегда!

А вот в ADODB этот же текст будет нормально работать.
Код: plaintext
?CurrentProject.Connection.Execute("Execute Запрос1").Fields( 0 ).Value
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37193633
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и велосипед конечно. На двух разных машинах где стоит 2003 ACS (SP3) столкнулся с такой вещью.

Если (на рабочем столе к примеру) из контекстного меню создать новую базу MS office ACCESS - и в ней форму с модулем, то при последующем закрытии и открытии этого файла модуль формы уничтожается.

Однако если просто открыть MS ACCESS и создать новую базу, то все OK.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37193691
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALEXIS_22,

Не правда!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37195056
полином
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычAlexus12оригинал: http://allenbrowne.com/NoYesNo.html

кратко:
а) поле YesNo не способно принять значение NULL
б) в outer join запросе возможно получение NULL в таком поле, на что JET реагирует крахом

предлагаю включить в FAQ

я бы предложил пока убрать этот пост из топека про баги.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37197307
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alvkALEXIS_22,

Не правда!

Прошу прощения за неточность изложения. Я должен был указать что этот момент возникает у меня на некоторых отдельных взятых машинах (это правда), но причины этой кривизны очевидно не являются собственно багом MS ACCESS.

Так что еще раз приношу извинения за свою неточность и афктический offtop.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374296
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неожиданный и непонятный баг. Access 2003, СП2

Группа переключателей на вкладке. Если выбран BackStyle (Тип фона) Прозрачный (Transparent), то группа блокируется полностью после первого нажатия. Выходит из комы только при фокусе на любое поле вне группы. И опять все по новой.

Если тип BackStyle обычный, то все нормально.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374311
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

уже давно SP3 есть....
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374318
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alvk,

у вас SP3? Попробуйте создать ситуацию.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374592
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Не получается, и вкладке делал тип фона прозрачный и группе переключптелей, всё работает. Может через модуль надо?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374678
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация оказалась еще хитрее. Баг выявляется в том случае, если в площади группы есть комбобокс. И тогда у группы и этого комбо начинается удушье. Выполняется только один раз. Чтобы воскресить надо стукнуть по любому контролу вне группы.

Но если задать тип фона "Прозрачный", то все нормально, все оживает. Чудеса...

alvk, прилагаю ваш же пример
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374740
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Да, чудеса, конечно элементов уже много, возможно в этом дело.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374787
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world Баг выявляется в том случае, если в площади группы есть комбобокс
... уточню... баг выявляется в том случае, если в площади группы есть вообще любой другой контрол (текстбокс, баттон, надпись и т.д.)
... предположение в чем может быть причина... так как эти инородные предметы в группе находятся перед самой группой, то после первого клика группа уходит на задний план... но это только для мышки, для клавы она доступна
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374846
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askerli... предположение в чем может быть причина... так как эти инородные предметы в группе находятся перед самой группой, то после первого клика группа уходит на задний план... но это только для мышки, для клавы она доступна
Ну, как гипотеза может быть. Тут спорить трудно. Но мне в первую очередь показалось, что это действие какой-то блокировки совместными усилиями вкладки, группы и стороннего контрола на группе.
Да это и неважно. Главное, что баг выявлен и описан.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374866
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_worldГлавное, что баг выявлен и описан.
осталось настучать об этом Билли
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37374882
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askerlimds_worldГлавное, что баг выявлен и описан.
осталось настучать об этом Билли
О, да. Это обречено на удачу.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37478301
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MS Access 2003 обнаружил такой баг:
В Access'е 2003 все отчёты почему-то привязаны к конкретному принтеру. Тот кто в режиме конструктора вносит последнее изменение, тот и "невольно" фиксирует принтер, т.е. Access 2003 САМ фиксирует / запоминает этот принтер, а не кто-то явно указывает об этом. После этого происходит удивительный косяк. Если принтер "был" локальным у "последнего вносильщика изменений", то у остальных если нет такого принтера, то отчёт вообще невозможно открыть. Даже в режиме конструктора. Самое главное Access и не ругается, но и не открывает отчёт.
Прям не знаю, что за напасть.
Вылечить у "больного компьютера" (т.е. у конечного пользователя) не смог. Может кто знает какое-нибудь "хорошее" лекарство?

Выход конечно есть, у каждого юзера нужно установить аналогичный принтер, но этот вариант не очень-то мне нравится. Например, в будущем если принтер поменяют (скажем спишут из-за изношенности), то тогда как?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37478307
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studieren,

У меня вообще выставлял галку "другой принтер", рисовал там принтер и печатал падла по сетке на него, причём у пользователя он даже не был установлен. Вылечил принудительным сохранением с параметром "локальный принтер".
вроде..
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37478442
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alvkstudieren,

У меня вообще выставлял галку "другой принтер", рисовал там принтер и печатал падла по сетке на него, причём у пользователя он даже не был установлен. Вылечил принудительным сохранением с параметром "локальный принтер".
вроде..

Беда в том, что у меня и не выходит такое сообщение. В смысле Access не спрашивает другого принтера, а молчит как партизан, и не открывает. Вообщем косяк какой-то. Индусы блин мелкософтовские намудрили там внутри видать.
Вообщем вылечили пока так, создали точно такой же принтер у всех. Но если когда-нибудь надо будет поменять принтер (Слава Богу, что далеко не каждый день придётся делать это :)) ), то придём в гости к юзерам. Надо же хотя бы иногда с ними встречаться "в живую". :))
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37478879
vladK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такое. Выход - не указывать конкретный принтер, только "принтер по умолчанию" или как там в русской версии. Да это и достаточно корректно для пользователя.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37478912
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Возможно, у меня была не точно эта проблема, а что-то похожее на нее, но помогало перенести в Windows галку "принтер по умолчанию" на другой принтер.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37478929
полином
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alvkи печатал падла по сетке на него
угу, в другой город другой страны...

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

в другой кабинет, потому что в свойствах стоял "другой принтер" и речь про терминал.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37479053
полином
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alvkв другой кабинет.
у меня упорно печатал в другой город
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37578440
vladK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для меня было неожиданностью такое поведение boolean
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub t1()
Dim b As Boolean
GetP b

If b Then
    Debug.Print "check 1: b is true"
Else
    Debug.Print "check 1: b is false"
End If

If Not b Then
    Debug.Print "check 2: b is false"
Else
    Debug.Print "check 2: b is true"
End If

Debug.Print "check 3: b is " & b
End Sub

Sub GetP(ByRef pOut As Variant)
    pOut = 1
End Sub



Код: vbnet
1.
2.
3.
check 1: b is true
check 2: b is false
check 3: b is True



Оссобенно эффектно было:
Код: vbnet
1.
2.
3.
4.
? b
True
? (b=True)
False
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37578484
vladK{поскипано}
Оссобенно эффектно было:
Код: vbnet
1.
2.
3.
4.
? b
True
? (b=True)
False



кагбэ... 1 != -1
Код: vbnet
1.
2.
?CInt(True)
-1
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37578542
vladK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно, однако если прямо присвоить b = 1 такого эффекта не будет.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37578567
vladKЭто понятно, однако если прямо присвоить b = 1 такого эффекта не будет.

Код: vbnet
1.
2.
3.
4.
5.
sub boolb()
dim b as boolean
b=1
debug.print b, cint(b)
end sub



Код: vbnet
1.
True          -1 
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37578966
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
СавсемГостькагбэ... 1 != -1
И как же это значение 1 сидит в переменной, описанной As Boolean?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37578986
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

такого можно достигнуть и другими способами, например через LSet. Но данный конкретный случай видится именно багом.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579248
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычСавсемГостькагбэ... 1 != -1
И как же это значение 1 сидит в переменной, описанной As Boolean?
Очень просто. Например если WinAPI-функцию, возвращающую BOOL (сиплюсплюсный бул, который на самом деле инт), задекларить как возвращающую Boolean (вебешный), то именно так и будет - в Boolean окажется 1 вместо -1.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579250
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, это не баг аксеса, это баг VB. Или даже скорее так - кривые руки программера, который не умеет апишные функции декларить.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579381
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело не в единице. Там любое двухбайтное целое может оказаться.
Об эту бяку я споткнулся года 4-5 назад. Кажется, даже топик здесь был.
Тогда официальная дока на некий класс автоматизации сказала мне, что свойство возвращает булеан, во что я поверил, а он, такой-сякой, единицу мне в булеан запихивал.

Сейчас попробовал думать – баг это или фича. Решил, что баг - на таком основании:

Если бы это была фича, то кроме двухбайтных целых можно было бы напрямую, без copymemory или putmem в булеан любую букву запихнуть. Однако, это не так – проверка типа в примере VladK происходит. Значит, какой-то кусок механизма приведения типов отрабатывает (проверка совместимости объявленных типов), а какой-то нет – частично не работает для этого случая встроенное преобразование.
Слово частично означает следующее – если в процедуре GetP присваивать строку "3003" то произойдет преобразование к ближайшему совместимому типу – Integer и значение отлично присвоится в целевой boolean, а если присваивать букву – "K", то произойдет ошибка преобразования типов
Для фичи было бы прилично не проверять совместимость типов совсем и ошибку выдавать как раз для первого случая (попытки присвоения строки "3003") – вроде переполнения целого.
А так получается, что приведение к ближайшему совместимому числовому типу работает, а встроенное преобразование при этом выключается.
Дальше все ломается и логическое значение ведет себя как неотрицаемое - т.е. значение тождественно равно своему отрицанию.
и даже
b = cbool(b) его уже не лечит
Лечить может правильно подобранный OR - типа If b Then (b or -1)



модифицированный тест теста


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Sub t1()
Dim b As Boolean
GetP b
b = CBool(b)
If b Then
    Debug.Print "check 1: b is true"
Else
    Debug.Print "check 1: b is false"
End If

If Not b Then
    Debug.Print "check 2: b is false"
Else
    Debug.Print "check 2: b is true"
End If

Debug.Print "check 3: b is " & b
Debug.Print b, b Or 4

Dim v As Variant
v = False
GetP v

If v Then
    Debug.Print "check 104: v is true"
Else
    Debug.Print "check 104: v is false"
End If

If Not b Then
    Debug.Print "check 204: v is false"
Else
    Debug.Print "check 204: v is true"
End If

Debug.Print "check 304: v is " & v
Debug.Print v, v Or 4


End Sub

Sub GetP(ByRef pOut As Variant)
  Dim bb As Boolean
  pOut = "3003" 'AscW("K")' "K" '1
     
End Sub

...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579386
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повтор:
Лечить может правильно подобранный OR - типа If b Then b = (b or -1)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579450
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

b=CInt(b)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579477
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

у меня соображения, что это баг, примерно те же. Передача варианта параметром по ссылке в процедуру должна быть безопасна и подвергаться необходимой проверке и преобразованию типа, с точки зрения языка, в отличие от небезопасных (отданных на откуп программиста) вызовов LSet, и внешних функций, осуществляющих изменение памяти по переданному адресу. Здесь же кто-то решил срезать угол (или банально недосмотрел), основываясь на единстве внутреннего представления Boolean и Integer. И получился баг компилятора.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579486
возможно, ОФФ. Если так, - уважаемые модераторы, удалите пост во избежание.

booby,
Дело не в единице. Там любое двухбайтное целое может оказаться.
{могабукаф поскипано}

А маны - для кого?Boolean Data Type


Boolean variables are stored as 16-bit (2-byte) numbers, but they can only be True or False. Boolean variables display as either True or False (when Print is used) or #TRUE# or #FALSE# (when Write # is used). Use the keywords True and False to assign one of the two states to Boolean variables.

When other numeric types are converted to Boolean values, 0 becomes False and all other values become True. When Boolean values are converted to other data types, False becomes 0 and True becomes -1.

ЗЫ: и не "лечить" надо, а курить... всё те-же маны. До полного. И окончательного.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579509
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бенедиктbooby,

b=CInt(b)

Да, но это двойное преобразование типа.
Всего лишь подтверждает тИповую неполноценность boolean.

2СавсемГость

я рад тому, что вам хочется что-то сказать.
Жаль только, что вы ничего не говорите.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579527
booby,
к чему слова, когда на небе звёзды?
Под спойлер из моего предидущего поста заглядывали?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37579775
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot СавсемГость]...
к чему слова, когда на небе звёзды?
...[quot]

Претензия на дискурс не может заканчиваться просто подъемом к небу глаз.
Попробуйте сформулировать свою идею так, чтобы можно было к ней отнестись как логической пропозиции.
Может быть тогда все читатели одновременно ахнут, и отрукоплещут вас. Или вам.
А пока лишь вспомнается французский горожанин, мечтающий о смене социального статуса.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37580057
booby,
под спойлер -таки не заглядывали :)
Там цитата из справки по VBA:

Boolean Data Type

Boolean variables are stored as 16-bit (2-byte) numbers, but they can only be True or False. Boolean variables display as either True or False (when Print is used) or #TRUE# or #FALSE# (when Write # is used). Use the keywords True and False to assign one of the two states to Boolean variables.

When other numeric types are converted to Boolean values, 0 becomes False and all other values become True. When Boolean values are converted to other data types, False becomes 0 and True becomes -1.


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

ваша цитата:
When other numeric types are converted to Boolean values, 0 becomes False and all other values become True.

Здесь не написано явно, что Not True = False
Значите это не гарантируется и багом не является ситуация, когда not True = True
Иными словами, если Debug.print b показывает True, то не гарантируется,
что debug.print b , not b покажет true, False

Спасибо за разъяснения. Вот теперь все совершенно понятно.

(не знаю только, куда деть такое понимание. Может есть конструктивные предложения?)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37580158
booby,
Здесь не написано явно, что Not True = False
Значите это не гарантируется и ...
Я процитировал не всю справку по VBA
Сорри, не удержался.

...и багом не является ситуация, когда not True = Trueот комментария воздержусь

Иными словами, если Debug.print b показывает True, то не гарантируется,
что debug.print b , not b покажет true, FalseСовершенно верно. Не гарантируется. Внимательно перечитайте раздел Not Operator в справке VBA.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37580404
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, может быть в справке (совершенно случайно) написано, что 2*2=4?
Если нет, то наверное не стоит считать багом цифру 5, выданную конструкцией Debug.Print 2*2
Ясность полная.

"не знаю только, куда деть такое понимание" (с)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37580418
.ЛП,
не поверите, написано. Не дословно, конечно. Но, что есть, то есть.

ЗЫ: вброс защитан!
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37582513
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГостьне поверите, написано. Не дословно, конечно. Но, что есть, то есть.
Не поверите, но если уж "не дословно, конечно", то там написано и про то, что Not True = False
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37582557
.ЛПНе поверите, но если уж "не дословно, конечно", то там написано и про то, что Not True = False
Not True = False
но не
Not 1 = False
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37582568
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГость.ЛПНе поверите, но если уж "не дословно, конечно", то там написано и про то, что Not True = False
Not True = False
но не
Not 1 = False
Сказано же по-русски
Boolean variables ... can only be True or False
Какое слово непонятно? Если все слова понятны, то какое такое 1?

Упорствуете в своём "не баг" - ваше право. Только тогда придётся хелп сжевать. Или перестать на него ссылаться.
Или крестик снять, или трусы надеть.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37582586
.ЛП,
что ж так разволновало ?
Какое слово непонятно? Если все слова понятны, то какое такое 1?
11774029
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37582657
.ЛПСказано же по-русски
Boolean variables ... can only be True or False

Какое слово непонятно?

.ЛП,
учимся читать всю статью, а не только понравившиеся части:
Use the keywords True and False to assign one of the two states to Boolean variables.

Какое слово не понятно ?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37582935
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГостьучимся читать всю статью, а не только понравившиеся части:
Use the keywords True and False to assign one of the two states to Boolean variables.

Какое слово не понятно ?
Алё, Вась?
То, что "use keywords" - как то отменяет то, что "can only be"?
Принимается односложный ответ. Типа да/нет/не знаю/знаю, но не скажу.
После этого и поговорим.

четателей развелось, тля, плюнуть некуда :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583111
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
.ЛП, что-то ты многословен стал. Стареешь, наверно.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583147
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч.ЛП, что-то ты многословен стал. Стареешь, наверно.
Звиняй, борода, похмелье случилось :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583439
.ЛПАлё, Вась?
То, что "use keywords" - как то отменяет то, что "can only be"?
Принимается односложный ответ. Типа да/нет/не знаю/знаю, но не скажу.
После этого и поговорим.

четателей развелось, тля, плюнуть некуда :)Никак не отменяет.
"use keywords" от "may use keywords" отличить, надеюсь, сможете?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583459
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Короче говоря, эту проблему надо переносить в другой топик. В ответ на недокументированный синтаксис получаем недокументированное поведение.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583478
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГостьНикак не отменяет.
Очень хорошо.
Имеем два утверждения из хелпа:
1. Булевская переменная может быть только Труе и Фалсе.
2. Результатом применения оператора Нот к значению Труе является Фалсе. И наоборот, Нот Фалсе равно Труе.
Имеем кусок кода, результат выполнения которого опровергает либо первое, либо второе утверждение. Явно написанное.

На данный момент все слова понятны?

"use keywords" от "may use keywords" отличить, надеюсь, сможете?
Со словарём справлюсь.
Однако ж даже со словарём не пойму, при чём тут вот это вот "use the keywords ... to assign ... to Boolean variables", если в приведённом куске кода не содержится ни одного присвоения значения булевской переменной.

Присвоение значения переменной типа Variant - есть. Присвоения значения переменной типа Boolean - нет.
К чему было акцентировано "use keywords", независимо от того, "may" или не "may"?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583485
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычКороче говоря, эту проблему надо переносить в другой топик. В ответ на недокументированный синтаксис получаем недокументированное поведение.
Нет.
Синтаксис самый что ни на есть документированный.
Возможные значения типа Boolean - документированы.
Возможные результаты оператора Not - документированы.
Правила приведения типов вообще, и Integer к Boolean в частности - документированы.
Вместе оно не (всегда) работает.
Но почему-то говорят, что это не баг. Вах-вах-вах.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583609
.ЛП,
Присвоение значения переменной типа Variant - есть. Присвоения значения переменной типа Boolean - нет.Мы один и тот-же код обсуждаем?

К чему было акцентировано "use keywords", независимо от того, "may" или не "may"? Было акцентировано, как раз отсутствие may. Надеюсь, многоуважаемому .ЛП знакомы принципы "Всё, что не разрешено - запрещено" и "использование недокументированных возможностей - на свой страх и риск"? Спекуляций на тему "как же тогда быть с присвоением результата логического выражения переменной типа Boolean??!!!", надеюсь, не будет.

ЗЫ: если можно, объясните притчу про крестик и трусы.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583644
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГость.ЛП,
Присвоение значения переменной типа Variant - есть. Присвоения значения переменной типа Boolean - нет.Мы один и тот-же код обсуждаем?
Да.
Признаю свою оплошность, поторопился.
Видимо есть присвоение Boolean'у.
звиняйте, таки посыпаю голову пеплом. поспешил, не проверил. привычке решил, что там промежуточная упаковка-распаковка вылезает, ан нет.

Тогда переколбашусь слегка.
Есть два утверждения из хелпа.
1. Boolean variables are stored as 16-bit (2-byte) numbers, but they can only be True or False.
2. When other numeric types are converted to Boolean values, 0 becomes False and all other values become True.
По приведённому коду - либо не "can only be", либо не "becomes".

Надеюсь, многоуважаемому .ЛП знакомы принципы "Всё, что не разрешено - запрещено" и "использование недокументированных возможностей - на свой страх и риск"?
Приведение типов - документировано. Вообще. И numeric types к boolean в частности.

ЗЫ: если можно, объясните притчу про крестик и трусы.
Дык вся притча уже и сказана.
В бане - "Авраам Моисеевич, или крестик снимите, или трусы наденьте".
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583700
>.ЛП,
>Видимо есть присвоение Boolean'у.

Видимо есть ... запись в память, "выделенную" под Boolean значения типа Variant/Byte(?)
А вот приведения к Boolean нет совсем
Я уже почти готов согласиться, что это бак VB
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583738
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГостьВидимо есть ... запись в память, "выделенную" под Boolean значения типа Variant/Byte(?)
Если бы это было LSet, или возврат значения из WinAPI-функции, то было бы можно говорить про "запись в память, выделенную под".
Ну, вот я так думаю.
По крайней мере нигде не сказано, что в таких случаях должно быть какое-то приведение типов. Наверное даже сказано обратное.

А вот приведения к Boolean нет совсем
Ну как же это "нет совсем"?
Ведь значение типа String преобразуется.
Сначала в numeric type. Если сумеет.
Потом из numeric type в Boolean. С багом.

Если бы было "нет совсем", т.е. например не происходило бы преобразования стринга в интеджер, то был бы другой коленкор. Можно было бы со спокойной совестью поставить этот случай на ту же полку, где стоит LSet и WinAPI.
А так имеем то, что "преобразовывали, преобразовывали, да не выпреобразовывали". В полном противоречии с хелпом, раз уж речь зашла о документированности и допустимости (и допустимости через документированность) преобразований.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583750
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
.ЛПВедь значение типа String преобразуется.
Сначала в numeric type. Если сумеет.
Потом из numeric type в Boolean. С багом.
Код: vbnet
1.
2.
3.
4.
?CBool("true")
True
?CBool("false")
False
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583774
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч.ЛПВедь значение типа String преобразуется.
Сначала в numeric type. Если сумеет.
Потом из numeric type в Boolean. С багом.
Код: vbnet
1.
2.
3.
4.
?CBool("true")
True
?CBool("false")
False


Код: vbnet
1.
2.
3.
4.
? CBool(#1/1/2012#)
True
? Not CBool(#1/1/2012#)
False



А вот при попытке сделать
Код: vbnet
1.
2.
3.
Sub GetP(ByRef pOut As Variant)
    pOut = #1//1/2012#
End Sub


получается "программа выполнила невыполнимое и будет закрыта".
Бида бида огорчение...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583776
>.ЛП,
>Потом из numeric type в Boolean. С багом.
Такое впечатление, что не к Boolean, а к его внутреннему представлению.

ЗЫ: как по мне, что LSet, что "обычная" процедура с передачей "хитрожёлтого" типа по ссылке в параметр с формальным типом вариант, - те же яйца, только в профиль.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583785
.ЛП,

А вот при попытке сделать

Код: vbnet
1.
2.
3.
Sub GetP(ByRef pOut As Variant)
    pOut = #1//1/2012#
End Sub


получается "программа выполнила невыполнимое и будет закрыта".
Если это баг копипаста, то будет Overflow. Если умышленно, то до рантайма и не дойдёт.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583793
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СавсемГость>.ЛП,
>Видимо есть присвоение Boolean'у.

Видимо есть ... запись в память, "выделенную" под Boolean значения типа Variant/Byte(?)
А вот приведения к Boolean нет совсем
Я уже почти готов согласиться, что это бак VBЧтобы было меньше вопросов:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
Private Enum VARENUM
   VT_EMPTY = 0
   VT_NULL = 1
   VT_I2 = 2
   VT_I4 = 3
   VT_R4 = 4
   VT_R8 = 5
   VT_CY = 6
   VT_DATE = 7
   VT_BSTR = 8
   VT_DISPATCH = 9
   VT_ERROR = 10
   VT_BOOL = 11
   VT_VARIANT = 12
   VT_UNKNOWN = 13
   VT_DECIMAL = 14
   VT_I1 = 16
   VT_UI1 = 17
   VT_UI2 = 18
   VT_UI4 = 19
   VT_INT = 22
   VT_UINT = 23
   VT_VOID = 24
   VT_ARRAY = &H2000
   VT_BYREF = &H4000
End Enum

Private Type MyVariantName3
   Val0 As Integer
   Val1 As Integer
   Val2 As Integer
   Val3 As Integer
End Type
Private Type MyVariantName4
   Val0 As Long
   Val1 As Long
End Type
Private Type MyVariant
   vt As Integer 'комбинация значений VARENUM
   wReserved1 As Integer
   wReserved2 As Integer
   wReserved3 As Integer
   Value As MyVariantName3
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
   pvDest As Any, pvSource As Any, ByVal cBytes As Long)

Sub t1()
 Dim b As Boolean
 
 b = True
 Debug.Print "Адрес переменной b: " & VarPtr(b)
 Debug.Print "До вызова процедуры GetP"
 Debug.Print "Шестн. значение переменной b: " & Hex$(b)

 GetP b
 
 Debug.Print "После вызова процедуры GetP"
 Debug.Print "Шестн. значение переменной b: " & Hex$(b)
 
 'далее по вкусу
End Sub

Sub GetP(ByRef pOut As Variant)
  Dim mv As MyVariant
  Dim mvn4 As MyVariantName4
  Dim boolVal As Boolean
  
  Debug.Print "Процедура GetP"
  
  CopyMemory mv, pOut, Len(mv)
  If mv.vt = (VT_BOOL Or VT_BYREF) Then
     Debug.Print "Переменная pOut типа Variant имеет подтип VT_BOOL | VT_BYREF"
     LSet mvn4 = mv.Value
     Debug.Print "Адрес переменной типа VT_BOOL, на которую ссылается pOut: " & mvn4.Val0
     CopyMemory boolVal, ByVal mvn4.Val0, LenB(boolVal)
     Debug.Print "До присвоения значения переменной pOut типа Variant"
     Debug.Print "Шестн. значение переменной типа VT_BOOL, на которую ссылается pOut: " & Hex$(boolVal)
  End If
  
  pOut = "3003"
     
  If mv.vt = (VT_BOOL Or VT_BYREF) Then
     CopyMemory boolVal, ByVal mvn4.Val0, LenB(boolVal)
     Debug.Print "После присвоения значения переменной pOut типа Variant"
     Debug.Print "Шестн. значение переменной типа VT_BOOL, на которую ссылается pOut: " & Hex$(boolVal)
  End If
End Sub

Вывод:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
t1
Адрес переменной b: 1242890
До вызова процедуры GetP
Шестн. значение переменной b: FFFF
Процедура GetP
Переменная pOut типа Variant имеет подтип VT_BOOL | VT_BYREF
Адрес переменной типа VT_BOOL, на которую ссылается pOut: 1242890
До присвоения значения переменной pOut типа Variant
Шестн. значение переменной типа VT_BOOL, на которую ссылается pOut: FFFF
После присвоения значения переменной pOut типа Variant
Шестн. значение переменной типа VT_BOOL, на которую ссылается pOut: 3003
После вызова процедуры GetP
Шестн. значение переменной b: 3003

Т. е. баг (не приведение к типу Boolean, несмотря на то, что информация о типе, на который ссылается Variant, имеется) в момент присвоения pOut.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583799
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГостьЕсли это баг копипаста, то будет Overflow. Если умышленно, то до рантайма и не дойдёт.
Да нет, совсем не бага копипаста. И до рантайма доходит. Что я делаю не так?

Может у нас датавременные константы в коде стали как-то по-другому писаться?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583804
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СавсемГостьЗЫ: как по мне, что LSet, что "обычная" процедура с передачей "хитрожёлтого" типа по ссылке в параметр с формальным типом вариант, - те же яйца, только в профиль.Ничего подобного. LSet небезопасен. Присвоение значения Variant-у обязано быть безопасным.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583811
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не тот вывод скопипастил. Вот соответствующий коду:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
t1
Адрес переменной b: 1242890
До вызова процедуры GetP
Шестн. значение переменной b: FFFF
Процедура GetP
Переменная pOut типа Variant имеет подтип VT_BOOL | VT_BYREF
Адрес переменной типа VT_BOOL, на которую ссылается pOut: 1242890
До присвоения значения переменной pOut типа Variant
Шестн. значение переменной типа VT_BOOL, на которую ссылается pOut: FFFF
После присвоения значения переменной pOut типа Variant
Шестн. значение переменной типа VT_BOOL, на которую ссылается pOut: BBB
После вызова процедуры GetP
Шестн. значение переменной b: BBB
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583819
Пришёл лесник Бенедикт и всех разогнал
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583823
>.ЛП,
>Да нет, совсем не бага копипаста. И до рантайма доходит. Что я делаю не так?
Невнимательно смотрите.
Код: vbnet
1.
2.
3.
Sub GetP(ByRef pOut As Variant)
    pOut = #1//1/2012#
End Sub


У Вас два слеша подряд в "литерале даты".
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583827
.ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГость>.ЛП,
>Да нет, совсем не бага копипаста. И до рантайма доходит. Что я делаю не так?
Невнимательно смотрите.
Код: vbnet
1.
2.
3.
Sub GetP(ByRef pOut As Variant)
    pOut = #1//1/2012#
End Sub


У Вас два слеша подряд в "литерале даты".
А, не, это бага копипаста.
Пальцы заплетаются, простите.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #37583844
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Пальцы заплетаются за язык...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Баги Access (топик не закрыт, можно добавлять)
    #38267160
Фотография vip-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начал работать с аксом 2003 глючит часто
при быстрой работе копирования и т.д. надинает отваливатся главная форма у меня
самое ужасное - импорт таблиц dBase 5, OOCB с этим делом вообще непонятки
то нормально импортируется один и тот же файл, то выскакивают всякие ошибки (типо путь не найдет или ошибка драйвера)
часто теряются связи с таблицами bdf
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #38332244
Kroko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access 2003.
Есть главная форма, внутри которой подчиненная.
Подчиненная выполнена в табличном виде и на ее первом поле висит макрос, который по клику на это поле открывает другую форму.
При открытии главной формы, в какую бы точку подчиненной формы не кликнешь - срабатывает это макрос, но самое странное, что срабатывает только 1 раз, т.е. сразу после открытия формы. При этом он нормально продолжает отрабатывать при клике на нужное поле.
Не понимаю в чем дело и как такое возможно.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Баги Access (топик не закрыт, можно добавлять)
    #39015637
hardfate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я вообще пока себе не скачал офис 2013, один очень важный документ открыть по асесу не мог, а надо было срочно, ппц
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39015645
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hardfate,

И в чем баги?
В отсутствии на машине нужной версии Access?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39025470
tanchukz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как по мне вообще баговая система, лучше использовать My SQL
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39076744
ssserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanchukz,
Так к нему же еще "морду" на чем-то писать нужно.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39077089
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sssergetanchukz,
Так к нему же еще "морду" на чем-то писать нужно.
Дык он не знает про это.
для него Мускул это усе.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39246452
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все баги не читал, но по поиску "фильтр" не нашел похожего:

Создаем любую форму в табличом виде на базе запроса с критерием, содержащем параметр вида [param], это может быть просто запрашиваемый параметр или ссылка на поле в форме. Открываем форму, по F5 или по Requery она благополучно запрашивает параметр или читает значение с формы.
Накладываем любой фильтр на данные руками или через VBA и снимаем его. Все, параметр уже не запрашивается, с формы не читается. Обходится только заменой параметра на функцию. Проверял на 2010 и 2013. Баг просто убил.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312435
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коде указано имя поля "св_во1", а в сообщении уже "св-во1". Как так? ) Кстати, предыдущую строку он успешно отработал - присвоил полю "св-во1" указанное значение
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312457
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969В коде указано имя поля "св_во1", а в сообщении уже "св-во1". Как так? ) Кстати, предыдущую строку он успешно отработал - присвоил полю "св-во1" указанное значение


Попробывал все работает.
А это чё:
Me.TempSvvo=Me.св_во1 (так для интересу)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312509
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIПопробывал все работает.

Ну да, тоже создал другую форму, там работает. У меня спотыкается на SetFocus по какой-то другой причине. Собственно, я добавил этот код просто чтобы посмотреть к какому полю он перейдет.
Вопрос был почему он отрабатывает код присваивания значения полю "св_во1" (через нижнее подчеркивание), которого вообще нет. Есть поле "св-во1" (через тире).
Ответ уже нашел. VBA отображает пробелы в именах элементов управления как нижнее подчеркивание. Видимо, тоже самое он делает и с тире в именах.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312513
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIА это чё:
Me.TempSvvo=Me.св_во1 (так для интересу)

Это "костыль" для передачи в другую форму данных (нужно передать 2 значения). Создал 2 невидимых поля и из другой формы обращаюсь к ним за нужными мне значениями. Дело в том, что DoCmd.OpenForm может передать только одно значение.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312528
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, вопрос остался) В форме у меня все поля названы через тире. Первый вариант кода работает, второй - нет, третий - работает.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312530
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312547
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969Дело в том, что DoCmd.OpenForm может передать только одно значение.да хоть тысячу. Передавай такой же строкой через OpenArgs , а можно - "ИмяПараметра1=Значение;ИмяПараметра2=Значение; и тд"

Ты бы это всё своим топиком организовал, а не в баги акса кривые руки записывал...
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312581
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургSergey8969Дело в том, что DoCmd.OpenForm может передать только одно значение.да хоть тысячу. Передавай такой же строкой через OpenArgs , а можно - "ИмяПараметра1=Значение;ИмяПараметра2=Значение; и тд"

Ты бы это всё своим топиком организовал, а не в баги акса кривые руки записывал...
Полностью согласен.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39312660
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургSergey8969Дело в том, что DoCmd.OpenForm может передать только одно значение.да хоть тысячу. Передавай такой же строкой через OpenArgs , а можно - "ИмяПараметра1=Значение;ИмяПараметра2=Значение; и тд"

Ты бы это всё своим топиком организовал, а не в баги акса кривые руки записывал...

хах, меня спросили - я ответил. Комментарии на счет рук при себе лучше бы оставили. Я вас не спрашивал как мне лучше сделать. Вы бы лучше прочитали сначала о чем речь шла.
Знаю, что можно строкой все передать. Разделять потом на отдельные значения не хочу, исключать возможные ошибки. Да и код длинный получается.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39313611
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969, а я и прочитал. Первое замечание не относмтся ко второму. Они даже пустым пространством обособлены.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39380225
Владимир2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некорректное преобразование mdb-формата в формат accdb.
Причина и способ устранения некорректности


Действительно для:
- операционные системы Windows версий Windows 7/8xx/10
- пакет Приложений MS Office версий 2007 и более старших.

Предпосылки:
Офисное приложение изначально разрабатывалось в среде MS Office 2003.
При "конвертации" Приложения в среду MS Office 2007 и старше возникли ошибки преобразования.
Причем, в исходном коде никакие особенности Office 2007 не использовались (как то: тип данных "Вложение" и др.).

Результат "конвертации": При запуске Приложения офис генерирует исключительную ситуацию "Не распознаваемый формат файла".

Причина ошибки:

Один из сохраненных запросов в файле "клиентского места" был отформатирован с управляющими символами
"возврат каретки"/"новая строка (vbNewLine).


Используемый способ конвертации: создание нового файла в формате accdb с запретом слежения за автозаменой имен, последующий импорт всех объектов из исходного файла в формате ACC 2003 в целевой файл в целевого формата accdb,
поскольку стандартная операция "Сохранить в формате" корректно никогда не работала (скрытые системные таблицы исходного mdb переносятся "как есть", привнося "мусор" в целевой файл) .

Способ исправления: удаление всех управляющих символов в сохраненных запросах.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39380438
Владимир2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение к предыдущему сообщению:
"Некорректное преобразование mdb-формата в формат accdb.
Причина и способ устранения некорректности"

Исходный текст Приложения (в формате ACC 2003), включающего в себя запросы, исходный SQL-текст которых
содержал управляюpие символы "перевод каретки" или "новая строка", не вызывал исключительных ситуаций
как при компиляции, так и в процессе функционирования Приложения под управлением среды MS Office 2003.

После описанного выше "стандартного" способа конвертации, при попытке запуска конвертированного Приложения
в среде ACC2007/ACC2010, упомянутая выше исключительная ситуация стабильно возникает.

В случае импорта всех объектов исходного Приложения ACC2003 в среду ACC2013, после нажатия "ОК" в окне диагностического сообщения "чужой формат", Приложение открывается. Однако, в случае попытки открытия объекта (форма/отчет), использующего, в качестве источника данных, запрос, текст которого содержит управляющие символы, операция прерывается с описанием события "Действие открытия формы/отчета прервано".

Кроме того, если у Вас в рабочем (клиентском) месте, имеются запросы, текст которых отформатирован управляющими символами (форматирование SQL-текста в Приложениях с разделённой БД Майкрософт не запрещает), а в таблицах, присутствуюзих в теле запроса одно или более полей в новой версии БД (не рабочего/клиентского места) больше не существует - ситуация с описанной выше "конвертацией" из одной версии ACC в более старшую, возможно, будет происходить так, как описано выше.

P/S . Надеюсь, мой маленький месседж поможет сохранить "братьям по цеху" затраченное ими время на выявление и фиксение ньюансов работы ACC... для более полезных занятий.... :)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39380439
Владимир2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рабочего/клиентского места
Упсс... Конечно же "рабочего/клиентского места"
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39385881
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующая ситуация.

На сервере стоит Windows 7 64 bit, Office 2010 32 bit и Office 2003
У меня на компьютере стоит Windows 7 32 bit, Office 2010 32 bit и Office 2003

Первоначально всё работало нормально. Потом после какого-то обновления произошла следующая история. Программа разработанная на моём компьютере отказывается работать на сервере. Выдаёт сообщение типа "Ошибка в запросе. Должно быть INSERT, UPDATE или DELETE" не дословно, но смысл похожий. Делаешь сжатие-восстановление, программа начинает работать на сервере. Зато перестаёт работать на моём компьютере. С тем же сообщением. Делаю уже у себя сжатие-восстановление, программа начинает работать у меня, но прекращает на сервере. Системщик только разводит руками и что-то говорит о разных обновлениях. По моему настоянию с сервера снесли оба офиса и установили Office 2010 32 bit заново. Ошибка ушла.

Примерно через три месяца похожая ситуация всплыла у заказчиков. У части заказчиков программа отказывалась работать с аналогичным сообщением. Причём на работе и у меня дома программа запускалась без проблем. По моей инструкции пользователи на местах произвели сжатие-восстановление программы. У части она заработала, а у части - нет.

Что сделал. Дома под Windows XP в Access 2003 произвёл декомпиляцию программы. Затем поджал её. Программа заработала и на тех машинах, где раньше отказывалась работать.

Кто-нибудь встречался с такими проблемами? Как их решали? И что надо делать, чтоб их избежать?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39401951
Владимир2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, Ваше описание траблы подпадает под мой опыт.
Как фиксил траблу:

Установил рантайм-версию ACC, соответствующую ACC на машине Разработчика. С младшими ей полными установками Office работает устойчиво. Если Вы пользуете библиотеки Word/Excel 2003 из-под рантайм-ACC2010/20ХХ, то они "захватываются" правильно.
В случае наличия на машине двух версий (2003-2010, к примеру, это не есть факт).
Причем, старшая версия не конфликтует с младшими версиями библиотек самого ACC.
Это проверено более чем 4-мя годами успешной эксплуатации Приложения в среде Office 2003..2010 при условии,
что Вы нигде (ни в базе, ни в коде клиентского места не юзаете расширения Office 2007).

На рабочих станциях юзеров установлена рантайм-версия, соответствующая версии ACC на машине разработчика,
под которой скомпилирован файл клиентского места. При разделенной БД сама база данных может быть в формате самой младшей версии ACC, однако настоятельно есть хорошо, когда БД приведена в формат более старшей версии АСС.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39484567
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку к своей проблеме.
Нашел одну из ситуаций, когда возникает такая ошибка.

Если программа при запуске выдаёт сообщение типа "Ошибочная инструкция SQL, предполагалось INSERT, UPDATE или DELETE", не дословно, но смысл похожий, то возможна следующая причина.
Дело в том, что начиная с версии 2007 для Access (и соответственно Офиса) разработана новая библиотека работы с данными ACE вместо DAO, а начиная с версии 2010, разработана так же 64-х битная версия этой библиотеки. Для библиотеки DAO 64-х битной версии не существует. Получается, что для комбинации Windows XP и Офиса 2000 – 2003 можно использовать только библиотеку DAO, в остальных случаях можно использовать библиотеку ACE. Подключение библиотеки производится на этапе программирования.
Поэтому если у Вас подключена библиотека DAO, то программа не будет работать на Windows 64 bit, если у Вас установлен Офис 64-bit. Комбинация W-64 и Офис 2003 работать будет. Комбинация W-64 и Офис версии 2007 и выше в 32-х битных версиях по идее должен работать, но проверить не мог.
Если у Вас подключена библиотеки ACE, то программа не будет работать для конфигурации Windows XP и Office 2003 (отсутствует библиотека ACE). В остальных случаях для различных допустимых комбинаций Windows и Офиса программа работать должна. (все комбинации проверены не были).
Можно попробовать пошаманить и для комбинации Windows XP и Office 2003 доставив самостоятельно библиотеки ACE.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39484600
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Windows XP SP3
MS Access 2010

Создаю в конструкторе запрос-выборку на основе обычной таблицы
При попытке просмотреть результат пишет

Код: plaintext
1.
Неизвестные приложению единицы измерения
Задайте допустимые единицы, дюймы (") или сантиметры (СМ).

Я бы понял, если бы разрабатывал отчёт. Но где задать единицы измерения в обычном запросе на выборку?
База была создана в Access 2003, При запуске в Access 2003 программа ошибки не выдает.

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

Как устранил ошибку.
Перед вызовом формы поставил оператор doEvents . Ошибка исчезла.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39510439
rnk_unauthorized
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неправильная очерёдность действий в VBA.
Код: vbnet
1.
N Mod 676 \ 26 



В теории:
Операторы Mod (остаток при делении) и \ (целочисленное деление) имеют одинаковый приоритет и должны вычисляться слева направо: берём остаток от N по модулю 676 и нацело делим его на 26. Для N=100 результат должен быть 3.
На практике:
\ вычисляется в первую очередь, Mod во вторую. В результате получаем
Код: vbnet
1.
N Mod (676 \ 26) = N Mod 26

Для N=100 имеем результат 22.

Полдня коту под хвост, где угодно мог предположить ошибку, но не здесь.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39510448
rnk_unauthorized
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неправильная очерёдность действий в VBA.
Код: vbnet
1.
N Mod 676 \ 26


Причём в VBScript всё в порядке.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39510450
rnk_unauthorized
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нет, вру, в VBScript тот же баг (((
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39510530
`
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
`
Гость
rnk_unauthorized
В теории:
Операторы Mod (остаток при делении) и \ (целочисленное деление) имеют одинаковый приоритет
нет
https://msdn.microsoft.com/ru-ru/library/office/gg278455.aspx
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39510944
rnk_unauthorized
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
`rnk_unauthorized В теории:
Операторы Mod (остаток при делении) и \ (целочисленное деление) имеют одинаковый приоритет
нет
https://msdn.microsoft.com/ru-ru/library/office/gg278455.aspx
Ах, вот оно что... Нелогично, в C++ и Transact SQL у умножения, деления и остатка одинаковый приоритет.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39515799
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какова максимальная скорость записи в Microsoft Access очерез oledb? Сколько не пробовал менять настройки и файлы -- получилось добиться лишь порядка 1000 строк в секунду (при полу сотне текстовых и числовых полей). С этим можно что-то сделать?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39547475
Фотография Beeptec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Относительно ошибки связанной с OLE объектами - "Сервер OLE не зарегистрирован" и т.п.
Решение - открыть объект (в моем случае *.lpg) в браузере к примеру в Firefox, там копируем изображение, вставляем в форме на соответствующее поле объекта OLE.
Работает без проблем.
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39630183
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формат базы MDB. Под 2010 версией запускается без проблем. Под 2003 стала выдавать что-то типа "Неправильное присвоение Null". Отладчик ошибку не ловит.
Решение проблемы.
1. Отключаем autoexec и стартовые формы (если есть)
2. Делаем декомпиляцию базы (ключ /decompile)
3. Сжимаем базу.
4. Делаем компиляцию проекта (редактор VBA, меню Debug, пункт Compile...)
5. Подключаем обратно autoexec и стартовые формы (если есть)

Всё работает. Размер базы при этом уменьшается, поскольку из неё удаляется "мусор", который нельзя удалить процедурой "Сжатие/восстановление"

Это так же помогает, когда в программе возникают неопознанные ошибки. Отдельные формы не хотят загружаться или грузятся с ошибками. Возникают обращения к незадействованным событиям.

Вместо декомпиляции можно воспользоваться модулем очистки от "мусора" Юрия Шермана.
Взять можно здесь или здесь
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39638969
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда, довольно редко, прежде чем сделать определённые действия, надо определить, имеет ли пользователь права администратора?

Нашел тут на сайте VBStreets код, который позволяет определить, является ли админом пользователь, вошедший в систему
Код можно посмотреть здесь

Что интересно.
В Access 2003 код великолепно работает, а в 2010 вылетает. Без всяких сообщений об ошибках. Просто идёт на перезагрузку Access и предлагает послать сообщение в Microsoft.
В чём дело, не смог разобраться.

Windows 7 - 32 bit и Windows Server 2008 R2.

Access 2010 - 32 bit 14.0.4750.1000

Access 2003 11.8321.8405 SP3
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39669232
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнение к выше написанному.
Оказалось дело в вызове функции FreeSid , которая освобождает идентификатор безопасности (SID), ранее выделенный с помощью функции AllocateAndInitializeSid . Её вызов просто аварийно закрывал Access. Программно перехватить это событие было невозможно.
Для определения привилегий пользователя предлагаю использовать функцию IsUserAnAdmin из библиотеки Shell32 , хотя MSDN и пишет, что эта функция является оберткой для CheckTokenMembership , и рекомендует вызвать эту функцию напрямую, чтобы определить статус группы администратора, а не вызвать IsUserAnAdmin . Но в нашем случае лучше использовать функцию IsUserAnAdmin
Определение функции
Код: vbnet
1.
Public Declare Function IsUserAdmin Lib "Shell32" Alias "IsUserAnAdmin" () As Boolean


В интернете я встречал и вот такой вызов
Код: vbnet
1.
Public Declare Function IsUserAnAdmin Lib "Shell32" Alias "#680" () As Boolean
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39697054
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такое вот сообщение иногда появляется......
Импортом обьектов в новую базу лечится без проблем.... Но таки что это и почему?
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39727579
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, тоже возникало несколько раз. причем при возникновении данной ошибки перестают работать любые процедуры на любых контролах формы, втч и на самой форме. лечил также импортом из бэкапа
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39727630
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр лечил также импортом из бэкапа Ну это мы перхоть гильотиной лечим.... Помогает, конечно...... Но как то уж слишком радикально.....
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729211
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, ну вот собственно, опять то же самое. Причем не на какое-то определенное событие в форме или контролах, а на любое и каждое событие в форме и контролах вылетает такая штука. Дело было так, при внесении данных Access вылетел. После открытия в одной из форм началась такая "заморока", причем в момент вылета работа велась в другой форме. Скопировал эту же базу в другое место. Открыл - все ОК. Скопировал обратно с заменой файла - все работает
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729357
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Проверьте, пожалуйста, имена всех разделов формы - не закрались ли в них какие-нибудь левые символы. (А заодно имя самой формы и имена всех контролов, но это может быть долго.)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729432
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущим четырём пользователям. Такое, или похожее случается, когда вы правите код в форме открытой в режиме формы. Слетает один из уровней компиляции. Специалисты пишут что количество уровней компиляции в Access Может достигать 11. Я в этом случае пользуюсь модулем очистки от мусора Юрия Шермана, ну или своей модификацией этого модуля.
Модуль Юрия Шермана
моя доработка
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729527
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss . Такое, или похожее случается, когда вы правите код в форме открытой в режиме формы.
Да я этим регулярно грешу.....
В основной(довольно большой и сложной) базе - нифига не происходит....
Создал маленькую еще одну для других целей- и понеслась...
Возможно дело в том, что основная база создана была очень давно, я ее просто открыл и пересохранил.....
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729529
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311Создал маленькую еще одну для других целей- и понеслась...
Создал правой кнопкой мыши в проводнике ?
Если так - то это старые грабли, создавай пустые базы через меню акцесса (файл, создать, пустая бд...)
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729546
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagSerg197311Создал маленькую еще одну для других целей- и понеслась...
Создал правой кнопкой мыши в проводнике ?
Если так - то это старые грабли, создавай пустые базы через меню акцесса (файл, создать, пустая бд...)
Спасибо, запомню..... Но как создавал - уже и не помню....
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39729695
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, добрый день. дада именно так и было. не думал, что есть взаимосвязь. понял. буду закрывать формы при правке в них когда или переводить в режим конструктора. Спасибо за совет
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39736151
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для любопытных от Даниэля Пино.

Поскольку Microsoft не хочет давать пользователям FREELY сообщения об ошибках, я решил создать эту страницу, чтобы начать собирать информацию о проблемах
https://www.devhut.net/ms-access-bug-listing/
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39809858
Фотография avedeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТеньОтцаГамлета, а вот так подумаешь...ну его этот нативный код...ведь может так статься...вот остался
шаг или два до финала разработки и тут перед тобой встает Проблема из темных глубин кода Access и
говорит ..."Куда прешь...не положено...приехали...вылезай"

Так может сразу пойти в Web...там столько вариантов...или в 1С...ERP...там даже переменные можно
на кириллице...может ну его ...этот путь Самурая...вот читаешь повести Ходивших в Access ...
и как то ...страшновато
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Баги Access (топик не закрыт, можно добавлять)
    #39968390
Havanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть база аксеса.accdb
Которую я 2й год вояю ))
И бух выключила питание сервака.
и я при открытие базы увидел такую надпись

не удалось внести изменения из-за посторяющихся значениях в индексе, первичном ключе или связях.
Измените данные в одном или нескольких полях, содержащих повторяющиеся значения, удалите индекс или переопределите его, разрешив повторяющиеся значения и повторите попытку.

Ну я сначала думал,
1) пересоберу заново в другую базу забрав формы - нихрена, базу не открывает дя импорта
2) Загуглю найду проблему решиться - нихрена везде ответы по таблицам и т.д. База открывается они могут ее редактировать.

В итоге у меня нередактируемая база а просто 50 метров разделенной базы которую я не могу даже открыть.
такой проблемы по открытию не нашел

База разделена, все таблицы как отдельную базу я открыть могу, формы не могу открыть. И причем тут интексы не понятно.

С учетом всеговышесказанного считаю это багом причем не описанным
Если кто найдет инфу как лечить буду бллагодарен
...
Рейтинг: 0 / 0
Баги Access (топик не закрыт, можно добавлять)
    #39969585
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще один косяк Акцесса. Двойное обращение к хранимке на MS SQL сервере.

Для воспроизведения:

Особенности Акцесса
'пример, демонстрирующий, что открытие рекордсета с запросом в виде "SELECT .. FROM sql_запрос", который обращается к хранимой процедуре, вызовет эту хранимку ДВАЖДЫ
'Возможно, что аналогично происходит не только с обращением к хранимке, но и с любым SELECT`ом
'В приведенном примере после каждого вызова в таблицу добавляется 2 записи, хотя в хранимке происходит добавление только одной записи
'При этом вывод результатов происходит именно для результата первого запуска хранимки, а не второго.

На MS SQL сервере выполняем
1.Создаем таблицу
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE [dbo].[_ttt](
	[ffrom] [nvarchar](128) NULL,
	[dtCrt] [datetime] NULL,
	[kdz] [int] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[_ttt] ADD  CONSTRAINT [DF__ttt_dtCrt]  DEFAULT (getdate()) FOR [dtCrt]
GO



2. Создаем хранимку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE PROCEDURE _TmpTest
AS
BEGIN
	-- exec _TmpTest
	-- select * from [_ttt] order by dtcrt
	--delete from [_ttt]
	
	SET NOCOUNT ON;
  INSERT INTO [_ttt]([kdz])
  values (1)
  
  select COUNT(*)as cnt from [_ttt]
END
GO
grant execute on _TmpTest TO Public
GO



3. В базе Акцесс создаем процедуру обновления sql-запроса
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Public Function editSQLquery(QName As String, stSQL As String, Optional TimeOut As Long = 60) As Boolean

  Dim dbsTMP As DAO.database
  Dim qdfTMP As DAO.QueryDef
  On Error GoTo ErrHandler
  Const prcName As String = "editSQLquery"
  del_tmp_tbl_all
  
  Set dbsTMP = CurrentDb
  Set qdfTMP = dbsTMP.QueryDefs(QName)
  qdfTMP.sql = stSQL
  qdfTMP.ODBCTimeout = TimeOut
  Debug.Print stSQL

Success:
  editSQLquery = True

mEx:
    Set qdfTMP = Nothing
    Set dbsTMP = Nothing
    Exit Function

ErrHandler:
  msgbox Err.Description 'ErrorSave mdlName, prcName, Err.number, "(" & Err.Description & ")" & vbCrLf & "в процедуре " & prcName & " of Module " & mdlName, stSQL
  Resume mEx
  Resume
End Function



4. В БД Акцесс создаем процедуры для теста
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function tmpTest() As Long
  Dim rst As DAO.Recordset
  'пример, демонстрирующий, что открытие рекордсета с запросом в виде "SELECT .. FROM запрос", который обращается к хранимой процедуре, вызовет эту хранимку дважды
	'Возможно, что аналогично происходит не только с обращением к хранимке, но и с любым SELECT`ом
  'В приведенном примере после каждого вызова в таблицу добавляется 2 записи, хотя в хранимке происходит добавление только одной записи
  'При этом вывод результатов происходит именно для результата первого запуска хранимки, а не второго.
  editSQLquery "sql_Any", "exec _TmpTest"
  
  Set rst = CurrentDb.OpenRecordset("SELECT * FROM sql_Any", dbOpenSnapshot)
  'После этого вызова в базе уже 2 строки в таблице [_ttt], а рекордсет вернет значение 1. После следующего вызова он вернет значение 3, потом 5

  If rst.RecordCount <= 0 Then
    MsgBox "Нет данных!", vbExclamation, NameApp
    Exit Function
  End If
  Debug.Print rst!Cnt
End Function



и

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function tmpTest2() As Long
  Dim sql As String, NeedVozvr As Boolean, N As Long
  Dim rst As DAO.Recordset

  editSQLquery "sql_Any", "exec _TmpTest"
  
  'А вот такое обращение выполнит хранимку один раз
  Set rst = CurrentDb.OpenRecordset("sql_Any", dbOpenSnapshot)
  If rst.RecordCount <= 0 Then
    MsgBox "Нет данных!", vbExclamation, NameApp
    Exit Function
  End If
  Debug.Print rst!Cnt
End Function
...
Рейтинг: 0 / 0
370 сообщений из 370, показаны все 15 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баги Access (топик не закрыт, можно добавлять)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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