Это моя библиотека из нескольких сотен функций, написанная на VB6 . Может использоваться везде, где можно использовать VB’ские DLL и OCX(для пары компонентов этой библиотеки). В основном, как программист СУБД, я использовал ее функции для создания Excel’ских отчетов из всевозможных источников данных.
Определялся с одной стороны жуткой нехваткой времени, с другой - желанием предоставить необходимую для использования информацию. Поэтому при желании попе(и)нять, вспоминайте про этот пункт.
Вариант1 (nyvb1.exe (~700Kb)- Минимально необходимый для использования, для понимающих) :
§ NyVbDLL.dll – собстно библиотека.
§ NyVbOcx.ocx – пара контролов – визуальный TextLim.ctl (поле ввода с ограничением по диапазону и кнопками прокрутки) и невизульный xTimer.ctl (с расширенными возможностями по периоду тиков, их Capacity и пр.). Для NyVbDLL нужен только в Repeater, который так и не стал востребованным, поэтому NyVbOcx можно и не использовать, если не хочется.
§ OCXxTimer.ocx - невизульный xTimer в отдельной библиотеке , можно не брать при желании.
§ Doc.rar – спецификации вызовов функций библиотеки. Основное описалово.
Вариант1 можно использовать полностью, если у вас есть MSVBVM60 на компе, (т.е. уже когда-то инсталлировались дистрибутивы приложений, созданных в VB6) , впрочем, для подавляющего большинства применений работает и просто на Win2Kpro и Office2K со всеми современными SP (см среда установки).
Вариант2 ( nyvb2.exe (~2Mb) - с VB инсталлятором )
§ включает инсталлируемые компоненты Варианта1
§ плюс MSVBVM60.dll ;
§ плюс некоторые дополнения COMDLG32.OCX –поддержка win диалогов и MSCOMCT2.OCX - календарь ;
§ плюс MsSQL.rar и ResAddr.rar для поддержки nyMutex() (см Doc.rar!nyDB.bas!nyMutex() ) и работы с источниками данных через базу адресных имен ресурсов ;
После установки в целевом каталоге обнаружатся Doc.rar,MsSQL.rar и ResAddr.rar , остальное все уйдет в System32 .
Примеры (можно закачать дополнительные примеры, иллюстрирующие использование NyVbDll с Excel ) :
§ example1.rar – приводит всевозможные варианты коннекта к источникам данных и заливки данных в именованные диапазоны в книге Excel
Всю инфу , во-первых , см файлы info.txt в каталогах , во – вторых, в описании функций Doc.rar
Отдельно по поводу получения Excel’ ских отчетов :
В основном вся инфа сосредоточена в описании функций :
Nydb.FillFromDb() – описание задания (находящегося на рабочем листе Excel ) на создание отчета .
Nydb.CreateLinkDB() – описание спецификации задания соединений с источниками данных.
Плюс (не обязательно) описания некоторых функций , вызываемых их
этих двух (например nyDB.CmdExec()
и nyDB.ProcExec() )
Но, вообще говоря, с помощью поставляемых примеров быстрее понять и освоить
создание отчетов под NyVb .
( Все ключевые для понимания слова я попытался выделить )
§ Сама по себе NyVbDll представляет из себя большое количество функций, нужных и не очень : это обработка строк, массивов, работа с диалогами, файлами, с датой – временем, разный запуск внешних программ, работа с Access,Word,Excel и т.д. Но основное мое использование было – это работа с базами данных и применение ее для создания Excel’cких отчетов. Поэтому дальше об этом.
§
Первое , что стало доставать при программировании в VBA (как ,врочем и в любом другом универсальном языке) при знакомстве
с ADO моделью
доступа к данным , это необходимость задания целой кучи установок , чтобы
выполнить один запрос с параметрами .Чтобы упростить эти операции,
сделать их похожими на специализированый язык доступа к даным (типа SQL), избавиться от лишних
строк в программе была написана nyDB.ProcExec() , а , несколько позже и nyDB.CmdExec(), примеры их применения
можно увидеть в Examples2.rar.
После чего построение запроса, например, из Access.mdb
стало проще :
ProcExec strSQL:=”PARAMETERS Dt1 DateTime, Dt2 DateTime ; Select * into T2 from T1 where DateFld
between Dt1 and Dt2 ”, _
ParName1:="Dt1", Par1:=Dt1, ParName2:="Dt2", Par2:=Dt2
Но это по мелочи (просто вспомнилось ;).
§
Далее. Пусть мы имеем на предприятии гетерогенную
среду, состоящую из различных наследуемых систем, всевозможных источников
данных. Пусть наследуемые СУБД (типа Foxpro) сегментировали
однородные структуры даных по различным каталогам , с одной стороны с целью
их разбиения по структурным единицам предприятия, с другой , - с целью
повышения производительности системы , когда в каждом каталоге хранились данные
, например за месяц. Т. е. в результате мы имеем , например , систему учета , скажем, производства какого-то продукта
по цехам, по годам, по месяцам – с каталогами Цех1\2002\01 Цех1\2002\02 , …. Цех2\2002\01 Цех2\2002\02 , ….. Как
упростить добычу таких данных и представить их в одном анализируемом человеком
отчете?
1. Во-первых, чтобы не работать с различными СУБД (не использовать различные диалекты SQL) можно использовать один – единственный SQL – MsJet и mdb базу Access с привязанными к ней различными источниками.
2. Во-вторых , чтобы привязать различные источники к mdb базе в условиях сегментирования данных по каталогам нужна специальная программная поддержка , которая позволила бы объединять эти данные так, чтобы программа OLAP отчета желающего видеть данные за все времена и народы (ну или за период включающий несколько каталогов или разные каталоги) об этом уже не беспокоилась, незачем ей эти накладные хлопоты.
Вот эти – то две задачи и решает CreateLinkDB() ( см ее описалово и, в первую очередь, пример с GetData.xls и прочие примеры ) . Она по спец. Заданию привязок, переданному ей с листа Excel dbProgram функцией FillFromDB(), строит временную MDB , привязывает к ней в сответсвии с заданием нужные источники и строит для них объединяющие (по UNION) запросы так, что прикладная програма отчета может использовать эти запросы как View , уже не заботясь об объединении или переключении между каталогами (или разными СУБД ) .
§ Почему для отчетов берем Excel :
Excel является наиболее удобной и мощной (ну если забыть про его глюки и некоторые емкостные ограничения среды) из всех известных мне сред для пользователя при анализе имеющихся данных , не зря , первое , за что хватаются пользователя, желабщие как-организовать свои данные и не имеющие в своем распоряжении СУБД , это Excel. Впрочем, далее доказывать не буду.
§ Но , хотя имеются некоторые средства типа Ms Query , для доступа к внешним данным Excel все же плохо приспособлен. Поэтому возникла идея, что , впрочем естественно, нагрузить его поддержкой доступа к данным и построением отчетов из различных источников данных.
§ Для реализации этой идеи на специально выделенном листе dbProgram (который обычно скрывается) начиная с ячейки A1 (или любой спец указаной) создается область ячеек, содержащая Часть задания по привязке источников данных и Часть задания , содержащая SQL программу (простую линейную программу). См. примеры.
§ Вкратце, - часть привязок , используя спец мета язык, лаконично задает выполнение циклов по привязке данных из различных каталогов или серверных СУБД, ну и вообще , как выше было сказано, - из любых источнков. При этом используются строки связи из спецификации OLEDB и пути (адреса) источников данных. Можно работать через ResAddr. Впрочем можно коннектиться и прямо к СУБД без промежуточной MDB ( фраза “DC:” ), тогда уже, конечно, потребуется использовать ее SQL в SQL программе ниже. См. описалово части привязок в FillFromDB() + CreateLinkFromDB().
§ Вкратце, - SQL программа содержит в основном Select операторы доставки данных и одновременного выплескивания их в указаные в этом же Select c помощью into <Имя> именованный диапазон <Имя> в рабочей книге, если имя не будет найдено среди именованных диапазонов книги , то произойдет создание таблицы <Имя> во временной MDB , которая может далее использоваться SQL программой. Эти именованные диапазоны могут иметь или не иметь заголовки полей, если имеют , то те определяют своим форматом формат всего столбца под ними (заголовки могут быть скрыты) . Могут гибко раздвигать заполняемые области или просто накладываться , что нужно в жестких бланках и т.д. и т.п. Также SQL программа может содержать функции вызова макросов из книг Excel и даже вызова другого такого задания с привязками и SQL программой из другого диапазона листа dbProgram с неограниченной , если я не ошибаюсь насчет рекурсии VB , глубиной вложения (см пример Examples2 ЗалогБилет.xls ячейку dbProgram с Call(:”Prog2”) вызывающую программу с ячейки с именем “Prog2“ ) . Короче, длиннее см . FillFromDB() .
§ Касательно ResAddr – Resaddr.dbf - это деревянная база адресных имен всех ресурсов, которую удобно иметь в сети предприятия на общедоступном сервере в readоnly каталоге (см приводимый пример ее организации ). Через нее удобно организовать работу всех приложений на предприятии , использующих доступ к данным , тогда приложения будут зависимы только от пути к ResAddr и имени ресурса из этой таблицы , что упрощает администриование источников данных в сети предприятия. Можно безболезнено менять расположение любых зарегестрированных в ней ресурсов или переключать приложения с одного на другой с такой же структурой данных (что нужно для файловых СУБД , или менять имена серверных СУБД или даже имена серверов сети и т.п.) без перепрограмирования приложений. Получить в приложении конкретный путь к даному ресурсу с помощью ResAddr.dbf можно используя ее интерфейс по чтению nyDB.GetAddr() . Пока пользовательского интерфейса на заполнение этой деревянной таблицы нет, приходится вручную заполнять , но желающим доделать это просто.
На этом этот анонс пока можно закончить .
Программа распространяется бесплатно и без каких-либо ограничений, в том числе и без ограничений на извлекаемую от этого прибыль. За исключением получения прибыли от распространения. Единственное требование - распространять программу только в оригинальном архиве. Оригинальный архив может распространяться через компьютерные сети, может быть включен в другие архивы, дистрибутивы программ, сборники программ на CD-ROM и прочее. Никаких специальных разрешений на это не требуется.
Вы можете распространять программу только в оригинальном ее виде
Вы не можете изменять, декомпилировать, дизассемблировать и изучать код программы другими способами.
Программа распространяется по принципу "как есть". При этом не предусматривается никаких гарантий, явных или подразумеваемых. Автор не несет никакой ответственности за моральный и материальный ущерб, связанный с использованием или невозможностью использования данной программы. Вы используете программу с собственным пониманием ее применимости и ожидаемых результатов на свой собственный риск.
Автор оставляет за собой право отменить действие данных условий для любой из следующих версий программы.
По всем вопросам, связанным с распространением, установкой и использованием программы, если таковые у Вас возникнут, Вы можете обратиться к автору по yuniki@rambler.ru .
--------------------------------------------------------------------------------