Архив за месяц: Октябрь 2013

Запуск SQL запросов из VBA для Access и Excel

sql-fun
sql-fun
В различных ситуация требуется какое либо действие сделать с БД с помощью SQL запросов, и при написании программы зачастую требуется это сделать из VBA кода. Для этого я использую различные схемы, в зависимости от сложности запроса и поставленной задачи.
, где для всех примеров myBD это объявленная наша БД, например через Dim myBD As Database и последующей Set myBD = CurrentDb , как пример для Access

 

1 — Запуск запросов через QueryDef, ИМХО — использую для ODBC:
Для первого варианта средствами Access делаем обычный запрос  с нужными нами действиями или несколько связанных между собой и запускаем его строчкой ниже. Вообще QueryDef является одним из лучших методов по запуску и выполнению (да запуск сохраненных SQl запросов через него, это далеко не все что он может) запросов в базах данных использующих драйвер ODBC.
myBD.QueryDefs(«ИМЯ_ЗАПРОСА»).Execute
или делаем непосредственный запуск запроса
myBD.QueryDefs.Execute «DELETE * FROM MyTabl»

 

2 — Запуск запросов через RecordSet, ИМХО — использую для ADO:
Этот вариант у меня прижился больше для Excel когда к БД подключаюсь через ADO драйвер, и требуется например сохранить данные в бд, через запрос (Помидорами не кидать, знаю что сам RecordSet позволяет это делать — тут просто пример как можно запустить запрос через него)
Set rs = cmd.Execute(«DELETE * FROM MyTabl», , adExecuteNoRecords)

 

3 — Непосредственный запуск запросов
ИМХО — использовать стоит в основном внутри Access и довольно редко, для мелких задач, а для всего отсльаного лучше через QueryDef:
DoCmd.RunSQL «DELETE * FROM MyTabl»
myBD.Execute «DELETE * FROM MyTabl»

Шаг 2 : Сообщаем миру что появился новый сайт!

Наш сайт появился, он еще мал и гол, и о нем никто не знает. Начнем решать эти проблемы.

Немного теории, браузерный поисковый рынок фактически поделен поделен между Google и Yandex, совместно они дают где то 90% всех поисковых запросов, на них и будем ориентироваться. Для успешного продвижения сайтов и Гугл и Яндекс предоставляют набор инструментов для webmaster -ов. Ими нужно будет научится пользоваться, мне лично больше нравятся инструменты Google поэтому пример просмотра метрики буду показывать на них. Инструкция как и в Шаге 1 будет простой  и поэтапной:

  1. Идем на Google и регистрируем аккаунт, если еще нет.
  2. После регистрируемся в сервисаx AdSense и Analytics.
  3. Заходим в Analytics на вкладку Администратор, в появившемся аккаунте нажимаем на выпадающее меню и «Создать аккаунт» и заполняем все поля. После регистрации нам должны выдать идентификатор отслеживания. Запоминаем его.
  4. Теперь переходим на вкладке Администратор, переходим в подменю «Ресурс» и дальше в «Код отслеживания». Сохраняем его , он нам понадобится дальше.
  5. Сейчас если есть регистрация в AdSense они с Analytics связываются автоматически, в противном случае полученный ранее идентификатор отслеживания нужно добавить на «Главная страница» -> «Настройка Аккаунта», там же заодно нужно добавить сайт в разрешенные для показа рекламы, а в Analytics на вкладке Администратор в подменю «Аккаунт» -> «Установление связи в AdSense» нажать «Связать аккаунты».
  6. Заходим на Yandex и регистрируем аккаунт , если еще нет.
  7. После регистрации на главной странице нажимаем на название аккаунта и в выпадающем меню нажимаем Вебмастер. Далее Ищем кнопку «Мои сайты» и рядом с ней должна быть «Добавить сайт». Проходим процедуру добавления и проверки сайта.
  8. Отлично, теперь идем в Админку нашего сайта.
  9. Переходим в подменю «Внешний вид» -> «Редактор», и там открываем «Подвал» и добавляем сохраненный ранее текст скрипта от Google перед оператором </body>. Обновляем файл (сохраняем изменения). далее открываем «Заголовок» и добавляем скрипт перед оператором </head>. Сохраняемся. Готово теперь Google будет следить за нами.
  10. Устанавливаем плагины Google XML Sitemaps и WordPress SEO и активируем их. Теперь у нас в параметрах появилась меню XML-sitemap. Пока в настройках можно ничего особо не трогать, позже разберемся. Нажимаем создать наш новый Sitemap.
  11. При регистрации хостинга нам приходила информация по подключению к нему, воспользуемся ее и в управлении файлов мы должны увидеть в папке WWW 3 новых файла robots.txt (именно так, в нижнем регистре — менять имя НЕЛЬЗЯ) , Sitemap.xml и Sitemap.xml.gz.
  12. Заходим в robots.txt и меняем его текст на тот что ниже (ВНИМАНИЕ! обязательно поменяйте название сайта!) и на этом можно закончить 2 шаг и ожидать индексации сайта роботами поисковых систем, а просматривать статистики можно в  Analytics :

User-agent: Yandex
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /wp-trackback
Disallow: /wp-feed
Disallow: /wp-comments
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Host: IMYA_MOEGO_SATITA.ru

