powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баги Access (топик не закрыт, можно добавлять)
25 сообщений из 370, страница 1 из 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
25 сообщений из 370, страница 1 из 15
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Баги Access (топик не закрыт, можно добавлять)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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