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

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


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Выпуск 15. Сколько зарабатывает программист Access?

Введение. В данном выпуске рассматриваются 9 вопросов пользователей. Всего добавлено 4 программы в файлы: la_form1.mdb, la_table.mdb.

[Бизнес]. Вопрос 1. Интересно, а есть ли спрос на продукты на Access? Сколько в среднем зарабатывает программист на Access? Обычно вся индустрия программирования - это пирамида похлеще МММ. Думаю, что так же и про Access. Мне немало лет, я 20 лет занимаюсь компьютерами и практически не видел рядом с собой успешных применений. Сейчас (скоро 21 век!) пишу первую в истории конторы базу данных для нашего отдела кадров (5000 человек), может пригодится? Как Вы думаете?
Ответ.
   1. Спрос есть. Мной продано уже несколько программ из сборника "Лидер Access" для Москвы и России. Причем покупатели не новички, а уже имеют опыт работы с различными складскими и бухгалтерскими программами.
   2. Точных сведений о зарплате программиста баз данных у меня нет. Приблизительно можно сказать, что для России, учитывая государственные и коммерческие предприятия, это где-то между 200-400 $ в месяц. При выполнении работы на заказ зарплата, конечно выше, основываюсь на собственном опыте (смотрите "Мебель 2000", диск "Ключи от Дома")
   3. Все, что касается индустрии программирования - я бы не сказал, что это пирамида. Компания MMM развалилась очень быстро, не просуществовав и 5 лет, а программистов явно не хватает. Даже для США, Германии требуются профессионалы. Причем зарплата ИТ - специалиста выше, чем в других отраслях. Всего месяц назад, мой родственник был заграницей в небольшом штате США по обмену опытом. С его слов могу сказать, что зарплата 50 000 долларов в год для иностранных специалистов не предел.
   4. Ваша база данных может пригодиться. Но мне кажется, что уже сейчас надо "застолбить" место среди компьютерных программ. Чем раньше Вы начнете ее рекламировать, тем лучше. К сожалению, у нас в стране нет специальных фирм, которые смогли бы это профессионально сделать. Но решение можно найти всегда.
     Для Вас и других разработчиков Access, я открыл магазин "Лидер Access". Теперь не надо ждать, когда у Вас появится готовая версия вашей программы. Вы можете поставить на продажу часть вашего проекта. Например, потратьте один день, сделайте 1-2 «качественных» отчета в формате mdb, вставьте в них свои реквизиты и разместите информацию о них в магазине. Пройдет какое-то время (зависит от посещаемости магазина) заказчик, которому понравится ваш отчет, купит его и свяжется с вами.
    Для размещения информации в Магазине вышлите мне короткое описание, ссылку на Ваш gif-файл, оставьте визитку. Как это реализовано мной для других программ посмотрите: www.liac.nm.ru
    P.S. Все средства от продажи программ поступают разработчику за исключением комиссионных магазина - 10 %.
[Таблицы]. Вопрос 2. Здравствуйте, с удовольствием просмотрел Ваши лекции. Интересно. Но у меня есть вопрос, не относящийся к ним. Проблема следующая: есть необходимость динамически подключать и отключать Dbf файлы к базе данных Access. Если есть такая возможность, прошу сообщить.
Ответ.
   При присоединении таблиц в текущей базе данных используется команда: DoCmd.TransferDatabase. Смотрите пример N1 в файле la_table.mdb.  Я бы отметил здесь 3 нюанса, которые Вы должны знать. Во первых, желательно, чтобы база данных dbf хранилась в папках с английскими названиями. Во вторых, в качестве параметра команды TransferDatabase DatabaseName используйте каталог dbf файла. В третьих, при загрузке базы надо следить за кодировкой символов. Т.е. если Вы загрузите dbf  и текстовые поля будут выглядеть правильными, то Вам не надо ничего менять. Иначе, надо в реестре изменить кодировку символов. Каждый раз меняя ее, необходимо закрыть Access, а потом открыть его снова. В примере использован файл пенсионного фонда. Для других программ могут возникнуть проблемы с отображением текстовых полей.
[Проблема]. Вопрос3. Есть вопрос. при выполнении строк кода:
Set db = CurrentDb
Set tdf = db.TableDefs![Имя_Таб]
tdf.Fields("Поле1").Size = 10
возникает ошибка: Недопустимая операция.(Ошибка 3219) При выполнении этой операции в конструкторе таблицы он (конструктор) спрашивает и предупреждает о возможной потере данных, но тем не менее делает то что от него просят. Можно ли с помощью программы изменить это свойство поля.
Ответ.
    Самый простой способ изменить свойства поля - это использовать запрос SQL. Пример 2 найдете в файле: la_table.mdb. Посмотрите еще пример 3, который позволяет изменить у поля запроса свойство Format, но уже по другому.
