Рассылка статей | Программирование и готовые решения
Leadersoft.ru

Рассылка статей

Программирование и готовые решения

В этом разделе сайта дается информация от https://leadersoft.ru о статьях по программированию, ответах на вопросы и др. Статьи рассылаются подписчикам и публикуются на разных сервисах. Возможно некоторая информация устарела и ссылки не работают, но эти сведения могут быть полезны, если Вы серьезно занимаетесь разработкой баз данных

Выпуск 50. Аутсорсинг баз данных

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

Общие требования

1. Программное обеспечение разрабатывается, используя Microsoft Office 2003 или 2000, XP2.
2. Оцените примерное время на разработку утилиты. Срок ее разработки не должен превышать разумное время. Обычно это 2-3 дня.
3. Если Вы в состоянии решить задачу, то выберите номер технического задания и вышлите заявку в произвольном виде по email. Обязательно укажите контактную информацию и время для разработки утилиты.
4. Названия таблиц полей или функций желательно давать на английском языке.
5. Если заявка свободная, то к Вам придет подтверждение об участии в работе. После этого сообщения, можно разрабатывать утилиту.
6. Виды оплаты за работу. Webmoney, Безналичная, Наличная формы
7. Свободна ли данная заявка можно посмотреть по адресу

 

Линии и окружности

1. Необходимо разработать программу для рисования линии и окружности в базе данных.
2. В качестве источника информации надо взять за основу учебный пример (5 и 7) из файла: la_form.zip

3. Необходимо в программы (funArc, FunLineTo) изменить так, чтобы они рисовали линии на экране не в пикселах экрана, а в твипах базы данных. Смотрите функции.
    Call funArc(hDC, 5, 5, 200, 100, 15, 30, 150, 150)   
    Call funLineTo(hDC, 150, 200)
4. Необходимо разработать утилиту funDrawPicture(tblName), которая по точкам из таблицы рисовала ломаную линию.
5. Бюджет: 300 руб.
6. Бонус: участие в проекте, связанном с графикой в базе данных

Интернет скрипт

1. Необходимо разработать скрипт для сохранения заказа в базе данных 
2. В качестве источника первоначальной информации надо установить Интернет-магазин (webshop7.zip). Изучить скрипты на vbs и написать простую утилиту для сохранения параметров заказа в базе данных.
3. Бюджет: 300 руб.,
4. Бонус: участие в проекте, связанном с Интернет-заказами
5.  Дата размещения 27.10.2005

ftp доступ