User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /wp-trackback
Disallow: /wp-feed
Disallow: /wp-comments
Disallow: */trackback
Disallow: */feed
Disallow: */comments

Sitemap: http://IMYA_MOEGO_SATITA.ru/sitemap.xml.gz
Sitemap: http://IMYA_MOEGO_SATITA.ru/sitemap.xml

 

Шаг 1 : Как создать сайт или как создался этот сайт за 30 мин…

Многие кто не знают как создать свой сайт, с чего нужно начать…  Но на самом деле все гораздо проще чем многие думают)…

Расскажу на примере этого сайта и хостинг провайдера hostline.ru на котором этот сайт расположен…

Сайт построен на самой популярной платформе worldpress, особенно часто ее используют для личных блогов или новостных сайтов. Скачать последнюю версию можно с официального сайта абсолютно бесплатно, то есть даром,  т.к. это свободно распространяемое ПО с открытым исходным кодом  — http://ru.wordpress.org/ или просто кликнув по СКАЧАТЬ  и получим последнюю русскую версию .

Итак наши действия по шагам :

  1. Идем на сайт http://hostline.ru и регистрируемся
  2. Выбираем свободный домен на главной странице (если купить у http://hostline.ru хостинг на год, то дадут купон на бесплатную регистрацию в зоне .RU и .РФ)
  3. Переходим на страницу заказа хостинга, и покупаем на год (чтобы была скидка в 20% и дали бесплатный купон на регистрацию), желательно указать выбранный домен (чтобы потом не потребовалось привязывать в ручную). Для покупки соответственно в личном кабинете нужно проплатить услугу.
  4. Теперь идем на главную страницу и заказываем понравившейся домен и оплачиваем купонам через личный кабинет. Ожидаем подтверждения.
  5. Заходим в личный кабинет и на вкладке Хостинг должно быть 2 записи, 1 — проплаченный хостинг и 1 — бесплатный хостинг который дали к домену при покупке. Удаляем бесплатный.
  6. После регистрации хостинга на почту придет информация о личном кабинете созданного хостинга — заходим туда и проверяем что во вкладке домены есть наш, если нет то добавляем, далее выбираем в меню управление файлами. Там в папке WWW должна появится папка с названием домена, удаляем все из нее, и вставляем скаченную версию worldpress.
  7. Заходим на наш новый сайт по вашей зарегистрированному доменному имени через браузер и видим там приветственное сообщение от Wordlpress, проходим простые шаги установки и все — добро пожаловать в ваш сайт и его админку.
  8. Через админку выбираем понравившейся нам шаблон из огромного множества. Пишем первую статью-новость и начинаем потихоньку разбираться с функционалом. Начало положено!

ФуууУФ — УРА мы такие молодцы создали свой сайт, следующая статья о сайтах будет как его теперь продвигать в поисковых системах.

При выполнении SQL запроса из VBA кода, в месте где пишется условие, при использовании сравнения LIKE нужно использовать символ %, а не когда требуется сравнивать какую то часть текста, а не точное сравнение. При этом если запустить запрос с * например в Access,  то он отработает нормально. Если не знать эту особенность, то ошибку можно долго искать в коде.

Правильно :  SELECT * FROM table WHERE pole LIKE «%Условие%»

НеправильноSELECT * FROM table WHERE pole LIKE «*Условие*»

 

Стандартные функции обработки типов данных в VBA и VB

 
В программировании существуют данные различных типов, и периодически необходимо или перевести данные из одного типа в другой, или проверить данные какого типа мы используем в данный момент…
Давайте разбираться:
В VB, VBA существуют встроенные функции для перевода вида функция («текст_данных»), соответственно провести преобразование возможно только если выбранный формат поддерживается этими данными:
 
CBool() — логические True, False
CByte() — числа от 0 до 255
CCur() — чисел для точных вычислений (4 знака после запятой)
CDate() — дата
CDbl() — чисел двойной точности (с «,»)
CDec() — чисел с мега точностью до 28 цифрами в дробной части (с «,»)
CInt() — целых чисел от -32768 до 32767
CLng() — целых чисел от -2147483648 до 2147483647
CSng() — чисел одинарной точности (с «,»)
CStr() — строковые значения
CVar() — любого типа данных
 
Существуют также и специфические функция преобразования:
Str() — строковые значения (в отличии от CStr() является строковым представлением только чисел и для них резервирует 1 ячейку под символ знака «-» у отрицательных чисел и » » для положительных, как разделитель понимает только «.»)
Val() — число (является функцией которая в тексте слева на право ищет число и вытаскивает только первый попавшийся набор цифр до 1 строкового символа, но 1 точку воспринимает как разделитель)
Также можно проверить являются ли данные тем или иным форматом (типом), так же возможно ли автопреобразование к этому типу. Например текстовое поле 542 при проверки IsNumeric(«542») выдаест TRUE.
IsNumeric() — числовым
IsDate() — датой
IsEmpty() — пустым значением
IsError() — будет ли ошибка во время выполнения
IsMissing() — были ли переданы при вызове процедуры необязательные аргументы типа Variant
IsNull() — нулевое значение (Значение Null указывает, что переменная типа Variant не содержит допустимых данных)
IsObject() — объект или тип класса
IsArray() — массив
Hex() — 16-тиричное обозначение числа
Oct() — 8-миричное обозначение числа