В статье кратко рассматриваются виды СУБД и язык программирования PascalABC.NET. Отмечается, что поддержка работы с библиотеками .NET открывает возможности подключения программ, написанных в среде PascalABC.NET, к базам данных Microsoft Access. Организация взаимодействия программы, написанной в среде программирования PascalABC.NET, с MS Access, в ряде случаев позволяет более эффективно работать с данными.
Ключевые слова
NET, PASCALABC, ОБРАЩЕНИЕ К БД, ЯЗЫК ПРОГРАММИРОВАНИЯ, СОЗДАНИЕ БАЗ ДАННЫХ, MICROSOFT ACCESS
Текст научной работы
Из года в год объемы получаемой и передаваемой между людьми информации растут. Для быстрой и удобной навигации данные нужно каким-либо образом структурировать. Одним из способов организации и хранения информации служит создание базы данных. База данных (в узком смысле слова) – поименованная совокупность структурированных данных, относящихся к некоторой предметной области [3].
Системы управления базами данных классифицируются по следующим признакам: по модели данных, по степени распределенности и по способу доступа к базе данных. При этом модели данных могут быть следующего типа: иерархические, сетевые, реляционные, объектно-ориентированные, объектно-реляционные.
1.4 Access Runtime
По степени распределенности базы данных разделяются на локальные СУБД (все части локальной СУБД размещаются на одной рабочей машине) и на распределенные СУБД (части СУБД могут размещаться на двух и более компьютерах).
В зависимости от направления использования и способа доступа, БД могут быть: файл-серверные, клиент-серверные, встраиваемые.
В файл-серверных СУБД файлы базы данных располагаются централизованно на одном файл-сервере, а сама СУБД располагается на каждой из клиентских рабочих станций. Доступ СУБД при данном способе к данным осуществляется через локальную сеть. Плюсом данной архитектуры является сравнительно низкая нагрузка на процессор файл-сервера.
Минусы: возможна потенциально высокая загрузка локальной сети; затрудненность или невозможность централизованного управления; затрудненность или невозможность обеспечения таких важных характеристик, как высокая надежность, высокая доступность и высокая безопасность. Данная архитектура используется чаще всего в локальных программах, которые используют функции управления БД; в системах с малой интенсивностью обработки данных и низкими пиковыми нагрузками на БД. В данное время файл-серверная технология считается устаревшей, а ее использование в крупных информационных системах скорее недостатком, чем достоинством [2]. Пример файл-серверных СУБД: Microsoft Access, Paradox, dBase, FoxPro, Visual FoxPro.
Клиент-серверная СУБД располагается на серверной машине вместе с базой данных и осуществляет доступ к БД в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно. Недостаток клиент-серверных СУБД состоит в повышенных требованиях к серверу. Достоинства: потенциально более низкая загрузка локальной сети; удобство централизованного управления; удобство обеспечения таких важных характеристик, как высокая надежность, высокая доступность и высокая безопасность.
Подключение базы данных Access к приложению Visual Studio
Пример клиент-серверных СУБД: Oracle, Firebird, Interbase, IBM DB2, Informix, MS SQL Server, Sybase Adaptive Server Enterprise, PostgreSQL, MySQL, Cache.
Встраиваемая СУБД – это СУБД, которая может поставляться как составная часть какого-либо программного продукта, при этом не требуется процедуры самостоятельной установки. Данный тип СУБД предоставляется для локального хранения данных своего приложения, но она не предназначена для многопользовательской работы. Физически встраиваемая СУБД часто реализована как подключаемая библиотека. Для доступа к данным используется SQL или специальный программный интерфейс приложения. Пример встраиваемых СУБД: OpenEdge, SQLite, BerkeleyDB, Firebird Embedded, Microsoft SQL Server Compact.
Microsoft Access – реляционная СУБД компании Microsoft. Имеет интуитивно понятный пользовательский интерфейс, который позволяет создавать как базу данных, так и приложение для базы данных. Приложение может содержать формы для ввода, просмотра, редактирования таблиц, графики, отчёты, предопределенные макросы и функции VBA.
Все представленные в базе данных объекты – таблицы, отчеты, запросы, макросы, содержатся в одном файле. Это является отличием от других настольных СУБД.
Для того, чтобы понизить порог вхождения в продукт, MS Access предоставляет множество мастеров. Это мастера по созданию запросов, форм, отчетов, и даже макросов. Мастера могут выполнять основную работу за пользователя при работе с данными и в разработке приложений. Для пользования указанным функционалом не требуется особых навыков в программировании, так как многое делается по принципу WYSIWYG.
Рассматривая функциональные особенности MS Access, можно прийти к выводу, что это далеко не идеальная реляционная СУБД. Как и многие БД она имеет ряд преимуществ и недостатков.
В виду архитектуры Access (файловая БД) данная СУБД подходит только для проектов небольшой и средней сложности. Связано это с отсутствием таких средств как триггеры и хранимые процедуры. Этот момент приводит к тому, что необходимая бизнес-логика базы данных переносится на клиентскую программу.
К минусу можно отнести и то, что защита информации и разграничение доступа в Access не имеет надежных встроенных средств. Возможна защита в виде использования пароля БД или пароля пользователя. Узким местом является то, что по необходимости, обойти пароль не составит труда для специалиста.
Но наряду с минусами MS Access имеет ряд преимуществ перед другими системами подобного класса. Ключевым моментом является то, что данная СУБД высоко распространена. Это связано, прежде всего, с тем, что это продукт Microsoft, чья операционная система установлена на 90% машин пользователей и Microsoft Office включает в себя MS Access.
В связи с этим MS Access полностью совместим с операционной системой Windows, имеет хорошую поддержку, документацию и регулярные обновления. Значимым является и то, что имеется поддержка большого множества языков [1]. Также продукт имеет направленность на пользователя с разным уровнем подготовки, что выражается в наличии большого количества вспомогательных средств/мастеров, развитую систему справки и интуитивно понятный интерфейс. Все эти инструменты облегчают работу на этапе проектирования, создания БД и на этапе реализации выборок данных из нее.
MS Access предлагает в распоряжение пользователю, который не имеет опыта в программировании, различные диалоговые средства. Эти средства позволяют создавать приложения, не прибегая к разработке запросов на языке SQL или к программированию макросов или модулей на языке VBA, по необходимости.
При работе с базами данных часто возникает необходимость импорта/экспорта из различных форматов. Например, загрузка прайс-листа, который был загружен с web-сайта. Для этого в Access есть инструменты по импорту/экспорту данных в различные форматы, от таблиц Excel и текстовых файлов, до практически любой серверной СУБД через механизм ODBC. Например, к приложению на Access можно подключить базу MS SQL Server и для этой базы создать визуальные формы для ввода/редактирования данных или создание каких-либо отчетов.
Если функционала, предоставляемого мастерами, недостаточно, в MS Access есть встроенный язык программирования – VBA (Visual Basic for Applciation). Многие приложения, которые написаны для MS Acess, содержат код VBA. VBA единственное средство для выполнения многих задач, таких как: работа с переменными, построение команд SQL во время работы программы, обработка ошибок, использование Windows API. Поэтому для того, чтобы создать более-менее сложные приложения необходимо его знание и знание объектной модели MS Access.
Ещё одно средство для программирования в MSAccess – это язык макрокоманд. Макрос содержит ряд макрокоманд – программный алгоритм действий, записанный пользователем. Управление макросами происходит через события, которые вызываются действиями пользователя при диалоговой работе с данными через формы или системные события. Преимуществом макросов является то, что можно создать последовательность команд или операций, не прибегая к программированию на VBA.
Получается что MSAccess, обладая всеми чертами СУБД, предоставляет и дополнительные возможности. Это не только гибкая и простая в использовании СУБД, но и система для разработки работающих с базами данных приложений.
Перейдем теперь к рассмотрению языка программирования PascalABC.NET, представляющего собой Паскаль нового поколения, который включает в себя классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и в его состав входят все современные языковые средства, такие как классы, перегрузка операций, интерфейсы, обработка исключений, обобщенные классы и подпрограммы, сборка мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком. С его помощью можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET – это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
IntelliSense – технология автодополнения Microsoft, наиболее известная в Microsoft Visual Studio. Дописывает название функции при вводе начальных букв. Кроме прямого назначения IntelliSense используется для доступа к документации и для устранения неоднозначности в именах переменных, функций и методов, используя рефлексию. Кроме того, консольный компилятор PascalABC.NET функционирует на Linux и Mac OS. Это делает проекты, созданные в данной среде кроссплатформенными, естественно, с некоторыми ограничениями, которые накладывает та или иная платформа/ОС.
Позднее в 2005-2006 годах сама система была полностью переработана: была изменена её архитектура – на полноценный компилятор языка, близкого к Delphi, с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET. В июне 2009 года появилась первая стабильная версия PascalABC.NET 1.2.
В сентябре 2009 г. вышла веб-среда разработки [5] WDE, которая не требовала установки PascalABC.NET на локальную машину и позволяла запускать программы на PascalABC.NET непосредственно из окна браузера. Ключевой особенностью WDE является то, что программа запускается на сервере, а на клиентский компьютер в интерактивном режиме передаются лишь данные ввода-вывода. Для пользователей, имеющих регистрацию, доступен личный файловый архив программ с возможностью навигации по ним, а также имеется функционал предоставления другим пользователям доступа к опубликованным программам на чтение в стиле GoogleDocs. В августе 2010 г. в среде WDE появился функционал по созданию простых графических приложений.
В августе 2011 г. был осуществлен переход на .NET 4.0 (версия 1.8). В январе 2012 г. веб-среда разработки WDE также была переведена на .NET 4.0. С мая 2012 г. в веб-среду разработки добавлена поддержка компиляторов C#, VB.NET, IronPython и F#, в связи, с чем она была переименована в ProgrammingABC.NET WDE.
В феврале 2013 г. вышла версия PascalABC.NET 2.0 с дизайнером форм. 15 мая 2013 г. вышла версия 2.1 с английской локализацией интерфейса и сообщений об ошибках. 15 февраля 2014 г. вышла версия PascalABC.NET 2.2. Многократно ускорено обращение к символам строки на запись.
Поскольку в PascalABC.NET можно пользоваться всеми библиотеками платформы .NET, то стандартные модули немногочисленны и ориентированы на обучение:
- Модуль растровой графики GraphABC.
- Модуль векторной графики ABCObjects.
- Модуль FormsABC для создания простых оконных приложений без дизайнера форм.
- Модуль Arrays для ввода-вывода-заполнения одномерных и двумерных динамических массивов.
- Модуль Collections, содержащий упрощенные классы коллекций [4].
Поддержка использования библиотек .NET дает большой список пространств имен и библиотек, которые можно использовать при программировании. По факту – использование библиотек C# на диалекте Pascal. Программистам, которые перешли со среды Visual Studio, будет интуитивно просто пользоваться привычными библиотеками. Тем, кто совершит переход с Delphi, будет привычен синтаксис языка Pascal и понравится то расширение функционала, которое доступно в PascalABC.NET. В качестве обучающей среды разработки подойдет для пользователей с любым уровнем знаний.
Поддержка работы с библиотеками .NET открывает возможности подключения программ, написанных в среде PascalABC.NET, к базам данных MicrosoftAccess, поэтому в качестве инструмента для проектирования и создания базы данных программ можно использовать пакет Microsoft Office (его составную часть – Microsoft Access). Для подключения к базе данных MS Access тогда будет использоваться объект OleDbConnection (System.Data.OleDb).
Для демонстрации возможностей PascalABC.NET в следующей статье будет рассмотрен пример разработки телефонного справочника в этой среде программирования с использованием графического интерфейса и базы данных MS Acess.
Основные подходы к управлению рисками на предприятиях
- Губарев А.В.
- Богданова И.А.
Разработка автоматизированной системы управления кандидатами
- Землянская М.В.
Источник: novainfo.ru
VBA: как запустить другое приложение из MS Access
Я пытался разобраться с этой проблемой, и кажется, что я нигде не могу найти решение проблемы. Вот была первая часть: Команда оболочки VBA всегда возвращает «Файл не найден» В этом вопросе приложение не находилось в папке %APPDATA% по какой-то странной причине, вероятно, из-за настроек безопасности.
С тех пор я переместил инструмент импорта в тот же каталог, в котором я храню базу данных, с небольшой надеждой заставить его работать правильно. Моя цель — нажать кнопку в MS Access и запустить мой инструмент импорта напрямую. Прямо сейчас я открываю папку, в которой находится инструмент. Это работает на моей машине разработки с правами администратора, но не работает на других машинах без прав администратора. Код прямо сейчас выглядит примерно так:
Dim hProcess as Long Dim myPath as String Dim ex as String ex = «C:WINDOWSexplorer.exe » myPath = Environ(«ProgramFiles(x86)») mytool» hProcess = Shell(ex ProgramFiles(x86)») mytoolmytool.exe» hProcess = Shell(myPath, vbNormalFocus)
Этот раздел «кажется» работает в том смысле, что он загружает приложение «mytool.exe», когда я смотрю на диспетчер процессов. Однако через несколько секунд (может быть, 20) выскакивает диалог о том, что приложение «mytool.exe» перестало работать.
Здесь следует отметить, что у меня есть права администратора на моем компьютере для разработки, но у меня есть все права на моем домашнем компьютере. На моей домашней машине этот второй код работает без проблем. На моей машине для разработки происходит сбой, а на машине с ограниченным доступом вообще ничего не делает.
Есть ли какие-либо предложения о том, как открыть это приложение из MS Access, используя привилегии меньше, чем администратор? Либо запустить приложение напрямую, либо хотя бы открыть папку, в которой находится указанное приложение. Благодаря! PS Я пробовал код ShellAndWait и RunApplication, найденный в stackoverflow, ни один из них не работает в этом случае.
задан 17 мая ’12, 19:05
4 ответы
Я всегда использую ShellExecute из Windows API, когда мне нужно что-то выполнить в VBA.
Насколько я знаю, он работает и на машинах без полных привилегий. Пример:
Declare Function ShellExecute Lib «shell32.dll» Alias «ShellExecuteA» (ByVal hwnd As Long, _ ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal lpnShowCmd As Long) As Long Public Sub ShellEx(ByVal Path As String, Optional ByVal Parameters As String, Optional ByVal HideWindow As Boolean) If Dir(Path) > «» Then ShellExecute 0, «open», Path, Parameters, «», IIf(HideWindow, 0, 1) End If End Sub
Теперь ты можешь позвонить ShellEx запустить почти что угодно:
‘run executable ShellEx «c:mytool.exe» ‘open file with default app ShellEx «c:someimage.jpg» ‘open explorer window ShellEx «c:»
- передавать параметры исполняемым файлам
- скрыть окно вызываемого исполняемого файла
ответ дан 07 дек ’13, 12:12
Я использовал этот метод несколько раз и хочу отметить кое-что: вызов оболочки не приостанавливает потоки MS Access. Он просто вызывает оболочку, и, поскольку он не отслеживает, завершен ли процесс оболочки, он продолжит выполнение, даже если программа в оболочке все еще выполняется. одуванчик
вот пример запуска приложения в ms access
Private Sub Command1_Click() Dim myPath As String myPath = «C:Program Filesmytoolmytool.exe» Call Shell(myPath , 1) End Sub
Я хочу, чтобы это помогло тебе
Источник: stackovergo.com
Как запустить запрос на выполнение в MS Access?
Откройте запрос в реж. конструктора. Связи изображаются в виде линий, соединяющих поля в исходных таблицах. Запишите имена таблиц и полей, участвующих в каждом объединении.
В области переходов щелкните правой кнопкой мыши каждую таблицу, имеющую одно или несколько полей, связанных в запросе, а затем выберите команду Конструктор.
Выноска 1 Связанные поля с разными типами данных.
Выноска 2 Щелкните таблицу правой кнопкой мыши и выберите команду «Конструктор».
Сравните для каждого объединения значения в столбце Тип данных таблицы в бланке запроса для полей, участвующих в объединении
Выноска 1 Проверка типов данных связанных полей в режиме конструктора таблицы.
Чтобы перейти в таблицу и просмотреть ее поля, щелкните вкладку с именем этой таблицы.
Источник: www.bolshoyvopros.ru