[Формы]. Вопрос 4. Я слышал что есть такая функция как Сумма прописью ( не число, а именно сумма) т.е. есть число 123,67 автоматически прописывало так: сто двадцать три тугрика 67 коп. Не расскажите ли в рассылке.
Ответ.
    К сожалению в Access нет такой встроенной функции. Но ее можно написать самому. Алгоритм следующий. Надо число разделить на рубли и копейки, а далее разбить рубли на единицы, десятки, сотни, тысячи и т.п. Пример посмотрите у меня в файле: la_form1.mdb. Он взят из программы "Склад и Реализация". P.S. Не пытайтесь код перевести на русский язык. Могут возникнуть проблемы в запросах.
[Формы]. Вопрос 5. Очень мне помогли ответы на Вопрос 8 и вопрос 9 выпуска 14. Все работает, только вот в функции "Авто-вычисление полей в форме" при вычислении, данные из поля Итого у меня не записываются в таблицу Базовая (аналог Вашей таблицы "Мои книги") Указание в Свойствах - Данные, поля Итого таблицы Базовой не дают результата. :-(
Ответ.
   Надо добавить промежуточное (невидимое) поле. Я изменил код в программе для вашего варианта. Теперь при переходе от одной записи к другой результат будет сохраняться в таблице.
[Формы]. Вопрос 6. ОЧЕНЬ! нужен диалог открытия файла, который в la_form.mdb, но он к сожалению не работает - не возвращает имя файла! ПОМОГИТЕ! Заранее очень благодарен, особенно если вышлите ответ на email. Спасибо.
Ответ.
    Очень хорошо, что задали вопрос о загрузке файла. Этот код у меня работал, иначе зачем же я его размещал в Интернете. К сожалению точно ответить, почему в первом случае код программы не возвращает результат, а в другом работает хорошо лучше задать Microsoft. Но Вы должны запомнить этот пример, т.к. такие ситуации иногда встречаются.
1. If GetOpenFileName(OFNAME) = True Then _
               funGetOpenFileName = ... '!Может не работать
2. Flag = GetOpenFileName(OFNAME)
    If Flag Then _
               funGetOpenFileName = ... 'Возвращает результат
[Таблицы] Вопрос 7. У меня следующая проблема. Мне надо чтобы при вводе текстовых или цифровых данных в поле формы была проверка с ранее введенными данными на предмет повторения. Поле формы текстовое. Проверка при переходе на следующее поле или при обновлении. Не могли бы вы подсказать как это сделать?
Ответ.
    Для этого существуют индексы в таблицы. Откройте любую таблицу и поставьте "ключ" на поле вашей таблицы. Например, в файле la_form1.mdb есть таблица "Мои книги", где ключ установлен на поле "Дата" и "Книга". В данном варианте Вы не сможете ввести 2 книги с одним названием и датой.
[Проблема] Вопрос 8. Option Compare Database
Option Explicit ' ***
Private Sub allFirms1_AfterUpdate()
Dim rst As Recordset ' ***
Set rst = CurrentDb.OpenRecordset("SELECT * FROM [Покупатели] WHERE [Код]=" & Me.allFirms1)
По аналогии с la_form1 пример 12 Получилась ошибка: run-time error 13 Type mismatch Данная ошибка исчезает если закоментировать строчки отмеченные как: ' *** Если же всю проделанную мной работу экспотировать в вашу базу то опять же всё работает. Подскажите, пожалуйста, в чём может быть причина ?
Ответ.
    При создании базы данных (по умолчанию) не создается ссылка на библиотеку DAO 3.6. Вам нужно в редакторе назначить необходимую ссылку. Смотрите дополнительно: "Лекции по Access" (2d), FAQ к ним, раздел на сайте "Аварийка". Нельзя отключать опцию: Explicit, она проверяет описание переменных вашего кода.
[Таблицы] Вопрос 9. Помогите решить проблему: есть 2 таблицы, они объединяются запросом. Да вся беда в том, что не находя данных для записи запрос оставляет поле пустым, а мне нужен НОЛЬ, так как это поле участвует в расчетах, а если значение с одного поля сложить с пустотой другого, то пустота и выходит. Надеюсь, Вы хоть немного меня поняли. Заранее благодарен.
Ответ.
    Действительно, при объединении двух таблиц может получится такой вариант, когда в поле запроса не будет данных. Это связано с тем, что по умолчанию, при создании запроса, форматы некоторых полей не назначаются. Эта проблема решается через конструктор запроса (щелкните правой клавишей на названии поля). Кроме этого Выпроблему можно решить программным способом, смотрите пример N3 у меня в файле la_table.mdb. Команда формат для полей имеет вид: 0;0;0;0 для 4 чисел типа: a >0 b<0 c=0 d=Null.
Copyright © 24.10.2000 Виктор Конюков,  (Web: www.liac.nm.ru, Email: LiderAccess.bigfoot.com)


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное