|
Программирование >> Проектирование интерфейса пользователя
14: 15: 16: 17 18: 19 20 21: 23 : 26: 27: Publishers.MoveFirst Po While RecordSet.EOF = False Debug.Print Publishers( Artist Publishers.MoveNext Loop Publi shers.Close Set Publishers = Nothing Set Command = Nothing Set Catalog = Nothing Set Connection = Nothing End Sub Многие строки кода вам уже знакомы, поэтому остановимся лишь на главном. Вам следует выделить объекты соединения и каталога. Обратите внимание, что в строке 11 не создается новый объект Recordset - в нем нет необходимости, поскольку данный объект возвращается командой Command.Execute в строке 14. Поэтому дополнительные операпии выделения памяти в строке не нужны. В строке определяется значение Parameters объекта Command, а в строке 14 вызывается метод Execute, возвращающий набор данных, которые являются результатом выполнения запроса хранимой процедуры Полученный в выполнения команды строки 14 набор данных, может при- меняться, как и любой другой - мы неоднократно выполняли подобные операции ранее. Создание запросов в базах данных формата SQL Server В проектах Access SQL можно использовать тремя способами: создавать соединения с SQL-базами данных, преобразовывать базы данных Access в формат SQL Server, устанавливать связь с SQL-таблипами, используя команду ФайлоВнешние данныеСвязь (File=>Get Extemel DataOLink). Выбор зависит от пелей проекта и условий его разработки. Для повышения надежности, вероятно имеет смысл использовать формат SQL Server. А если для работы требуется всего лишь некоторые данные из другой базы данных, достаточно создать связь с таблицей или использовать объект Connection. Если вы планируете устанавливать связь с таблицами SQL Server, рекомендуется создать объект источника данных. Либо же использовать OLE DB и ADO для непосредственного указания информации о провайдере (Provider). Эти операции были описаны в предыдущих главах. После того как доступ к данным SQL Server обеспечен, работа с такой базой данных, по большому счету, не будет отличаться от работы с данными Access. Необходимо получить объект Recordset, определить запрос в зависимости от требуемой операции и открыть набор записей. С этого момента управление данными происходит так же, как и в Access - с помощью SQL или VBA-кода либо их комбинации. 11: Dim Publishers As ADODB.Recordset 12 : Pim RecordsAffected As Dong Command.Parameters ( [APublisher] ).Value = Elektra Set Publishers = Command.Execute() Вам необходимо лишь помнить, что SQL Server - другой сервер баз данных, поэтому текст запросов может несколько отличаться в зависимости от используемой версии SQL Server. Разобраться с подобными тонкостями поможет хорошая книга по работе с применяемой версией сервера баз данных, эксперименты, и, конечно же, терпение. Резюме Да, это был серьезный и продолжительный урок. Вам пришлось много потрудиться. Впрочем, в этой книге изложены лишь общие концепции программирования на SQL. Если вы нуждаетесь в более подробной информации, настоятельно рекомендуем обратиться к пособиям, специально посвященным SQL, - например, к книг Стефенза (Ryan Stephens) Sams Teach Yourself SQL in 24 Hours. SQL - это мощн1й самостоятельный язык программирования, имеющий достаточно глубокие исторические традиции. Почти каждая система управления базами данных снабжена собственным диалектом SQL. Если, помимо Access, вы предполагаете работать с другими системами, будет лучше воспользоваться специальными руководствами и фирменной документацией. В ходе этого занятия вы ознакомились с различными конструкциями одной из основных команд SQL - SELECT, включая возможности объединения таблиц (предложение JOIN) и запросов (UNION), а также построения подчиненных (вложенных) запросов. Мы кратко рассмотрели средства добавления (INSERT), обновления (UPDATE) и удаления (DELETE) данных. Вы научились пользоваться предложением WHERE (поддерживаемым почти во всех названных командах) для фильтрации данных. Механизмы создания и использования хранимых процедур весьма серьезны и заслуживают особого внимания. Теперь, благодаря объектам ADO, доступ к ним получили и программисты, работающие с Access. Достаточно хорошо освоить базовые конструкции SQL - и хранимые процедуры станут вашим надежным помощником. А теперь сделайте еще одно усилие и ознакомьтесь с оставшимися разделами этой главы. Вопросы и ответы Вопрос. Действительно ли SQL, как и VBA, обладает собственн1м набором служеб-н1х слов и синтаксических правил? Ответ. Да. Все языки (и языки программирования в том числе) обладают собственным словарем и грамматикой. Словарь перечисляет допустимые (значимые) слова, а грамматика диктует правила их употребления. Теперь вы знакомы уже с двумя языками программирования (речь не идет о более опытных читателях). Осталось лишь научиться с их помощью понятно выражать свои мысли. Вопрос. Существуют ли какие-либо ограничения, связанные с объемом единого запроса на языке SQL? Ответ. Нет. Вы можете создавать настолько сложные и широкие запросы, насколько это необходимо и целесообразно. Но SQL - это, как говорят, монолитный язык. Каждый запрос всегда содержит только одно выражение, пусть даже весьма обширное. Впрочем, и для SQL справедливо общее эмпирическое правило - чем проще, тем лучше. Вопрос. Что вы можете сказать о стиле программирования на SQL? Ответ. Правила хорошего тона в программировании едины. Не пытайтесь втиснуть решение всей задачи в рамки одного выражения SQL. Старайтесь представить ее в виде последовательности частных подзадач, решаемых с помощью простых конструкций SQL и связанных командами на язык ВА. Этим вы существенно упростите обязанности по дальнейшему развитию и сопровождению программного проекта. Вопрос. Где я могу найти информацию об определенной версии SQL? Ответ. Посетите Web-сайт ANSI (http: www.ansi.org) либо обратитесь за литературой к поставщику той системы управления базами данных, которой пользуетесь. Задания Ниже приведены тестовые задания и упражнения, которые помогут вам самостоятельно проверить уровень освоения материала, изложенного в этой главе. Ответы на вопросы вы найдете в приложении. Тесты 1. Что такое подчиненный (вложенный) запрос? 2. С какой целью употребляется служебное слово ALL, используемое совместно с UNION? 3. Можно ли применять вложенный запрос в контексте команды DELETE? Если да, то зачем? 4. Ограничиваются ли возможности хранимых процедур использованием команды SELECT? Упражнения 1. Напишите предложение WHERE с предикатом IN, позволяющее отобрать все записи таблицы MUSIC, в поле PUBLISHER которых содержатся значения Elektra или Empire. 2. Исправьте команду UPDATE, приведенную в строке 2 листинга 16.6, таким образом, чтобы в верхний регистр были переведены первые символы имени и фамилии исполнителя. 3. Создайте хранимую процедуру, позволяющую удалить из таблицы MUSIC запись по заданному значению поля LAST NAME.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |