воскресенье, 27 февраля 2011 г.

ADO доступ к таблице Excel и обработка Листа Excel.

Новый русский вызвал службу по ремонту компютеров.

Приезжают служащие и видят, что в углу могитора здоровая дыра.
-Что ты с ним делал? - спрашивают те.
-Да я тут весь город развожу, а мне какая - то скрепка у виска крутить будет?????


Совсем недавно, потребовалось мне писать код для доступа к файлу Excel по ADO с дальнейшим запросом с использованием SELECT по нему. Для теста мне был предоставлен один файл Excel с единственным листом "Лист1". Обработку я настроил на этот первый лист:

axCatalog = СоздатьОбъект("ADOX.Catalog");
//...
ИмяТаблицы = axCatalog.Tables(1).Name;
//...
//можно еще так:

//ИмяТаблицы = axCatalog.Tables.Item(1).Name;

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

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

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

При открытии файла Excel заполняем список спСписокЛистовКниги именами Листов файла Excel. Потом пользователь выбирает из списка обрабатываемый Лист, а код:

СтрокаИмяТаблицы = СокрЛП(спСписокЛистовКниги.ПолучитьЗначение(спСписокЛистовКниги.ТекущаяСтрока()));
СтрокаИмяТаблицы = СтрЗаменить(СтрокаИмяТаблицы,".","#");
ИмяТаблицы = СтрокаИмяТаблицы + "$";

получает имя Листа [далее приводится пример]"ЛистПервый", добавляем к названию "$", получая "ЛистПервый$", которое будет использоваться в запросе как ИмяТаблицы.
Если в имени Листа используется ".", то её нужно заменить на "#". Возможно еще какие-то спецсимволы имеют свойство замены в Excel. В предоставленных мне файлах Excel для второго тестирования в имени файла использовалась только точка. Тестировал еще ".!@#$%^&" получив "#_@#$%^&" следовательно:
. - #
! - _

среда, 23 февраля 2011 г.

1С 8 ХРАНИЛИЩЕ КОНФИГУРАЦИИ

Профессор: - Как называется хранилище для воды? 
Студент: - Презервуар?
Профессор: - Правильно, только без "п".
Студент: - Резерватив?...


Хранилище конфигурации - это полезный функционал 1С 8 для групповой разработки прикладных решений, для версионирования прикладного решения а так же документирования изменений прикладного решения в процессе разработки.
После изучения теоретических материалов выложенных в сети я сделал первый практический шаг в освоении, с которым и хочу с Вами поделится:

вторник, 22 февраля 2011 г.

Совместная база данных цен по всему миру.

И снова я сталкиваюсь с статистическими данными(международными) в веб-сёрфе. В прошлой статье я писал про рейтинг ВУЗов с их сайтами, сегодня тема для блог-поста не менее интересная.
Expatistan.com посвящен для людей во всем мире. Он создан для показа реалистичных данных о ценах во многих крупных городах мира. Сайт является бесплатным и простым в использовании. Expatistan.com является результатом совместных усилий - создан людьми для людей во всем мире.
А вот и сам: http://www.expatistan.com

Заходим на сайт. Заполняем поля, например Kiev и London и жмем кнопку Go! Результат:
Стоимость жизни в Киеве (Украина) является 65% дешевле , чем в Лондоне (Великобритания)
Каждое сравнение можно развернуть и посмотреть параметры по каким было произведено сравнение и каковы цены в городах на эти параметры.

Не нашел не одного города где по общим параметрам жизнь в Киеве была бы дороже. Для сравнения брал: Barnaul, Almaty, Delhi, Berlin, Tbilisi, Minsk, Toronto, Tokyo, New York City, Mumbai, Shanghai, Istanbul, Buenos Aires, London... Если найдете, отпишитесь в коментах.

суббота, 19 февраля 2011 г.

Веб-рейтинг университетов мира

Серфинг инета привел меня на любопытный сайт: http://www.webometrics.info/top12000.asp
Двенадцать тысяч университетов всего мира попавшие в список НЕ по академическим успехам, степеням, кол-ву студентов, премиям, квалификации и т.д., А по подсчету упоминаний учебного заведения в сети интернет. Как я понимаю на общую оценку влияют такие параметры как:

  • размер сайта
  • доступные файлы публикаций, работ
  • сервис Google Scholar
  • внешние ссылки
  • упоминание учебного заведения в резюме
  • биографии ученых преподавателей

В списке рейтинга встречаются 330 Universities of Ukraine (Университетов Украины) и 671 Universities of Russian Federation (Университетов Российской Федерации).

Статистика по Украине печальна:

  1. ни один из ВУЗов не вошел в 1000 лучших
  2. Львовский Национальный Университет - http://www.franko.lviv.ua/ - 1443 место (ссылка)
  3. Киевский Национальный Университет - http://www.univ.kiev.ua/ - 1576 место (ссылка)
  4. Киево-Могилянская Академия - http://www.ukma.kiev.ua/ - 1608 место (ссылка)
  5. Донецкий Национальный Технический Университет - http://donntu.edu.ua/ - 1634 место (ссылка)
  6. Харьковский Национальный Университет - http://www.univer.kharkov.ua/ - 1745 место (ссылка)


P.S. Еще мне было интересно:
Size by Domain - http://www.webometrics.info/Size_by_Domain_World.asp
Size by Population - http://www.webometrics.info/Size_by_Population_World.asp
Size by GDP - http://www.webometrics.info/Size_by_GDP_World.asp

вторник, 15 февраля 2011 г.

Любопытные браузеры


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


четверг, 10 февраля 2011 г.

HaoZip замена WinRAR

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

понедельник, 7 февраля 2011 г.

_GetPerformanceCounter()

Синтаксис:
_GetPerformanceCounter()
Назначение:
Возвращает число миллисекунд (1000-чных долей секунды) прошедших с момента включения компьютера.
Замечание:
Разница между значениями двух замеров позволяет определить количество миллисекунд прошедших между замерами.