Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

Для того чтобы правильно связать две таблицы, выполните в инструкции SELECT соединение. Внутреннее соединение, наиболее распространенное, создает запись в наборе, базируясь на соответствии записей в исходных таблицах, а соответствие базируется на одинаковых значениях определенных полей таблиц. Например, приведенная ниже инструкция создает набор записей, в котором перечисляются запасные компоненты для каждой игрушки в списке:

SELECT Toy, Rep FROM Toys INNER JOIN Reps On Toys.ID =

Reps.ToyID

Для создания внутреннего соединения разместите конструкцию INNER JOIN между именами таблиц в инструкции FROM. После этого укажите ключевое

слово ON, которое определяет поля, содержащие сравниваемые значения. Обычно имена полей после ключевого слова ON разделяются знаком равенства, что свидетельствует о том, что для выбранных записей значения, содержащиеся в указанных полях, должны совпадать (допускается использование и других операторов сравнения).

Выбор полей

Для указания набора полей укажите их имена явным образом, как показано ниже:

SELECT Toy, InStock, OnOrder FROM ToyInventory

Если имя поля содержит пробелы или знаки пунктуации, заключите его в квадратные скобки, как показано ниже:

SELECT Toy, [ List Price ], [Sale Price] FROM ToyInventory

По умолчанию значение свойства Name каждого объекта Field в наборе записей, полученном с помощью инструкции SELECT, равно имени соответствующего поля в исходной таблице. Вы можете назначить другие имена полей (псевдонимы) в наборе записей, используя ключевое слово AS для каждого поля, которое вы решили переименовать:

SELECT Toy AS ToyName, InStock AS OnHand, OnOrder FROM ToyInventory

Если вы извлекаете записи из нескольких таблиц и хотите выбрать поля с одинаковыми именами, укажите перед именем поля имя соответствующей таблицы. Вот соответствующий пример:

SELECT ToyInventory.Name, Clerks.Name FROM ToyInventory, Clerks

Вы можете построить набор записей, который будет содержать новые поля, а их значения вычисляются на базе значений, содержащихся в базе данных. В инструкции SELECT подобные поля определяются с помощью выражений, базирующихся на операторах и функциях

VBA. Например, предположим, что вам необходимо перечислить цены на товары, которые получатся после снижения на 10%:

SELECT Toy, ( Price * .9) AS SalePrice FROM ToyInventory

Обратите внимание на то, что при определении вычисляемого поля вы должны включить ключевое слово для создания псевдонима (имени) поля в наборе записей. Скобки необязательны, однако они помогают подчеркнуть выражение, которое необходимо вычислять.

В выражении, позволяющем получить значение нового поля, допускается использование нескольких полей, например, так: ( Price * InStock) AS InventoryValue.

В качестве еще одного примера предположим, что по какой-то причине вам необходимо получить набор записей, в котором будут перечислены имена всех клерков прописными буквами, но при этом способ представления имен в самой базе данных не должен изменяться.

Это позволяет сделать приведенная ниже инструкция:

SELECT UCase(Name) AS [ Clerk's name] FROM Clerks

При использовании обобщенных функций SQL инструкция SELECT позволяет получить набор записей, который будет содержать только одно результирующее значение, например, количество записей, содержащих заданное значение в определенном поле:

SELECT Count (Recyclable) AS [Can Recycle] From Toys или среднее значение всех полей:

SELECT Avg(Price) AS [Average Price] FROM Toys

После этого вы можете передать значение поля этой записи переменной в вашем коде VBA для использования в вычислениях

или отображения в форме: intRecyclabl eCount = rstRecyclabl eToys![ Canrecycle]

К обобщенным функциям относятся следующие: Count, Avg, Sum, Min, Max, а также несколько статистических функций.

Используйте предикаты DISTINCT, DISTINCTROW и ТОР в инструкции SELECT в качестве простых инструментов получения определенных наборов записей из баз данных. Эти специальные слова необходимо указывать сразу после инструкции SELECT, как показано в табл. 17.3.

Таблица 17.3. Предикаты SQL для выбора записей

Предикат

Использование

Пример

DISTINCT

Выбирает только одну запись, если база данных содержит несколько записей с идентичными данными в указанных полях

SELECT DISTINCT Address FROM Members

Возвращает набор записей, содержащий только одну запись для каждого адреса, даже если в таблице Member s содержится по несколько записей для каждого адреса

DISTINCT ROW

Выбирает все уникальные записи, базируясь на значениях всех полей. Если две записи отличаются всего одним символом, они все равно будут включены в набор; если они полностью идентичны, в набор будет включена только одна из них

SELECT DISTINCTROW Name, Address FROM Members

Возвращает набор записей, содержащий записи с полями Name и Address, Набор может содержать дублирующиеся записи, но только в том случае, если отличаются значения других полей

ТОР л

Выбирает указанное число записей в верхней или нижней части определяемого ключевым словом ORDER BY

SELECT TOP 10 ToyName FROM Toys ORDER BY Units Sold

Возвращает набор записей, содержащий сведения о 10 диапазона, лучше всего продаваемых игрушках. Для определений 10 хуже всего продаваемых игрушек вам следует добавить ключевое слово ASC (ascending - no убыванию) после слова Units Sold

Настройка набора записей: задаем критерии

Для ограничения набора записей только теми записями, которые удовлетворяют определенным критериям, добавьте к инструкции SELECT ключевое слово WHERE, как показано в приведенных ниже примерах:

SELECT * FROM Toys WHERE Price <= 20

SELECT Customer, Date FROM Sales WHERE Date = #10/24/2000#

SELECT Name, Rank, CerealNumber FROM Kids WHERE Rank = 'Queen'

SELECT Name, Age, [Shoe Size] FROM Kids WHERE Age Between 3 And 6

Как легко видеть, ключевое слово WHERE указывается после ключевого слова FROM и содержит выражение, определяющее критерий, которому должны соответствовать записи, чтобы попасть в набор. Кроме того, эти выражения не похожи на обычные выражения VBA. Во-первых, строковые значения заключаются в одинарные, а не двойные кавычки. Во-вторых, вы можете определять диапазоны с помощью конструкции Between ... And, которая в VBA отсутствует. И в SQL оператор Like функционирует совсем не так, как в VBA.

Поделиться:
Популярные книги

Наномашины, ученик! Том 6

Новиков Николай Васильевич
6. Первый среди карапузов
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наномашины, ученик! Том 6

Хозяин Теней 3

Петров Максим Николаевич
3. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Хозяин Теней 3

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Стражи душ

Кас Маркус
4. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Стражи душ

Поводырь

Щепетнов Евгений Владимирович
3. Ботаник
Фантастика:
фэнтези
6.17
рейтинг книги
Поводырь

Неофит

Листратов Валерий
3. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неофит

Тьма и Хаос

Владимиров Денис
6. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Тьма и Хаос

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Вечный. Книга VI

Рокотов Алексей
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Вечный. Книга VI

Я еще не барон

Дрейк Сириус
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще не барон

Двойник короля 19

Скабер Артемий
19. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 19

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Бастард Императора. Том 15

Орлов Андрей Юрьевич
15. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 15