1. Необходимо изменить в программе (смотрите классы в примере) функцию, которая будет выводить сообщения об ftp загрузке в форму, а не в строку статуса.
2. Загрузите пример по ftp доступу: data003.zip
3. Далее вместо функции SysCmd(acSysCmdSetStatus, "…”), выводящей информацию о загрузке данных в строку статуса Access, собственную функцию. Цель этой функции вывод данных в форму (примерно так, как организовано в антивирусной программе). Работу такой формы можно посмотреть в учебном примере номер 4 файла: la_activex.zip
4. Бюджет: 300 руб.
5. Бонус: участие в проекте, связанном c Интернетом
6.  Дата размещения 27.10.2005

Заголовки объектов

Источник: projects.zip
1. Необходимо создать функцию, которая будет просматривать все объекты формы в цикле, находить свойство caption и сохранять имя объекта и значение caption в таблице. Также должна быть создана обратная функция, которая бы восстанавливала значение caption из таблицы для всех объектов.
2. Бюджет: 300 руб.
3. Бонус: участие в проекте, связанном с англоязычным интерфейсом базы данных
4.  Дата размещения 27.10.2005
 Внимание. Эта задача решена. Тема снята с учета.

Выпуск 49. Бизнес аналитика

Вступление 
    Иногда бывают задачи в области разработки баз данных, которые очень сложно решить. Это связано с тем, что проект, который необходимо сделать является очень сложным для понимания. Как говориться, не за что зацепиться, чтобы его начать раскручивать.
    Например, представьте решение задачи по теме "Финансовый анализ холдинга" или "Производственная себестоимость". Тут нужны знания не только хорошие знания программирования, но и знания в области экономики и анализа бизнеса компаний.
    С другой стороны, если взять задачу учет "Клиенты предприятия", то большинство догадается, что надо записать их в таблицу и организовать их поиск по ИНН, Названию, Телефону и т.п. Это и есть описание бизнес логики данной программы.
    Далее в этой статье и дается краткое описание для разработки технического задания на базу данных "Финансовый анализ" и "Производственная себестоимость". Сейчас решение этих задач является одним из важных направлений в управленческом учете. Такого класса программы нужны финансовым, коммерческим, генеральным директорам. Связано это с тем, что конкуренция между предприятиями возрастает, требуется оптимизация расходов и снижение затрат на производство и управление компанией.
 

Финансовый анализ

   Введение. Решая задачу складского учета, возможно вы программировали финансовую задачу по поставщикам и покупателям. Например, учитывали кто и сколько кому заплатил, какая была оплата: наличная и безналичная, определяли дебиторов и кредиторов. Финансовый анализ - это уже более сложное решение бизнес задачи. Необходимо проанализировать не только товары, денежные средства в кассах и банках компании и ее филиалов, но и основные средства, инвестиции, фонды и т.п. Все это может учитываться в нескольких валютах: рубли, доллары, евро, а потом сводится к одной валюте и формированию управленческого баланса предприятия.
  Возникает вопрос. А не может ли это сделать бухгалтерская программа. Это практически не возможно. Для загрузки данных в бухгалтерию потребуется потратить много времени, на ввод и проверку данных. При этом типовая отчетность в бухгалтерии будет отличаться от отчетности финансового анализа, и следовательно ее нужно будет дорабатывать таким образом, чтобы не разрушилась функциональность бухгалтерской программы. Гораздо проще найти решение путем построения отдельной базы данных, а некоторые данные импортировать из бухпрограммы.
   Решение. Для решения задачи финансового анализа необходимо определить разделы учета. Ниже в статье дано их название с кратким описанием. Если необходимо посмотреть на возможный интерфейс объектов базы данных, то нажмите ссылку: финансовый анализ. И так, что нужно учесть:
  • Основные средства  - этот раздел предназначен для учета основных средств компании по филиалам (например, Москва, Санкт-Петербург, Новосибирск ...) или подразделениям филиала (например, Бухгалтерия, Секретариат, Отдел снабжения ...). Это позволяет избежать излишней детализации отчета по основным средствам. Учет ОС ведется на начало и конец периода с учетом их амортизации.
  • Денежные средства - в этом разделе базы данных предполагается организовать учет денежных средств в банках и кассах подразделений компании. Например, деньги а Альфабанке, Сбербанке, в рублевой кассе и т.п.
  • Дебиторы и Кредиторы. Этот раздел базы данных необходим для учета дебиторов и кредиторов компании. Далее на основе его формируется отчет по покупателям (частичная оплата) и поставщикам (дебиторская и кредиторская задолженность).
  • Товары на складах. Отчеты этого раздела нужны для анализа информации по товарам, находящимся на складах (торговые точки, главный склад, удаленный филиал и т.п.).
  • Инвестиции. Раздел необходим для учета инвестиций компании. Например, открытие новых торговых точек, ремонт помещений и т.п. Инвестиции должны учитываться по смете на начало периода и фактически на конец периода. При этом должно рассчитываться отклонение этих инвестиций.
  • Учет фондов. Специальный раздел базы данных предназначен для анализа фондов предприятия. Например, Фонда Развития, Риска и т.п.
  • Издержки предприятия. Каждое предприятие имеет различные издержки. Например, расходы на офис, персонал, торговлю и т.п. Их можно разделить на прямые и косвенные. В этом разделе предполагается вести их учет и формирование отчетности. Потребуется как минимум 3 вида отчетов.
 После разработки и учета в базе данных вышеперечисленных разделов, можно перейти к получению консолидированной отчетности по компании. На этом этапе необходимо разработать следующие виды отчетов.
  • Прибыль и Убытки - этот отчет необходим для получения итоговой информации по прибыли и убыткам компании. Например, Чистые продажи, Стоимость реализованной продукции, Операционные расходы, Маржинальная прибыль, Чистая прибыль и т.п.
  • Баланс филиала - этот отчет дает сводную информацию по филиалу компании, а именно, учитывает ее активы и пассивы по статьям финансового учета.
  • Баланс компании  - этот отчет дает сводную информацию по компании, аналогично отчету филиала. Статьи компании могут отличаться от баланса филиала.
  Очень важно для финансового анализа разработать правильно интерфейс. Весь учет необходимо организовать по статьям. Эти статьи необходимо привязать к объектам учета. Обязательно необходимо обеспечить финансовый учет как минимум в трех валютах: рубли, доллары и евро. Следовательно, в базе данных необходимо создать ряд справочников, которые будут позволять вводить, добавлять и изменять эту информацию. Предполагается разработать следующие разделы интерфейса.
  • Объекты учета - Под объектами учета в базе данных предполагается организовать учет специальных разделов, связанных с финансовыми статьями. Например, подразделения, филиалы, основные средства, услуги и т.п. Допуск на редактирование объектов должен иметь только администратор.
  • Статьи учета - это специальные статьи, привязанные к объектам учета. Например,  Расчетный счет в банке,  Частичная оплата, Валовая прибыль, Амортизация и т.п. Допуск на редактирование статей должен иметь только администратор.
  • Ввод данных - это форма разрабатывается для поиска и ввода данных операторами по статьям и объектам финансового анализа

Производственная себестоимость

   Введение. Практически рынок товаров сейчас достаточно насыщен, поэтому многие предприятия занимаясь торговлей постепенно переходят к производству, т.к. производить продукцию в некоторых случаях оказывается более выгодно, чем закупать. Главным для производственного предприятия является расчет себестоимости выпускаемой продукции для того, чтобы проанализировать экономическую эффективность предприятия.
   Ссылка по теме: Производственная себестоимость
  Решение.  Попробуем определить основные разделы технического задания для разработки базы данных по расчету себестоимости изготовления изделий. Вот они:
  • 1.1. Учет основных фондов
    1.2. Оборотные активы предприятия
    1.2.1. Сырье, материалы, покупные комплектующие
    1.2.2. Заработная плата
    1.2.3. Расходы на содержание и эксплуатацию оборудования (РСЭО)
    1.2.3.1 Определение потребности в энергетических ресурсах
    1.2.3.2 Расчет топлива и смазочных материалов
    1.2.3.3 Малоценные и быстроизнашивающиеся инструменты
    1.2.3.4 Затраты на текущий ремонт оборудования
    1.2.3.5 Амортизационные отчисления
    1.2.4. Итоговая ведомость расходов по РСЭО
    1.3. Общецеховые расходы
    1.4. Внепроизводственные (коммерческие) расходы
    1.4.1. Расчет общей суммы издержек и определение цены продукции
    1.6. Расчет прибыли и рентабельности

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

  • Учет основных фондов
    Основные производственные фонды предприятия включают в себя все средства труда, которые функционируют в сфере производства и непосредственно или косвенно участвуют в производственном процессе. При этом надо учесть производственные помещения, станки, оборудование и транспорт, особенно такие характеристики как размер помещения, стоимость транспорта, мощность оборудования и т.п., влияющие на расчет себестоимости изделия.
     
  • Оборотные активы предприятия – это те активы, которые в результате хозяйственной деятельности полностью переносят свою стоимость на изделие и принимают однократное участие в процессе производства. Например, сырье, материалы, топливо и т.п.
     
  • Общецеховые расходы - к ним можно отнести: текущий ремонт здания и помещений, возмещение износа малоценного и быстро изнашивающегося инвентаря, расходы на содержание здания и помещений, расходы на тарные материалы
     
  • Внепроизводственные (коммерческие) расходы
    К внепроизводственным в основном относятся коммерческие расходы, например, расходы на рекламу, расходы на проведение маркетинговых исследований, расходы на создание собственных торговых точек, оплату услуг юриста, нотариуса  и т.п.

После расчета расходов (себестоимости изделия) необходимо посчитать доходы (выручку). Выручка– это сумма денежных поступлений от реализации продукции, т.е. произведение цены единицы продукции и объема выпуска в штуках (метрах и т.п.). Когда решены задачи эти задачи, можно перейти к итоговому анализу производства продукции.

  • Расчет прибыли и рентабельности
    Различают балансовую и чистую прибыль. Балансовая прибыль определяется как разница между выручкой от реализации продукции и затратами на ее производство и реализацию. Чистая прибыль – это прибыль, остающаяся в распоряжении предприятия после вычитания налога на прибыль и других платежей, предусмотренных законодательством.

   На заключительном этапе проектирования базы данных (расчета себестоимости) необходимо проанализировать полученную рентабельность. Например, предприятие будет довольно эффективным, если разница в рентабельности будет не более 10-15%.

  • Итоговая отчетность
    При получении итоговой отчетности по себестоимости важно просмотреть отчет по калькуляции производства изделия. В нем отражаются расходы на производство изделия не только в денежном, но и процентном выражении от суммы затрат.

Ответы на вопросы

Вопрос по аналитике. Недавно пришел вопрос по электронной почте, связанный с интернет торговлей. Будущему инженеру выдано задание написать диплом на тему: "Интернет магазин". Он скачал программу интернет-магазин и спрашивал какой язык программирования используется в этой программе (фраза из письма - "кажется basic"). Вопрос меня поставил в тупик. Если ВУЗ готовит программистов, то хотя бы названию и применению языков программирования должны научить студентов.
  Ответ. Если проанализировать структуру программы, то получается следующее: для каталога магазина (html страниц) используется язык vbscript (visual basic script), мастера магазина построены на основе Access, используя vba (visual basic for application), при этом даются ссылки на внешние библиотеки (dll), то для их создания нужен visual basic. Все эти три языка программирования: vb, vba, vbscript имеют много общего (%90), а разница заключается только в описании переменных, наличия внутренних функций и средств отладки. Например, для отладки интернет приложений или создания свои dll библиотек потребуется установить Microsoft Visual Studio, хотя для работы с программой это не важно.

 

Выпуск 48. Несколько легких вопросов

Ответы на вопросы

Вопрос 3497 У меня вопрос по шаблонам Word. В форме в поле даты стоит длинный формат даты, а по закладке в документе выходит краткий. В чем причина? 
  Ответ. Дата в базе данных имеет тип double (дата[.]время), где первая часть числа (до разделителя) хранит данные по дате, а после разделителя данные по времени. Вывод числа в офисные приложения будет зависеть от различных факторов установленных по умолчанию как в самом приложении, так и в операционной системе. Например, краткий формат времени, американский стандарт записи, разделитель точка или запятая и т.п. Одно из решений проблемы видится в переводе даты из числа в текстовую переменную. В Access это делается через Format: (Me.Date1 = Format(Date, "dd mmmm yyyy") & " г.") Теперь, если поле Me.Date1 выводить в Microsoft Word будет правильный результат: 30 декабря 2004 г. Обратите внимание, чтобы дата выводилась прописью, необходимо указать 4 буквы m, если укажите большее  количество, то результат будет неправильный.
Вопрос 3265 Есть memo поля! Как их читать в отчете ! Появляется  абра-кадабра!
  Ответ. Все memo поля в базе данных разбиваются на группы по 512 байт (могут разбиваться и по другому). При этом в запросах, использующих такие поля, могут возникать и проблемы. Например, если выводится информация больше 2048 символов в Microsoft Word, то может действительно отображаться абра-кадабра. Найти однозначное решение, как с этим бороться затруднительно, это может быть или ошибка офиса или какие-то ограничения на отображение информации. Выход из данного положения найден такой. Информация из запроса записывается во временную таблицу, а уже на ее основе строится отчет в Microsoft Word. В этом случае, проблема должна изчезнуть.
Вопрос 3702  Из формы вызываю функцию (например, dblClick по полю). Никакие параметры в функцию н�� передаются. Как обратиться к элементам этой формы из данной функции и получить их свойства?
  Ответ. Вообще, если не использовать ActiveControl, то можно в функцию передать имя управляющего элемента.  Далее зная имя элемента можно обратиться к форме через parent. Например, так.
Private Sub Form_Load()
Me.Date1.OnDblClick = "=funDblClick([Date1])"
End Sub
Function funDblClick(ctl As Control)
MsgBox "Данные =" & ctl.Value & ", форма=" & ctl.Parent.Name
End Function
Вопрос 3705  Форма строится на основании запроса. Как сделать, что бы поле формы отображалось только в том случае, если оно получает от запроса определенную запись, и не отображалось, если эта запись пустая?
  Ответ. Если требуется поле погасить поле для всей формы, то это можно сделать во время ее загрузки, т.е. событие Form_Load, но если требуется контролировать поле для каждой записи, то лучше обработать текущую запись.
Private Sub Form_Current()
Me.Поле1.Visible = Not IsNull(Me.Поле1)
End Sub
Вопрос 3707  В таблице порядка 70 полей, 16 индексов. Это много? 
  Ответ. Вообще число полей или индексов в базе данных зависит только от разработчика. Сколько нужно, столько он и делает. С другой стороны, если много полей и индексов, то уже для базы данных имеет скорость загрузки данных. Рассматривая, например, форму на базе такой таблицы, то можно предположить, что данные будут выводиться достаточно долго. Для этого форма разбивается на ряд папок, информация в которые загружается при их открытии. Вывод. Если в таблице большинство текстовых полей и индексация ведется по ним, то это неправильно. Необходимо в таблице провести оптимизацию, т.е. найти повторяющиеся записи и вывести их в отдельные таблицы.

Выпуск 47. Техника быстрого проектирования. Часть 3

Новости

 Сеть интернет магазинов

 
  Вышла новая программа "Сеть интернет магазинов 3.0" Она предназначена для создания сети интернет магазинов. Все магазины создаются из прайс-листов, записанных в формате Excel, используя мастера базы данных. Это позволяет достигнуть очень высокой скорости управления магазинами. Всего несколько минут требуется на загрузку данных. Освобождается много времени для занятием бизнесом, а не изучением интернет технологий. 

 Новый прайс-лист

 
  Вышел новый прайс-лист на готовые базы данных и их разработку. Этот прайс-лист имеет различные категории программного обеспечения. Для тех, кому нужны готовые базы данных смотрите раздел: • Готовые решения

3 Шаг. Разработка формы авторизации

 Введение

  На этом этапе проектирования будет рассмотрен вариант построения Форма авторизации в базе данных. Дается подробная методика, что должна делать эта форма. Примеры реализации данного интерфейса можно скачать с сайта: www.leadersoft.ru. Данные примеры используют внешние библиотеки.

 Назначение

  Открывая "профессиональную" базу данных, перед Вами всегда появляется форма авторизации. В этой форме есть два поля для ввода имени пользователя и его пароля. Только после того, когда будет введен правильный login (имя) и password (пароль), можно будет работать с данными.
  В основном это связано с тем, что каждая база данных должна иметь ограниченный доступ к своей информации. Необходимо сохранить ранее введенною информацию, чтобы "случайные люди" не могли ее прочитать, удалить или использовать в своих целях. Это первое назначение формы. На самом деле на нее можно возложить еще ряд функций, о которых не догадывается пользователь и даже некоторые разработчики. Вот они.
 - 1. Модификация структуры базы данных.
 - 2. Автоприсоединение.
 - 3. Вывод логотипа программы.
 - 4. Загрузка словаря
 - 5. Определение главного меню
Дадим более подробное описание этих свойств в следующем разделе описания.

 Методика проектирования формы

  1. Модификация структуры базы данных - это свойство должно применяться в том случае, если в структуре таблиц базы данных произошли изменения. Например, Вы добавили новые поля и таблицы в базу данных и в связи с этим изменили ее интерфейс и передали пользователю. Так как он работает с таблицами еще старой версии базы данных, то при запуске новой программы произойдут ошибки. Чтобы этого не случилось, до этапа открытия новых таблиц, необходимо проверить структуру таблиц. Желательно сделать это достаточно быстро. В данной технологии применяется следующая идея. Существует файл: шаблон.mdb. Он содержит таблицы и запросы, некоторые из таблиц - пустые, другие заполнены данными (если предполагается использовать и их данные). При открытии базы данных из этого шаблона читается таблица AdmVersion, которая содержит номер новой версии базы данных. Если в присоединяемой базе данных, такая же таблица отсутствует или содержит другую версию базы, то начинается модификация базы и в этот файл будут добавлены новые поля и таблицы из шаблона. При этом, на заключительном этапе в таблице AdmVersion будет изменено поле, отвечающее за номер версии. Оно станет равным значению поля аналогичной таблицы в шаблоне.

   2. Автоприсоединение. Часто открыв "любительскую" базу данных, которая состоит из интерфейса и таблиц оказывается, что для ее запуска нужно проделать ряд непростых действий, которые создают негативное впечатление о разработчике. Например, Вы должны ее разархивировать в каталог с:\programs\??? или открыть диспетчер связанных таблиц и с помощью него указать какой-то файл с данными и потом обновить связь с таблицами через меню Access. Для обычного пользователя это кажется ненормальным. Для профессионала - это указатель того, что база - любительская, и интерфейс ее не до конца продуман и, наверное, будут и другие проблемы при использовании. В данной методике применяется следующая идеология. На этапе авторизации, происходит проверка присоединения одной связанной таблицы. Если при этом окажется, что связи с ней нет, то в каталоге ../data выбирается файл с данными и автоматически привязывается к интерфейсу. После обновления связей база данных открывается. Небольшое замечание. Таблицы, которые необходимо привязывать указываются в таблице: AdmServerTables вашей новой базы.

 3. Вывод логотипа программы.
  
Эта функция не является обязательной для базы данных, но с другой стороны, если Вы желаете "отметить" чем-то свою разработку, то неплохо при открытии базы данных дать графическое изображение программы. Это позволяет пользователю быстро понять, для чего нужна база данных. По данной методике, графический файл не хранится в базе данных, а размещается в каталоге images\logo. Он имеет название LogoServerData.bmp. Прежде, чем форма авторизации появится перед пользователем, она считывает файл из указанной выше папки и загружает его в форму. С другой стороны, она может и менять общий вид от подключенных данных. Например, если в папке ../data, есть файлы: A.mdb (B.mdb ...)в папке ../images есть файлы: LogoА.mdb (LogoB.mdb ...), то при подключении к файлам с данными вид формы авторизации будет изменяться на нужный в зависимости от названия файла данных. Это позволяет пользователю графически контролировать подключение нужных данных.

 4. Загрузка словаря.
  
Эта функция также не является обязательной для базы данных, но с другой стороны она может иметь существенное значение при разработке интерфейса, имеющего несколько разных языков управления. Сущность методики заключается в следующем. В базе данных есть таблица: AdmTransDictionary c полем key (название объекта формы) и полями rus, eng и т.п., которые содержат нужный перевод объекта. Достаточно при загрузке формы вставить нужный флаг для перевода (rus или eng) и форма будет представлена в русском или английском варианте.

5. Определение главного меню
  
В зависимости от того, кто открыл базу данных, администратор, директор или рядовой пользователь, то можно специально настроить панель меню. Это требуется также для того, чтобы с базой данных могли работать несколько человек, имеющих разные привилегии доступа к меню программы.
 Описание интерфейса
     После описания методики построения формы авторизации дадим описание формы, применяемой в этом описании и примере. Интерфейс формы достаточно простой. Посмотрите на ее общий вид. Она имеет всего 3 поля. 1 поле - это ввод пользователя (login). 2 поле - ввод пароля (password). 3 поле (database) - выбор данных базы данных.  Запускается форма через макрос AutoExec или в поле "Вывод формы/страницы" или необходимо указать ее имя (см. пункт меню Сервис-Параметры запуска). В примере откройте папку: project и запустите файл: "Шаг 4 - вход в базу.mdb". 
   Примечание. Для того, чтобы форма авторизации не открывалась, надо держать ключ Shift.
Программирование формы
   Много было сказано слов о назначении формы авторизации, которая имеет малые размеры. Но для того, чтобы все это реализовать и запрограммировать потребуется еще меньше времени, чем при ее создании. Для этого создайте ссылку на библиотеки интерфейса: libcommon, libadmin.mdа, libforms.mda. Они находятся в папке library и необходимы для работы этой формы. После этого в форме авторизации надо написать указанный ниже код.

------- начало --------
'Private mfrm As clsAdmFormPassword
' Открытие формы
Private Sub Form_Open(Cancel As Integer)
Set mfrm = fcClassCreateAdmFormPassword(Me.Form)
' Me.strUser = "Администратор"
End Sub
------- конец --------
Конечно, создание этой библиотеки потребовало немного времени, но зачем об этом думать, если нужный результат достигается за несколько минут.

  3. Компилируем базу данных. Если будет ошибка, то проверяем привязку библиотек. Привязка к эти библиотекам ведется автоматически при открытии формы. Если это не произошло при первом открытии, сделайте это через пункт в редакторе VBA: Tools-Referenses ...
 Проверка интерфейса
   После создания формы, проведем проверку ее свойств. 
1. Модификация структуры базы данных.  
   Для этого откройте в папке templates\шаблон.mdb. Добавьте в него новую таблицу: test1 и в таблице AdmVersion измените версию базы данных.
2. Автоприсоединение.
   Переименуйте папку базы с примером на другое имя. После открытия файла: Шаг 4 - вход в базу.mdb, таблица AdmHelp будет привязана к новому источнику данных. 
3. Изменение логотипа. 
   Откройте файл с логотипом базы LogoServerData.bmp и напишите на нем текст. Далее откройте файл с примером и посмотрите на внешний вид формы авторизации
 Заключение
   Потратив 15-20 минут на изучение построения данной формы, Вы сможете быстро организовать авторизованный вход в базу данных.

Ответы на вопросы

Вопрос 3599 Какую литературу лучше всего приобрести по темам?
1. Создание классов и использование пользовательских событий.
2. Создание ASP(Active Server Page)
  Ответ. Вопрос ясен, но точного ответа дать не могу. Если у кого-нибудь есть предложения на этот счет, то прошу сообщить в конференцию
Вопрос по email. Конечно, это интересно так проектировать, но вот я уже давно пишу программу для нашего отдела, и до сих пор никаких классов и библиотек не потребовалось.
  Ответ. А никто и не заставляет Вас использовать классы и библиотеки. Цель рассылки познакомить разработчиков с различными методами проектирования. С другой стороны, у каждого свои потребности. Если Вам надо "вскопать огород", то и лопаты достаточно. Если же необходимо "вскопать поле в несколько гектар", то без техники не обойтись. 
  P.S. Кстати на базе такой технологии разработано уже несколько программ. Например, база данных "Сеть интернет магазинов". 
Вопрос 3601  Конкатекция строк в запросе Eсли какой аналог функции concat
  Ответ. В каждом языке программирования существуют функции работы со строками. В современных версиях языков разработчики уже придумали достаточно короткие решения. Например, на c++ (javascript) str3 = str1+str2. Используется обычный знак сложения. В vba и sql запросах применяется знак & (амперсанд). Ответ: str3 = str1 & str2.
Вопрос 3603 Удаление пробелов Как удалить пробелы (все) в столбце (таблицы),
автоматически.
  Ответ. Ответ очевидный, надо использовать запрос на обновление: UPDATE Таблица1 SET Таблица1.Поле1 = Trim([Поле1]); Дополнительный совет - надо такие задачи решать самостоятельно, иначе потом трудно будет научиться программировать.

Выпуск 46. Техника быстрого проектирования. Часть 2

2 Шаг. Разработка картотеки

 Введение

   Теперь когда мы научились проектировать простейшие справочники, то можно перейти к изучению более сложного объекта учета данных - картотекам.
   Еще раз запомним, что унификация интерфейса позволяет не только быстрее обучить сотрудников работе с базой данных, но и приводит к меньшему количеству ошибок при вводе информации.
 Загрузка примеров
      Для того, чтобы разобраться в данной технологии необходимо загрузить из файла la_step01.zip пример: "Шаг 3 - Создание картотеки.mdb".

 Методика

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

Примерами картотек могут служить складские карточки, папки со счетами, накладными и т.п. В качестве примеров картотек из разных баз данных можно назвать: Картотека предприятий, Картотека клиентов, Картотека складских документов и т.п.

 Описание интерфейса
   Команды картотеки аналогичны справочнику. Дополнительно к кнопкам справочника добавлены новые кнопки «Поиск», «Печать», «Обновить». Кнопка «Поиск» открывает вкладку поиска. «Печать» - вызывает отчет, который установлен на вкладке «Отчетность». «Обновить» сохраняет запись в базе данных и загружает новые данные из базы.
    Внизу формы располагается калькулятор, который позволяет выполнить вычисления математических выражений и функций, встроенных в базу данных.

   При нажатии кнопки «Поиск» открывается вкладка «Список» с таблицей, где вверху вкладки расположены поля – фильтрации (выделены желтым цветом). По этим полям осуществляется поиск. Например, введя данные в поле, автоматически будет устанавливаться фильтр на таблицу. Двойное нажатие на запись в таблице, позволяет ��ользователю быстро перейти на редактирование картотеки.

   При нажатии кнопки «Печать» печатается отчет. Вид выбранного отчета можно посмотреть, если перейти на вкладку Отчетность. На данном снимке экрана показано, что отчет для печати выбран строкой имеющей темный вид. 
   
   На вкладке "Отчетность" Вы можете еще и видеть флажок «Оптимизация загрузки». Этот флажок позволяет быстро загружать форму при повторном вызове.
Создание картотеки
    Создадим для примера картотеку, которая будет хранить информацию по анализу себестоимости и печатать отчет по калькуляции изделия (Это одна из самых сложных задач в области программирования).
   1. Определяем ключевое слово, например, Анализ. С этим словом будут связаны таблица " АНАЛИЗ изделия" и поля idАнализ (long), Анализ (text). Эти поля используются классом картотеки для поиска нужных записей в базе данных.
   2. Создаем картотеку (можно просто скопировать форму). Открываем класс формы и добавляем в нее текст.

------- начало --------
' Открытие формы
Private Sub Form_Open(Cancel As Integer)
Set mfrm = fcClassCreateFormMain(Me.Form, "idАнализ", "Анализ", "Удалить анализ: ")

' Определяем данные для подчиненной формы
Set mfrm.subFormList = Me.formАнализList

' Определяем отчет по умолчанию
mfrm.MainReport = "rptКалькуляцияИзделий"

' Определяем фильтры для записей. Поля должны иметь название
' с префиксом Filter_ обязательно

Me.Filter_Изделие.Tag = "([Изделие] like '*[Value]*')=True"
Me.Filter_Nдок.Tag = "[Nдок]=[Value]"
Me.Filter_Дата_1.Tag = "[Дата]>=[Value]"
Me.Filter_Дата_2.Tag = "[Дата]<=[Value]"

' Восстановление свойств
mfrm.ArrayRestore = "flagOptimization"
End Sub
------- конец --------

  3. Компилируем базу данных. Если будет ошибка, то устанавливаем ссылку на библиотеку libforms.mda. Она находится в папке library и необходима для работы форм. Привязка к библиотеке ведется автоматически при открытии формы. Если это не произошло при первом открытии, сделайте это через пункт в редакторе VBA: Tools-Referenses ...
  4. Проверяем работу кнопки "Поиск" и Печать.

   P.S. Обратите внимание на фильтрацию и название полей и подчиненной формы. Для тестовых полей используется ключевое слово like '*[Value]*. После компиляции базы данных [Value] заменяется на текст из данного поля.  Таким образом, набирая в поле часть фразы, например, "ООО" Вы сможете отобрать записи, где ООО встречается везде, а не только в начале поля. 
   Экспериментируя с разными значениями фильтров полей, Вы можете добиться разных способов отбора записей.
Заключение
       Потратив 15-20 минут на изучение картотеки и ее класса, Вы сможете создавать сложный интерфейс достаточно быстро.

Выпуск 44. Техника быстрого проектирования. Часть 1

Новости

    09.04.2004. Вышла новая программа "Склад и Интернет магазин". Она разработана для учета информации не только для обычных складов предприятия, но и для работы с внешними складами, имеющих структуру Интернет магазина. Такая программа позволяет обслуживать не только телефонные заказы, но и те, которые связаны с поступлением заявок по электронной почте.  

1 Шаг. Разработка справочников

 Введение

   При анализе информации по базам данных можно заметить, что большинство сайтов и литературы по этой тематике уделяет внимание объектному программированию функций интерфейса (кнопок, полей, списков и т.п.), но к сожалению в них практически нет информации по бизнес аналитике. Например, вы не сможете найти в одном месте короткие методики построения: финансового учета, обработки заказов, производственного учета так, чтобы эта информация могла быть использована и доработана под конкретные нужды предприятия.
   С другой стороны мы видим, что для предприятий становиться очень важным ускоренное внедрение баз данных, так, чтобы при минимальных финансовых затратах и времени разработки можно было решить достаточно сложные задачи. Например, на многих предприятиях работают 1-2 человека (могут работать и по временному соглашению), которые отвечают за администрирование локальной сети, разработку и поддержку программного обеспечения. Решение вопросов автоматизации на таких предприятиях возможно только в том случае, если Вы будите использовать методы быстрой разработки.
   Основные принципы можно сформулировать так:
  - оптимизация и привидение интерфейса к стандартным формам;
  - сокращение программного кода, путем вывода его в библиотеки;
  - разделение и привязка интерфейса к рабочему  месту каждого сотрудника
   Освоение этих методов может Вам
 - значительно сократить время и средства на разработку базы данных
 - повысить производительность разработки приложений в 5 - 10 раз.
 - уменьшить ошибки в программном коде на 50-70%
 - сократить сроки внедрения и обучения сотрудников до нескольких недель
 - быстрее реагировать на новые требования к базам данных
 - повысить качество и надежность программного обеспечения

В связи с важностью данной темы для разработчиков разработан цикл статей по следующим разделам:
I. Разработка единого интерфейса базы
   1 Шаг. Разработка справочников
   2 Шаг. Разработка картотек
II. Разработка административных функций
   3 Шаг. Вход в базу данных
   4 Шаг. Управление пользователями
   5 Шаг. Управление сетью
   6 Шаг. Архивация и восстановление
III. Постановка и создание бизнес задач:
   7 Шаг. Управление клиентами
   8 Шаг. Управление заказами.
   9 Шаг. Учет наличных денег (касса)
 10 Шаг. Учет безналичных денег (банк)
 11 Шаг. Другие решение ..
 P/S Разработка и описание бизнес задач требует длительного времени и хороших знаний этих процессов. Но статьи в рассылках будут выстраиваться так, чтобы можно было построить интерфейс практически любой базы данных. В этой рассылке дано описание статьи: "1 шаг. Разработка справочников"

 Загрузка примеров
     Для того, чтобы разобраться в данной технологии необходимо загрузить 2 примера (la_step01.zip) по базам данных. Описание их дано ниже.
"Шаг 1 - создание справочника.mdb" - создает простейший справочник по базам данных.
"Шаг 2 - связь справочников.mdb" - создает справочник с полями типа список и дата и привязывает к ним другие формы.

 С чего начать разработку базы?

    При ускоренном проектировании базы данных разработка базы данных начинается  с описания небольших форм справочников. При этом используется заранее созданная профессионалами специальная библиотека интерфейса. Она включает в себя специальный класс для создания и управления всеми объектами справочника кнопками, списками и полями.
   Таким образом, Вам надо только придумать интерфейс, и не надо каждый раз специально разрабатывать функции, которые будут управлять кнопками форм. За Вас это сделает библиотека справочника. В результате этого и достигается  значительная экономия времени на разработку базы данных.
   При этом надо учесть, что все команды стандартизованы и могут в случае необходимости изменены через форму справочника, используя встроенный язык VBA.

 Методика

     Справочник - это минимальный объект проектирования базы данных. Он включает в себя одну таблицу с ключевым полем, а также форму с полями, кнопками и некоторыми командами для обработки записей таблицы. Для некоторых полей-списков применяю��ся запросы. Справочник не имеет собственной системы поиска и печати, т.к. число записей и полей в таблице небольшое и нет смысла организовывать для него эти функции.
   В качестве примеров справочника из разных баз данных можно назвать: Единицы измерения (штуки, килограммы, литры),  статуса документа (ожидание, закрыт, в работе), тип дома (кирпичный, панельный, деревянный)
 Описание интерфейса
  Весь интерфейс справочника можно разбить на объекты, кнопки, команды и вкладки. Далее дается описание этих объектов.

   Кнопки - это объекты справочника, позволяющие выполнить простые действия с записью. Две кнопки на справочнике ОК и Отмена сохраняют или отменяют действия пользователя над записью справочника. Эти кнопки доступны любому пользователю базы, а не только администратору.

   Команды - это список действий пользователя над одной записью справочника. Эти команды могут изменяться в зависимости от того, какой пользователь работает с базой.
   • Копирование - команда позволяет скопировать текущую запись справочника. Применяется, если требуется быстро ввести данные незначительно отличающиеся от текущей записи
   • Создание - команда создает пустую запись. В некоторые поля данные могут заноситься из полей таблицы, где указаны данные по умолчанию.
   • Удаление - команда удаляет запись. При этом спрашивает пользователя об этих действиях.
   • Скрыть - команда скрывает от просмотра запись справочника. Применяется для важных данных, когда надо скрыть некоторую информацию от пользователей (вид ...)
   • Защитить - команда защищает запись от изменений. В этом случае, редактирование и удаление записей не разрешается.
   • Таблица - данная команда позволят перейти к редактированию таблицы справочника. Применяется для ускоренного ввода данных в таблицу. При закрытии таблицы ее текущая запись согласовывается с формой.
   • Выход - данная команда позволят отменить выбор команд.
 
   Списки - это специальные поля в справочнике, выделенные синим цветом. Это делается для того, чтобы отметить, что данные в списке редактируются двойным нажатием кнопки мыши через новую форму или обычным вводом текста. Применение цвета позволило отменить кнопку справа типа "..." и сохранить ресурсы базы данных.

   Дата -  это специальные поля для ввода значений дат. Они выделены синим цветом, что означает связь со специальным справочником

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

Создание справочника
      Создадим для примера справочник по оборудованию. Ниже указаны этапы его проектирования.
   1. Определяем ключевое слово, например, Оборудование. С этим словом будут связаны таблица СправочникОборудование и поля idОборудование (long), Оборудование (text). Эти поля используются классом справочника для поиска.
   2. Создаем форму СправочникОборудование, открываем ее в конструкторе и добавляем текст. Он отмечен темно-синим цветом. Комментарии указаны зеленым.

------- начало --------
Option Compare Database
Option Explicit
Private mfrm As clsFormMicro

' Событие срабатывающееся при открытии формы.
Private Sub Form_Open(Cancel As Integer)
' idОборудование - это ключевое поле в таблице СправочникОборудование
' Оборудование - это поле с названием оборудования (применяется в некоторых командах)
' Удалить оборудование - это фраза для команды удаления

Set mfrm = fcClassCreateFormMicro(Me.Form, "idОборудование", "Оборудование", "Удалить оборудование: ")
End Sub

------- конец --------

  3. Компилируем базу данных. Если будет ошибка, то устанавливаем ссылку на библиотеку libforms.mda. Она находится в папке library и необходима для работы форм. Привязка к библиотеке ведется автоматически при открытии формы. Если это не произошло при первом открытии, сделайте это через пункт в редакторе VBA: Tools-Referenses ...
  4. Проверяем работу кнопок базы данных, нажимая и проверяя их в действии.
  5. На следующем этапе (см. пример 2) работы со справочником добавляем новые поля (дата и список) и проверяем их в работе.
Заключение
    Главное на этом этапе - определение названий объектов и привязка формы к классу справочника. После этого можно переходить к изучению более сложного класса библиотеки форм.

Ответы на вопросы

Вопрос 1765. Один из самых частых вопросов, которые задают разработчики - это как правильно выбрать средство разработки. Например, смотрите на ссылку в конференции: Что лучше 1с или Access
  Ответ.
    Аналитика внедрения показывает, что на самом деле не все так просто, выбор средств зависит от многих факторов и чаще всего опирается не только на рекламу, но и на трезвые головы аналитиков и руководителей. При этом надо понимать, что кроме перечисленных средств разработки существует и масса других. Вот несколько примеров из практики.
   1. Компания занимается торговлей бытовой техникой, а поставщик имеет базу комплектующих для ee ремонта на базе системы SAP R/3. Естественно внедрение будет вестись на ее основе. Исключением может быть доработка загрузки данных на Microsoft Access, используя импорт через внешние файлы.
   2. Вот другой пример для компании, работающей с системой J.D.Edwards. В этом случае для дублирования некоторых функций системы при отказах создается база данных с использованием Access (на 4-5 компьютеров). Это связано с тем, что надежность Access базы выше, чем у аналогичных систем на базе dbase.
   3. Еще пример. Требуется создать диск с обработкой заказов  для компании, занимающейся оптовой торговлей репродукциями картин. В этом случае руководство выбирает Access как средство разработки, из-за того, что исходная база зарубежного поставщика имеет формат Access. При таком выборе доработка и внедрение займет меньше времени и финансовых средств, чем внедрение какой-то новой системы учета.
   4. Учет в Excel. Со временем при больших объемах информации возникают проблемы учета при работе с Excel. Например, нельзя работать в сети, организовать контроль за пользователями и т.п. Наиболее вероятно, что в этом случае будет выбран Access, как средство создания новой базы данных.
   5. Delphi+Access. Зарубежное предприятие занимается промышленным производством. Для системы поиска выбрали алгоритм, основанный на нейронных сетях, базу данных - Access, а средство разработки Delphi. Вариант неплохой - если считать, что код на Delphi получается компактным и легко загружаемым. Правда в конечном случае загрузка данных оказалась слишком медленной и потребовалась переделка всего алгоритма базы данных.
 

Выпуск 44. Техническое задание. Часть 4.

Новости

    31.12.2003. Поздравляю всех с наступающим Новым годом. Желаю успехов, счастья, прекрасного настроения и исполнения всех желаний.
    17.12.2003. Вышла новая новая программа "Мастер Интернет торговли". Данная программа предназначена для создания собственного торгового бизнеса в Интернете. "Мастер Интернет торговли" использует базу данных Access и может легко настраиваться менеджером. Программа позволяет создавать магазины для внутреннего использования корпоративны��и клиентами и для внешнего использования в интернете. Для построения магазинов используются готовые Access шаблоны баз данных и html страниц. Есть платная и бесплатная версии программы. Для правильной работы программы необходимо установить Microsoft Office c базой данных Access. 

Техническое задание

 Введение

   После того, как мы определили источники информации (1 часть) и общую концепцию базы данных (2 часть), а также разработали файловую систему программы (3 часть) можно приступить к внутреннему описанию таблиц и полей базы данных. 
   P.S. Тем, кому трудно понять описание технического задания по базе данных, необходимо скачать программу "Мастер Интернет торговли" (ссылки указаны выше) и изучить структуру любого магазина, созданного мастером. Это даст возможность более детально понять методику проектирования базы данных, излагаемую в этом описании.

 Структура главного файла базы данных

    Главным файлом базы данных в Интернете назначим файл webshop.mdb. Он должен состоять из нескольких таблиц и доступ к нему будет организован через скрипты. Таблицы в файле обозначим префиксом webGood (интернет товар). Эти таблицы должны отличаться по названию от внутренней базы данных компании, т.к. в Интернете цены и номенклатура товаров будет отличаться от корпоративной базы данных. При разработке описания будем учитывать и тот факт, что таблицы могут быть изменены в результате проектирования магазина. Описание таблиц и ее полей дадим на английском языке.
 • webGoodData - главная таблица с описанием товаров интернет магазина.
 • webGoodGroups - подчиненная таблица-справочник с информацией о группировке товаров
 • webGoodTypes - подчиненная таблица-справочник с информацией о типе товаров.
 • webGoodPropertiesList - подчиненная таблица-справочник с информацией о списке свойств товаров
 • webGoodProperties - подчиненная таблица-справочник с информацией о свойствах товаров
 • webGoodPropertiesGroups - подчиненная таблица-справочник с информацией о группировке свойств
 • webGoodCurrency - подчиненная таблица-справочник с описанием валют.
 • webGoodUnit - подчиненная таблица-справочник с описанием единиц измерения товара.
В таблицах будут встречать специальные поля, начинающиеся с id (префикс), это будет означать, что в поле храниться специальное числовое значение. Использование таких полей позволяет сократить размеры базы данных. Например, если указать в таблице не "Доллар США", а его идентификатор 840, то при числе записей 20000 мы будем экономить примерно 120Кб информации.

 Таблица webGoodData

   Данная таблица хранит информацию о продаваемых товарах через интернет магазин. В скобках даны примеры заполнения полей в таблице. Для того чтобы можно было просматривать идентификаторы для них создаются списки из двух полей. В первом поле указывается код, а во втором отображаемое значение.
• idGood - уникальный идентификатор товара (836). Поле не редактируется.
• Code - код товара, присвоенный бухгалтерией для учета товара (1001104).
• Good - название товара (Лодка TENDER 220)
• Price - цена товара (1 050,00)
• idCurrency - идентификатор валюты (840, USD)
• idUnit - идентификатор единицы измерения (2, Шт.)
• idGroup - идентификатор группы (148, Лодки надувные Lomac)
• idType - идентификатор подгруппы (43, Tender Series (Rollup))
• Description - описание товара (Самый маленький класс разборных (Rollup) лодок для прибрежных прогулок с возможностью установки маломощных двигателей.)
• ImageMax - максимальное изображение товара на отдельной странице (220SerieTender.jpg)
• ImageMin - минимальное изображение в каталоге (220SerieTender_small.jpg)
• Артикул - артикул товара, специальное обозначение производителя. Может иметь текстовое или число вое значение (100415)
• idОператор - код оператора добавившего или изменившего товар в базе данных. (3, Сидорова Алла)

 Таблица webGoodGroups

Данная таблица хранит информацию по группам товаров. Группировка товаров делается в том случае, чтобы обеспечить удобный поиск нужного товара, т.к. их в базе данных может быть очень много.
• idGroup - максимальное изображение товара на отдельной странице (148)
• Group - минимальное изображение в каталоге (148, Лодки надувные Lomac)
• Fields - список основных свойств товара, которые будут выводиться в каталоге ([Общая длина (см)],[Вес лодки (кг)])

 Таблица webGoodTypes

Данная таблица хранит информацию по типам (подгруппам) товаров. Примерное описание таблицы дано ниже.
• idType - максимальное изображение товара на отдельной странице (473)
• idGroup - максимальное изображение товара на отдельной странице (148, Лодки надувные Lomac)
• type - минимальное изображение в каталоге (43, Tender Series (Rollup))

 Таблица webGoodPropertiesList

Данная таблица предназначена для определения свойств товаров. Эти свойства нужны для определения данных по товару и отображению их на странице. Это могут быть высота, ширина, толщина, масса и другие параметры. Примерные поля указаны ниже.
• idProperty - идентификатор свойства (5)
• idGroup - идентификатор группы (2, Лодки)
• Property - название свойства (длина)
• idUnit - идентификатор единицы измерения (2, шт.)
• idPropertyGroup - идентификатор группировки свойств (2, Двигатель)

 Таблица webGoodProperties

В предыдущей таблице мы определили свойства товаров. Теперь эти свойства нужно привязать к определенному товару. Это делается через данную таблицу. Пример таблицы по свойствам указан ниже.
• idGood - идентификатор группировки (2)
• idProperty - идентификатор свойства (2)
• Value - значение свойства (Двигатель)

 Таблица webGoodPropertiesGroups

Для некоторых товаров, которые имеют много свойств желательно определить группировку. Эта группировка проявляется не в каталоге, а в карточке товара (html файл). Отображая такую страницу, мы будем видеть свойства товара разбитые на группы или части. Например, габариты будет означать, что в этом разделе указаны ширина, высота и длина товара.
• idPropertyGroup - идентификатор группировки (2)
• PropertyGroup - название группы на страницы товаров (Габариты)

 Таблица webGoodCurrency

Предположим, что в нашем магазине будут храниться не только товары, в рублевом измерении, но и в других валютах, например, долларах, евро и т.п. Если ввести описание валюты непосредственно в главную таблицу, то скорость ее работы будет не очень высокой, т.к. текстовые поля требуют больше памяти для обработки. В этом случае, для улучшения скорости работы с базой данных в главную таблицу добавляют вместо описания валюты ее идентификатор . Таблица валют будет иметь следующий вид:
• idCurrency - идентификатор валюты, равен коду валюты в ЦБ (840)
• Currency - короткое описание (USD)
• Description - подробное описание (Доллар США)

 Таблица webGoodUnit

Каждому товару в магазине соответствует единица измерения, например, штуки, килограммы, сантиметры и т.п. Для хранения этой информации необходимо разработать таблицу для сохранения текстовой информации по этому параметру. Пример полей таблицы.
• idUnit - идентификатор единицы измерения (2)
• Unit - короткое описание (шт.)
• Description - подробное описание ([штука])
Таким образом, мы описали главный файл базы данных и теперь можно приступить к созданию скриптов базы данных. Эта информация будет дана позднее. Продолжение следует ...

Ответы на вопросы

Вопрос 3182. Имеется текстовое поле содержащее некий код, например, (1.1.1, 1.1.2, 1.2.1, 1.2.2, и т.д.).  Необходимо найти сумму записей по другому полю таблицы number c кодами например 1.1.1 и 1.1.2 и результат кинуть в поле 1.1, 1.2.1 и 1.2.2 - результат в 1.2. 
После просуммировать 1.1.и 1.2 и результат кинуть  в 1. А также вывести значения сумм 1.1.1,1.1.2 и т.д.  Как наиболее эффективно реализовать такую группировку?
  Ответ.
1. Вариант. Создание запроса на группировку. SELECT Left([Code],3) AS Code1, Sum(Table1.Value) AS Value1 FROM Table1 GROUP BY Left([Code],3);
2. Вариант. Использование DSum("[Value]";"[Table1]";"Left([Code],3)='1.1'") в запросе.
3. Вариант. Такие поля хорошо сортируются. Можно написать специальную функцию в VBA, которая будет вычислять результат построчно, используя команду split для разбора строк.
Вопрос 3180. Импортирую данные из базы ACCESS в EXCEL на листе создал кнопку и привязал такой код 

Sub Кнопка3_Щелкнуть() 
Dim string_Path As String 
Dim string_sql As String 
string_Path = Worksheets("Планы").Range("G1").Value 
string_sql = "select * from DictAgent" 
Workbooks.OpenDatabase Filename:=string_Path + "RGSDATA.MDB", _ 
CommandText:=string_sql, _ 
CommandType:=xlCmdSql 
End Sub 

Все работает кроме одной малости :( создаваемая выборка уходит в новую книгу, а хочется на тот-же лист где и кнопка запуска
  Ответ. Непонятно, почему работает код в Excel, т.к. для объекта Workbooks нет функции OpenDatabase (возможно это другая версия базы). С другой стороны, если требуется на текущую страницу вставить запрос из Access, используя кнопку, то это можно сделать с помощью мастеров (они и подскажут какой лист выбрать). Примерный порядок действий.
1. Открываете меню: "Сервис-Макрос-Начать запись"
2. Далее используете меню "Данные - Внешние данные - Создать запрос". Выполняете нужные действия по запросу и сохраняете макрос.
3. Создаете кнопку и привязываете к ней макрос предварительно отредактировав его. Пример такого макроса, который вставляет таблицу курсов валют на текущий лист Excel, указан ниже.
Sub Макрос5()
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=База данных MS Access;DBQ=E:\data\ServerData.mdb;DefaultDir=E:\data;DriverId=" _
), Array("25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
ActiveCell)
.CommandText = Array( _
"SELECT `ВАЛЮТА описание`.Валюта, `ВАЛЮТА описание`.Код" & Chr(13) & "" & Chr(10) & "FROM `ВАЛЮТА описание` `ВАЛЮТА описание`" _
)
.Name = "Запрос из База данных MS Access"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Вопрос 3029.  Есть база клиентов. Поля: ОргФорма, Наименование и в т.ч. e-mail. Только у некоторых из клиентов есть адрес эл. почты. ЗАДАЧА. Создание кнопки радом с полем [E-mail], с тем, чтобы при нажатии вызывался, установленный по умолчанию, почтовый клиент, создавалось новое письмо, в котором подставлялся эл. адрес из поля [E-mail] и в теме подставлялось значение поля [ФИО].
  Ответ. Общий механизм отсылки сообщения по email такой: DoCmd.SendObject , , , "test@mail.ru", , , "Title", "Text", True. Остается только подставить в этот код нужные поля и можно отсылать сообщение. Пример реализации для кнопки butEmail.
Private Sub butEmail_Click()
    DoCmd.SendObject , , , Me.email, , , Me.FIO, "Контакт", True
End Sub
P.S. Неплохо бы еще и сделать так, чтобы эта кнопка активизировалась только при наличии данных в поле email. Для этого надо использовать событие "Текущая запись" формы и "Обновление" поля email.

Выпуск 43. Техническое задание. Часть 3.

Новости

    02.12.2003. Открылась торговая площадка для торговли товарами народного потребления. Сейчас там выставлены на продажу различные марки снегоочистителей, автономных генераторов, лодок и т.п. Для тех, кто только начинает заниматься интернет торговлей можно открыть и собственный магазин.
    Для разработчиков программного обеспечения открыт магазин по базам данных. На этом ресурсе можно разместить алгоритм, модуль, отчет и другие решения, даже если они не имеют 100% готовности. Сейчас доступны формы для первичного учета в бизнес программах. Эта информация будет полезна тем, кто придерживается государственных стандартов при разработке отчетов в программных продуктах. Например, там дано описание практически всех первичных форм-отчетов, которые используются в кассовых и расчетных операциях, в торговле, хранении, инвентаризации ценностей, при учете кадров, зарплате и т.п.
    20.11.2003. На главной странице новостей сайта появилась статья об автоматизации на базе решений Microsoft Office.
    17.11.2003. Добавлено 3 бесплатных примера в файл la_form2.mdb для разработчиков базы данных. Коротко о примерах. 1-Ссылка на итоги в подчиненной форме. 2-смена источника данных формы с DAO на ADO и 3-работа со списками.

Техническое задание (Файлы и папки)

 Введение

   Во первых, правильным будет, если мы возьмем в качестве средств разработки Интернет магазина выберем язык программирования vbscipt. Это связано с тем, что он практически полностью совпадает с VBA (Microsoft Access), и нам потребуется меньше времени на изучение Интернет технологий и построение базы данных. Обратите внимание, что vbscript используется в  asp страницах и может поддерживаться только NT хостингом. Это такой хостинг, когда в операционной системе Windows устанавливается дополнительный сервер Internet Information Services. Таким образом, если у Вас сайт работает на базе Unix хостинга (операционная система Unix, сервер Apache), то asp страницы там работать не будут. Магазин в этом случае разрабатывается с использованием других технологий, например, web языков программирования perl или php
   Во вторых, для того, чтобы правильно построить интернет магазин необходимо равномерно распределить его файловые ресурсы, а именно, базу данных, фотографии, шаблоны и т.п. Если это не сделать, то его обслуживание и поиск нужных данных будет занимать продолжительное время. Дадим описание папок и файлов. Все имена даем на английском языке и с маленьких (строчных) символов (дань уважения unix разработчикам).

 Корневая папка

    Интернет магазин имеет несколько важных страниц: каталог, корзину, форму заказа. Разместим их в корневой папке. Первым файлом, который будет загружаться при входе на сайт будет index.asp. Он определяет первоначальный вид магазина. Далее определим файл корзины: shopbasket.asp и страницы заказа: shopemail.asp. 
    Но это не все, необходимо еще предусмотреть возможность изменения интерфейса магазина. Делается это через приложение Microsoft Office - FrontPage. В этом случае появится еще и шаблон каталога framemain.html и корзины framebasket.html. Изменяя эти шаблоны, мы будем изменять и интерфейс магазина, не меняя скрипты магазина.  

 Папка database

   Создадим в каталоге нашего магазина папку database. В ней будет находиться основная база Microsoft Access. Ее имя webshop.mdb. Описание структуры таблиц дадим позже.

 Папка files

   В этой папке будут располагаться файлы c допол��ительной информацией по магазину. Это могут быть прайс листы Excel, Word и т.п. На страницах магазина можно организовать ссылки на эти файлы, чтобы пользователи могли их загружать и просматривать.

 Папка html

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

 Папка images (logo, menu, photo)

   Определим папку для графической информации нашего магазина. Этих файлов может быть очень много, поэтому в папке images определим еще и 3 специальные папки. Например, logo - будет содержать логотипы магазина, menu - интерфейс каталога, photo - это папка с изображениями товаров магазина.

 Папка info

   Как у каждого сайта есть некоторая статическая информация. Ее лучше разместить в отдельном каталоге. Создадим такие файлы: 
  • infoabout.html  - общая информация о магазине
  • infodate.html    - информация о времени работы
  • infopay.html     - информация о том, как заплатить в магазине
  • infosend.html    - информация о доставке товаров
  • ordererror.html - информация об ошибке при оформлении заказа
  • orderthanks.html - сообщение о том, что заказ принят

 Папка scripts

   Для того, чтобы удобно было просматривать и редактировать скрипты выделим и для них отдельную папку. Скрипт - это программа, написанная на одном из языков программирования, который добавляется в интернет страницы для их динамичского изменения. Определим 4 скрипта, которые нам потребуются - basket, change, create, load.  basket - это скрипт, управляющий корзиной магазина, change - скрипт, управляет выбором товаров в каталоге, create - скрипт создающий каталог, load - скрипт загрузки данных в базу

 Папка style

   Страницы магазина могут иметь разное оформление. Например, шрифт описания имеет высоту не более 10 пунктов, а заголовок всегда выделяется жирным цветом и в 14 пунктов. Для того, чтобы упростить настройку страниц магазина запишем все стили оформления в файл: shopstyle.css

Продолжение следует ...


Ответы на вопросы

Вопрос. А может ли Ваша программа по складу работать с несколькими складами?
  Ответ. Этот вопрос пришел ко мне по электронной почте. Его адресую всем разработчикам.  Чувствую, что большинство ответят да, и добавят еще несколько восторженных слов о своей разработке. Но этот ответ не совсем правильный. Вот маленькая история.
   Пригласил как-то генеральный директор сразу трех независимых программистов и говорит им: "Мне нужно автоматизировать складской учет на предприятии. Но прежде, чем кого-то взять из вас на работу ответьте на один простой вопрос - Сколько будет 2 x 2?". Один быстро отвечает - 4. Да, правильно, - сказал директор, - но на работу Вас взять не могу. Второй быстро сообразил и говорит - 5. Но и его директор не взял, сказал, -  Вы, молодой человек, считать не умеете. Третий подумал пару минут и говорит: "Сколько Вам нужно, Алексей Петрович, столько и сделаем!". Естественно его и взяли. В этом ответе и заключается главное правило при работе с заказными проектами.

Выпуск 42. Техническое задание. Часть 2.

  Введение

   После того, как в предыдущей статье мы определили источники информации для разработки базы данных, в этой статье попытаемся решить некоторые общие вопросы по проектированию. Чаще всего эти задачи можно разбить на части таким образом,
  · Основание для разработки
  · Назначение базы данных
  · Общие требования к базе данных
  · Этапы внедрения

  Оглавление

Техническое задание
1. Источники информации (1 часть)
2. Назначение и требования к базе данных (2 часть)

Материалы.
a) брошюра "Составление технического задания"

 Основание для разработки

   Основанием для разработки базы данных является утвержденный Календарный план и договор на создание базы данных между ООО «Исполнитель» и ЗАО «Заказчик»

 Назначение базы данных

   Целью данного проекта является разработка базы данных предприятия "Клиенты, Заказы и Интернет торговля". Может использоваться и другое обобщенное название - "Управленческий учет торгово-производственного предприятия".

 Общие требования к базе данных

   База данных предназначена для организации учета заказов, складских, финансовых и производственных операций заказчика. Она должна формировать и вести учет первичной документации и формировать необходимые отчеты. Главным назначением базы данных является организация автоматизации интернет-торговли и управленческого учета заказчика, а также формирование цен на готовую продукцию. 

    База данных разрабатывается для работы под управлением операционной системы Windows 98 или выше с установленным программным комплексом Microsoft Office 2000, включая базу данных Access. 

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

   База данных должна работать на одном компьютере или в локальной сети. Основной режим работы – диалоговый, т.е. пользователь работает с базой данный, используя объекты форм поля, кнопки, списки, получая при этом необходимые отчеты в Access, Excel или Word, используя для этого специальные шаблоны. Необходимо предусмотреть поиск, отбор и сортировку документов, используя и другие критерии к базе данных.

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

   База данных должна поставляться в открытом для изменений формате. Предполагается использовать следующие языки программирования. Visual basic for application (vba) для создания внутренней базы данных. Html, asp, vbscript и javascript для создания внешней базы данных и организации интернет торговли.  Цель использования ограниченного числа языков программирования - это уменьшение времени на разработку, внедрение и изучение базы данных.

 Этапы внедрения

   Разработка и внедрение базы данных должны вестись поэтапно. Всего предполагается внедрить 5 этапов: «Интернет торговля», "Клиенты и Заказы", «Складской учет», «Финансы» и «Производство». Каждый этап работы в процессе разработки может корректироваться, но внедрение будет вестись поэтапно. После сдачи 1 участка работы, начин��ется внедрение 2 этапа и т.д. Краткое описание этапов дано ниже.

 Интернет-торговля. Из-за особой важности этой части проекта, этот этап базы данных будет разрабатываться в первую очередь. Организация торговли в интернете позволит получить дополнительный доход от продажи товаров и услуг предприятия. Реклама продукции в Интернете расширит круг постоянных клиентов предприятия. Предполагается разработать отдельную базу данных для хранения интернет - каталога продукции, интерфейс приема заказов и автоматическую отправку их в центральную базу данных предприятия.

 Клиенты и Заказы. На этом этапе разработки базы данных предполагается создать базу данных по клиентам и обеспечить учет и хранение всех заказов для предприятия. Система заказов должна быть связана с базой данных в интернете или обеспечивать автоматическую обработку писем-заказов, поступающих по электронной почте. На этом этапе необходимо учесть и данные клиентов, а именно, реквизиты предприятий, договора, деловую переписку и переговоры с менеджерами.  

 Складской учет. Этот раздел базы данных разрабатывается для того, чтобы учесть операции с материальными ценностями предприятия. Например, закупку товаров от поставщиков, поступление продукции из производства, продажу товаров. При внедрении этого участка технического задания на предприятии будет организован материальный учет, база данных клиентов, учет поступивших заказов, приходных и расходных документов. На базе этого можно будет подготовить первичную документацию, накладные, счета фактуры, приходные ордера, а также общую отчетность, типа по складским остаткам и движению материальных ценностей.

 Финансы. Этот раздел базы данных разрабатывается для того, чтобы учесть финансовые затраты предприятия при закупке, реализации или производстве продукции. В него также добавлен раздел «Предварительный расчет себестоимости». После внедрения этого раздела технического задания на предприятии можно будет иметь финансовую информацию по поставщикам, рассчитать себестоимость по методу LIFO или FIFO, а также подготовить материалы для расчета себестоимости на производстве.

 Производство. Этот раздел базы данных разрабатывается для того, чтобы проанализировать экономическую эффективность предприятия. Главным для производственного предприятия является расчет себестоимости выпускаемой продукции. После внедрения себестоимости на предприятии в автоматизированном виде, можно будет достаточно точно определить цену выпускаемого изделия. А это и есть главное для успешной работы организации в условиях рыночной экономики.
