Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Microsoft Access - программирование и готовые решения


Выпуск 69. Материалы для начинающих (16 урок)

Подписка: "Access 2000 - программирование и готовые решения"
Дата:         05.03.2007
Автор:     Алексей Канищев
Сайт:        http://www.accessoft.ru под редакцией с http://www.leadersoft.ru/
Новые материалы: интерфейс
На сайте AccesSoft публикуются статьи, посвященые вопросам, связанным с разработкой и продвижением приложений Access. Вы так же можете ознакомиться с готовыми программами, получить исходный код, купить программу, связаться с автором для решения вопроса о доработке программы под Ваши требования.



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

Программирование с человеческим лицом.

Почти каждый программист знает, как важны удобство использования программ и дружественный интерфейс (usability и friendly user interface). И всё же, программисты и пользователи - это два разных мировоззрения. Пользователь чаще желает простоты, а программист мыслит категориями: универсальности, настроек и дополнительных возможностей. Справку и руководство пользователи читают, только если им интересна какая-то функция. Если с первого знакомства программа в целом - непонятна, то её просто удалят.

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

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

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

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

Первое, что вы почувствуете: вы, перед этим «мастером», как минимум - глупо выглядите. Мало кто платит деньги за то, чтобы чувствовать себя дураком. Второе: Вы начинаете думать, что присесть на что-либо - это не так просто. А обслуживание своей возможности сидения на табуретке - вообще целая наука.

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

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

Мне, наверное, повезло. Когда я только начал писать первые программы на MS Access - я сам же был их непосредственным пользователем. Я программировал базы данных и оболочки к ним для маркетинговых исследований и сам же был их оператором - вбивал анкеты.

Это сказалось на моём стиле программирования: интерфейс был, в прямом смысле «как для себя». Я вылизывал эргономику до совершенства: экономил каждое движения пальцев над клавиатурой, а мышкой не пользовался вообще, потому что использование мыши оказалось не эффективным по трудозатратам.

Представьте себе интерфейс, где есть пусть даже 10 лишних нажатий клавиш (и их сочетаний). Ничего страшного, многие программы страдают и большим излишеством? А теперь - представьте, что Вы - оператор базы данных, которому надо вбить 10 000 анкет. Получаем 100 000 лишних движений! Не жутко? :)

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

Представьте себя пользователем, «включите дурака» (не забудьте потом выключить! :)), поработайте в своей программе часок-другой. Такой тест-драйв даст много полезной информации. Покажите программу вашим близким, далёким от программирования. Если они не разобрались на 15 минут - то вам ещё есть над чем поработать.

Плоха статья без примеров. Один из вариантов программы «для людей» - программа «Окна-Двери 1.20» - для расчёта окон, дверей и балконов. Я написал её с точки зрения пользователя. Первый же отзыв о программе был такой: «Алексей - где ты научился такие простые программы писать?». Даже инструкцию читать не хотели, и так всё поняли. Скачать программу можно с моего сайта: http://alexvk.ru/window/. Дистрибутив занимает всего 290Кб, программа написана на Access 2003.

Статья наверняка вас чем-то зацепила, у вас есть свой опыт по программированию с человеческим лицом. Давайте им делиться! Напишите мне, и на страницах этой рассылки появится новый, интересный материал.

Постоянный адрес этой статьи в интернете: http://alexvk.ru/articles/user-interface.php


Ответы на вопросы
Вопрос 1. Добрый день
Подскажите, есть в форме путь к файлу xls. Какую процедуру навесить на кнопку для открытия?
  Ответ. Application.FollowHyperlink strPath
Вопрос 2. Подскажите пожалуйста такая проблема: в отчете есть три выводимых поля
1 Сума
2 Валюта
3 Еквивалент
Необходимо чтоб если поле валюта было например UAH то поле еквивалент равнялось [SUMA]\5.05, Если USD то поле еквивалент равнялось [SUMA] ?
  Ответ. Можно использовать IIF([Валюта]='USD';[SUMA];[SUMA]\5) в запросе отчета.
Вопрос 3. Перед репликацией забыл дать доступ одному пользователю к одной таблице. Вроде все просто: так как дать доступ в реплике нельзя (так "оно" сообщает), открывается основная реплика и там дается доступ. НО! В основной реплике доступ есть (можно "поставить-снять"- нет проблем) НО в реплике он (доступ) не появляется. И основная реплика и реплика "пользуются" одним и тем же Secured.mdw. Синхронизация не приводит к "появлению" доступа. Я- администратор (начинающий) БД и владелец всех объектов БД. Win2000, MSAccess-2003 Может есть идея- в "чем собака порылась"? Заранее благодарен.
  Ответ. При репликации в каждую таблицу mdb добавляются 4 ключевых поля, сам же файл mdw не реплицируется. Туда ничего не добавляется. Возможный выход - создаете новую базу данных mdb и из главной реплики туда загружаете все таблицы. Далее удаляете все импортированные оля репликации. Далее нужно повторить все действия по репликации и защите базы данных.

Вопрос 4. Добрый день, подскажите пожалуйста:
1.Необходимо чтоб а поле отчета если оно пустое выводилось "0,00" (отчет не хочет считать если одно из полей пустое)

  Ответ. Формат поля = "# ##0,00;# ##0,00;0,00;0,00". Ввести без кавычек.
Вопрос 5. Подскажите как быть в одном блоке If необходимо проверка еще на значение как правильно оформить?

If me.Поле0 = "USD" And me.Поле1 = "2" Then
    MsgBox "Ok"
    If me.Поле3 = "2" And me.Поле4 = "5" Then
        MsgBox "False"
    End if
End If

Ответ.  flag1 = Cbool(me.Поле0 = "USD" And me.Поле1 = "2")
                 flag2 = Cbool(me.Поле3 = "2" And me.Поле4 = "5")

                If flag1 = True And Flag = True Then msgbox "ОК"


В избранное