LEADERSOFT.ru Разработка на заказ программ и сайтов
ЕСЛИ БАЗА ВАМ НУЖНА В ЛИДЕРСОФТ ЗАЙДИ СПЕРВА!
Список всех статей ... Подписка на новости (рассылка через subscribe.ru)




































Выпуск 9. Как провести 'сторнирование' в Access

Подписка: "Access 2000 - программирование и готовые решения"
Дата:         18.09.2000
Сайт:         http://www.leadersoft.ru
Слоган:     Если база Вам нужна, в LeaderSoft зайди сперва.
Комментарий: 
      Мы разрабатываем по заказам клиентов различные программы, используя Microsoft Access. Базы данных разрабатываются "с нуля" или, используя готовые решения (Склад, Касса, Банк и т.п.), что позволяет достаточно гибко решать финансовые вопросы по оплате услуг за разработку. Для регистрации заказа заполните форму: Регистрация заказа на разработку


Введение. Данный выпуск рассылки рассказывается о различных вопросах, с которыми встречаются пользователи базы данных Access.

Внимание. На сайте: www.leadersoft.ru добавились новые вопросы по программированию:
Аварийные ситуации (1), Бизнес(1), Другие(1), Драйверы(1), Запросы(1), Лекции(1), Массивы(2), Меню(1), Отчеты(1). Часть этих вопросов опубликована в подписке, к некоторым из них - есть решения в формате *.mdb.

I. [Склад] Как провести сторнирование в Access?

1. Сторнирование - это бухгалтерский способ исправления ошибок в проводках. Отмечается он красным цветом. Сущность такой записи в том, что надо при сложении 2 чисел результат не увеличивается, а уменьшается. Например, 531+200 (красным) = 331

2. Чтобы ввести в форму красное число, Вам надо для данного поля определить формат для положительных и отрицательных чисел: Сумма.Format = "0.00;0.00[Red]". Теперь, когда Вы будете вводить отрицательные числа они будут форматироваться в "красные", а общая сумма будет рассчитываться как 531-200. Внимание, используя такой формат чисел, всегда проверяйте результат. Так как в некоторых сложных случаях возвращается неправильное значение, например, 731. Готовое решение есть в файле: la_form.mdb

II. [Проблема]. После работы с базами данных модули mde увеличиваются в размере в несколько раз. Иногда при работе выдается сообщение "не хватает памяти". Почему это может происходить?

1. Вы постоянно записываете и удаляете записи из таблиц. Во всех базах данных при удалении записей из таблиц, не происходит их "физического" уничтожения. Они сохраняются в таблицах, поэтому со временем база данных растет, для этого ее необходимо ее сжимать (см. лекции 2c). Если Вы хотите чтобы за Вас базу данных сжимал Access, проделайте следующие шаги через главное меню: Сервис -> Параметры -> Общие -> Сжимать при закрытии (установите флажок на эту операцию)
2. Из вопроса ясно, что у Вас база данных содержит одновременно таблицы, формы и другие элементы. Это неправильно. Чтобы программа корректно работала, надо из вашей базы данных создать 2, т.е. в одной будут таблицы (подчиненная, *.mdb), а в другой все другие элементы (главная, *.mde). Главная база данных связывается с подчиненной через пункт меню: Сервис -> Служебные программы -> Диспетчер связанных таблиц. Проделайте эти действия и рост размера базы данных прекратится. Внимание! периодически надо сжимать подчиненную базу данных - это делает администратор или программа, которую Вы должны написать (пример сжатия возьмите из лекций).

III. [Меню] Посетил Ваши Лекции по созданию баз данных на Access 2000. Но остался вопрос: "Как скрыть Menu Bar?"

Свойство MenuBar принадлежит формам и отчетам, закрывая любой из них, Вы тем самым и закрываете меню. Если же Вам, при работе с формой надо скрыть ее меню, например, при открытии отчета то используйте команду Docmd.ShowToolbar. Таким образом, если Ваше меню имеет название "Мое меню", то скрыть его можно командой DoCmd.ShowToolbar "Мое меню", acToolbarNo. Решение для формы приводится в файле: la_menu.mdb

IV. [Массивы] В VB 6.0 имеется возможность создавать массив объектов вида line(0), line(1), line(2), и т.д. и работать с этим массивом как с обычным массивом данных - например обрабатывать с помощью циклов. В VB для Access 2000 такой возможности нет ...

Я бы не стал так категорично говорить что в Бейсике Access нельзя создавать массивы объектов. Он "напичкан" ими больше, чем любой другой язык объектного проектирования. Если внимательно посмотрите на лекции, то я созданию всего ОДИН объект appAccess (Новый калькулятор.mdb), но в котором хранятся десятки, если не сотни массивов объектов. Для ссылок на объекты используется слово (set), для доступа к свойствам объекта точка (.)
Ну а теперь попытаюсь ответить на ваш вопрос. По вопросу ясно, что Вы желаете создать объект типа "Линия", в котором надо хранить ее координаты начала и конца, т.е. переменные x1,y1... Используйте слово Type для создания своего элемента. Внутри него Вы можете использовать следующие типы данных: Byte, Boolean, Integer, Long, ..., а также объекты Access и созданные Вами переменные. Решение приводится в файле: la_array.mdb.