Продолжение следует ...

Выпуск 41. Техническое задание. Часть 1.

  Введение

   Один самых частых вопросов, которые задают специалисты, кто впервые собирается внедрять базу данных: «С чего начать разработку базы данных?». Ответ стандартный - начните «С разработки технического задания». Что же это такое техзадание или ТЗ. Как его составить, чтобы было понятно заказчику и программисту? Об этом и пойдет речь в этой и следующий статьях рассылки.
   Эта информация будет ПЕРЕПЕЧАТЫВАТЬСЯ с новыми комментариями в виде файла Microsoft Word специально для печати на принтере. 

 Понятие технического задания

   При проектировании любого сложного объекта требуется его подробное описание. Например, при проектировании агрегата автомашины необходимо создать сборочный чертеж(и) изделия из нужных деталей. Только после этого, можно приступить к построению макета агрегата, рассчитать финансовые затраты на сырье, материалы и запустить его в производство.
Примерно также можно охарактеризовать и разработку программы или базы данных. Только вместо сборочного чертежа используется техническое задание. Где описываются цели, задачи, интерфейс и другие требования к разрабатываемой программе. 
  Составление подробного технического создания - трудоемкий процесс. Его можно назвать высшим пилотажем в области разработки баз данных. Без общего понимания специфики бизнеса компании-заказчика, и конечно особенностей интерфейса баз данных, проектирование проекта может затянуться на долгое время.

