Макро отстраняване на грешки и отстраняване на неизправности

Обикновено, за отстраняване на грешки в макрос, той се изпълнява в стъпков режим. За да активирате този режим, натиснете бутонаНа стъпки(една стъпка) на лентата с инструменти в прозореца на Macro Constructor или изберете командата от менютоИзпълнение, На стъпки(Изпълнение, една стъпка). След това, преди изпълнението на всяка макро команда, ще се появи диалоговият прозорецMacro Single Step(Macro Single Step) (фиг. 11.14).

Този прозорец показва името на макроса, името на изпълнимия макрос, условието за неговото изпълнение и аргументи. В същото време в полетатаУсловие(Условие) иАргументи(Аргументи) се виждат стойностите на условния израз и аргументите на макро командата. Ако в линията на макроса не е указано условие, полето Условие винаги ще показваВярно(Вярно). Бутоните отдясно на полетата в този прозорец ви позволяват да изпълните следващата макро команда, да прекъснете изпълнението на макроса (например, ако е ясно, че аргументите са изчислени неправилно) и да продължите изпълнението в нормален режим, т.е. не стъпка по стъпка.

грешки

Фиг. 11.14.Диалогов прозорецСтъпка през макрос

Ако възникне грешка по време на изпълнение на макрос, се появява диалоговият прозорецГрешка при изпълнение на макрос(Неуспешно действие), подобно на прозорецаИзпълнение на една стъпка на макрос(Единична стъпка на макрос), но без възможност за продължаване на процеса (бутониСтъпка(Стъпка) иПродължи(Продължи) не са налични). Можете да прекъснете изпълнението на макроса само чрез натискане на бутонаПрекъсване(Спиране). Прозорецът показва макроса, съдържащ грешката.

Намирането на грешки в макросите, като правило, не създава много трудности. Това се дължи на факта, че:

  • повечето синтактични грешки се проверяват при въвеждане и системата просто няма да ви позволи да въведете грешно име на макроса илиусловен израз (това обаче няма да защити срещу въвеждане на грешно име на обект, например несъществуващ формуляр или контрола във формуляра);
  • макросите обикновено са доста прости и не съдържат дълги поредици от макроси, в противен случай е по-добре да напишете процедурата на VBA, тъй като езикът VBA предоставя повече функции и има много по-добри инструменти за отстраняване на грешки.

Основните грешки, които възникват в макросите, са свързани или с неправилно въвеждане на имена на обекти, след което Access не може да намери съответния обект, или с факта, че обектите, посочени от макроса, не са налични, например формулярът не е отворен. Следователно, когато възникне грешка, първото нещо, което трябва да проверите е дали имената на обектите са въведени правилно и дали формите, използвани в условията или аргументите на макросите, са отворени.

Преди да използвате препратки към формуляр или контрола, се препоръчва да проверите дали формулярът е отворен с помощта на функцията isLoaded(). За съжаление тази функция не е стандартна функция на Access, но обикновено е включена в модула Utility Function на базата данни на Northwind. Можете да го копирате от там във вашата база данни.

Стандартна техника за отстраняване на грешки както на процедури, така и на макроси е да се показват специални съобщения на екрана, които показват преминаването на определени етапи от процеса. В макросите това става чрез вмъкване на допълнителни макроси MsgBox за показване на такива съобщения. Освен това в съобщението можете да покажете стойностите на свойствата на контролите, например: "Цена на продукта = " & Форми!Продукти!Цена

Можете лесно да деактивирате показването на съобщения за отстраняване на грешки, като въведете False в колоната „Условие“ до съответните макроси.

Другстандартният трик е да зададете точки на прекъсване. Използва се за спиране на изпълнението на макрос в определен момент, преди процесът да приключи. За да направите това, използвайте макро командата StopMacro (StopMacro). Макросът ще се изпълни преди макроса StopMacro, след което можете да проверите резултатите. По този начин е възможно да се локализира грешката до макроса.