Имали ли сте някога номер за грешка в Access, но не и съобщение за грешка, което обяснява какво е това?
AccessError()
функцията е бърз начин да получите съобщението за грешка, свързано с номер на грешка в достъпа:
Символът за място на тръбата
Символът на тръбата (|
) е вертикална лента (достъпна чрез [Shift] + [\] {обратна наклонена черта} на английска клавиатура).
Функцията AccessError използва този знак като заместител за специфичен текст в съобщение за грешка.
Например, грешка при достъп 3211 е „...не може да се заключи таблицата „|“ ..." Символът с вертикална черта в общото съобщение се заменя с действителния низ, който е бил използван в реда код, който е повдигнал съобщението за грешка:
Официална документация
Функцията AccessError всъщност е метод на обекта Access.Application. Ето описание на това какво прави от официалната документация:
Можете да използвате AccessError метод за връщане на описателния низ, свързан с грешка в Microsoft Access или Data Access Objects (DAO).
Струва си да се отбележи, че това е Microsoft Специфичен за достъп функция. С други думи, не бихте могли да го извикате от друго приложение на Office, като Excel или Word.*
(* Това не е технически вярно. Можете да създадете обект на Access Application чрез COM във всяка VBA среда и след това да можете да извикате метода AccessError от този обект. Разбира се, това би било полезно само ако искате да проверите Специфични за достъп низове за съобщения за грешка в това друго приложение на Office, което изглежда малко вероятно.)
Случаи на употреба
Честно казано, не мога да си спомня да съм използвал този метод в кода на моето приложение.
Това е функция, която използвам почти изключително от Immediate Window, когато просто искам бърз начин да определя какво представлява номерът за грешка в Access.
Това би било най-полезно, ако попаднете на манипулатор на грешки, който има Select Case Err.Number
блок и всички отделни Case
изявленията са използвали числа без придружаващи коментари, като този:
Select Case Err.Number
Case 2452
'Do something
Case 2455
'Do a different thing
Case 2467
'Do something else
End Select
Въоръжени с метода AccessError, можете да подобрите този код, като добавите коментар с кратко описание на всеки номер на грешка:
Select Case Err.Number
Case 2452 'invalid reference to the Parent property
'Do something
Case 2455 'invalid reference to the property
'Do a different thing
Case 2467 'expr refers to object that is closed or doesn't exist
'Do something else
End Select
Съображения за интеграция на база данни за грешки
Ако използвате база данни за грешки – като FogBugz – която предлага функция за групиране на грешки въз основа на тяхното описание, може да искате да използвате общ съобщение за грешка в темата на доклада за грешка (или каквото поле прави групирането) и заснемете конкретното съобщение за грешка в полето с подробности за събитието за грешка.
Обсъждам този проблем в контекста на моята персонализирана функция за хвърляне на грешки тук:Изхвърляне на грешки във VBA:Проблеми с интеграцията на база данни за грешки.