Источники информации

   Если попытаться найти литературу по теме предварительного проектирования базы данных, то сразу же возникнет проблема. В связи с тем, что эта тема практически не освещена.  Обучающих курсов или книг по разработке ТЗ пока не нет. С другой стороны, литературы по базам данных много, но процесс разработки техзадания никто подробно не освещает. Можно подумать, что знаний авторам не хватает, или эта тема для них неактуальна. Хотя сложностей в этом деле ничуть не меньше, чем при программировании самой базы данных. 

   Можно посоветовать почитать ГОСТ (например, 34.602-89.) на проектирование информационных систем, но, используя его, техзадание к базе данных написать будет достаточно сложно. ГОСТ регламентирует название разделов техзадания, но что должно входить в базу данных остается за разработчиком.

   Единственный выход в получении сведений – это анализ практических техзаданий и построение на базе них обобщенной инструкции. В статьях рассылки большая часть документации взята из техзаданий по складскому и управленческому учету. Это связано с тем, что эта тема постоянно развивается, и понятна большинству читателей. Краткий список техзаданий дан ниже. 
  • «Торговый склад» - это техническое задание используется в основном для проектирования программ складского учета в торговле. Главным является учет товаров их цен и расчет себестоимости операций. Необходимо решить проблемы закупки товаров, переоценки и их продажи, т.к. в этом бизнесе прибыль получается на разнице продажных и закупочных цен с накладными расходами.
  • «Склад хранения» - это техническое задание применяется для разработки программ по хранению товаров, сырья и других материальных ценностей. Главным является то, что цена на товары не имеет никакого значения ( иногда применяют залоговые цены). Прибыль получается здесь не от продажи товаров, а от операций связанных с хранением, погрузка, разгрузка и оплата мест хранения, например, паллет, коробок, ячеек и т.п.
  • «Аварийный склад» - такое техническое задание разрабатывается, если требуется дублировать какую-нибудь систему. Например, производственное предприятие внедрило сложную и дорогостоящую в обслуживании CRM систему, но она не гарантирует надежности и примерно 1 раз в месяц дает сбои. Поиск и устранение проблемы занимает сутки, в течение которых сотрудники работают в авральном режиме, выписывая документы вручную или, используя Microsft Excel. Для решения этой задачи и пишется техзадание, где главным является импорт данных (клиентов, товаров) из этой системы в базу данных, и быстрое оформление основных отгрузочных документов. Обратите внимание, что здесь не ведется учет складских остатков, но достаточно высокие требования к надежности и простому интерфесу.
  • «Сырьевой склад» - такие технические задания применяются на производстве. Главным здесь является учет нормативов на производство изделия и получения заявок на закупку сырья. Например, вам требуется выпустить 100 пар обуви для выполнения заказа. Для этого нужно закупить подошвы, нитки, кожу и фурнитуру. Сколько потребуется сырья и будет решено после составления техзадания и внедрения базы данных.
  • «Давальческий склад» - такое техзадание разрабатываются тогда, когда производство изделия в регионе не выгодно, но спрос на продукцию есть. Например, вы работаете в Москве, но расходы на содержание производства, аренда, зарплата и другие расходы постоянно растут, и производить продукцию становиться невыгодно. Для этого в Москве производство закрывается, а выпуск изделия переносится в Московскую область или даже в другую страну, например, в Китай. Там и зарплату платить меньше, да и производство ниже. Главным в этом техническом задании – это грамотный учет расходов на сырье и доставку готовой продукции.
  • «Материальный склад» - это техническое задание разрабатывается для кладовщиков, кто работает с малоценными и быстро изнашивающими предметами. Например, Вы купили бумагу, ручки или спецодежду. Здесь необходимо учесть не столько вещи, но и время когда их можно списать со склада. Естественно эта задача очень трудоемкая, требуется так составить интерфейс, чтобы кладовщику было удобно разбирать написанные от руки товарные чеки  и вводить их в базу.
  • «Склад Карго» - это техзадание предназначено для учёта приёма груза (cargo) на транспорте. Есть рейс (самолёт) для которого принимаются места. Каждое место имеет весовые и объёмные характеристики, по которым рассчитывается тариф, а также список находящихся в данном месте товаров. Оператор вводит эти данные в программу и выставляет счёт всем владельцам мест. Потом составляются отчёты по количеству/весу/объёму на данный рейс, общий список товара на рейс и по туристам.
  • «Сборочный склад» - это техзадание применяется при разработке базы данных на производстве, где требуется жесткий контроль за сборочными операциями. Например, имеем сложное предприятие, где заказ на сборку агрегата формируется множеством заявок на бумаге. Далее операторы вбивают без проверки эти сведения в компьютер. Требуется разобрать, исправить ошибки и проверить наличие в базе данных готовых деталей и сборочных операций. Естественно в этом задании требуется грамотно подойти и описать структуру базы данных, т.к. требования по скорости будут очень важными. 
  • «Инвентаризационный склад» - это техзадание применяется при разработке базы данных специально для инвентаризации. Например, у Вас есть соглашение с сотрудниками, проживающими на частных квартирах об использовании мебели, которая находится в собственности компании. В этом случае важно хранить не только данные сотрудника, но и фотографии выданных вещей, чтобы можно было проверить при переезде их состояние и наличие. Тут требуется специальная подготовка базы данных таким образом, чтобы база данных не "сыпалась" при частом просмотре фотографий.
  • «Войсковой склад» - это техзадание применяется при разработке базы данных войсковой части для отдела технического обеспечения. В этом случае возможно использование специальных закрытых гостов на проектирование информационных систем.
  • «Интернет склад» - это техзадание применяется при разработке базы данных совместно с Интернет сайтом. Главное в этой области уметь правильно обрабатывать почту, которая автоматически должна попадать в базу данных и формировать заказы на продажу.

P/S. Примечание. К этим техзаданиям будут добавлены также описания разделов из других баз данных. Например, расчет плановой и фактической себестоимости, описание разделов Интернет сайта и т.п.

Клиенты Заказы и Интернет торговля

    В этой главе дается описание того, почему выбрана эта тема при составлении техзадания. Анализируя источники информации можно сказать, что «Клиентская база» присутствует практически во всех техзаданиях, где не требуется внутренний учет для предприятия, поэтому она вошла и в это описание. С другой стороны, если есть клиенты, то требуется учесть Заказы и оформить необходимые отгрузочные документы.

   Все, что касается Интернет торговли, то сейчас это просто необходимо. На рынке товаров много, и спрос превышает предложение. Снижение издержек на продажу товаров приводит к тому, что торговля переносится в Интернет. Обслуживание такого магазина не требует больших финансовых затрат на аренду, хранение, зарплату сотрудникам и т.п. 

   Например, покупая сейчас товары через Интернет можно сэкономить приличные средства не только на покупке, но и доставке товара домой. Монитор стоимостью в 7500 рублей + 300 рублей доставка (частный транспорт) в web магазине компании может обойтись в 6500 рублей c бесплатной доставкой. При этом можно найти и варианты покупки товаров в кредит и без процентов.
Единственно тут надо учесть то, что чем раньше Вы откроете сайт и начнете торговлю, тем лучше. Все поисковые роботы принимают во внимание дату открытия сайта, т.е. в рейтинге поиска он будет находиться выше конкурентов, если ваш web магазин был открыт по времени раньше. Популярность (т.е. число заходов на сайт) может иметь даже меньшую значимость.

Продолжение следует ...