Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Access 2013, Office 2013
Предложение SHAPE COMPUTE создает родительский набор записей, столбцы которого состоят из ссылки на дочерний набор записей; необязательные столбцы, содержимое которых являются главами, новыми или вычисляемыми столбцами, или результатом выполнения агрегатных функций в дочернем наборе записей или наборе записей, сформированном ранее; и все столбцы из дочернего набора записей , перечисленные в необязательном предложении BY.
Синтаксис
SHAPE child-command [AS] child-alias
COMPUTE child-alias [[AS] name], [appended-column-list]
[BY grp-field-list]
Описание
Ниже приведены части этого предложения.
child-command
Состоит из одного из следующих компонентов:
Команда запроса в фигурных скобках ("{}"), которая возвращает дочерний объект Recordset . Команда выдается базовому поставщику данных, и ее синтаксис зависит от требований этого поставщика. Обычно это язык SQL, хотя для ADO не требуется какой-либо конкретный язык запросов.
Имя существующего набора записей в форме.
Другая команда shape.
Ключевое слово TABLE, за которым следует имя таблицы в поставщике данных.
дочерний псевдоним
- Псевдоним, используемый для ссылки на набор записей, возвращаемый дочерней командой.Дочерний псевдоним является обязательным в списке столбцов в предложении COMPUTE и определяет связь между родительским и дочерним объектами Recordset .
appended-column-list
- Список, в котором каждый элемент определяет столбец в созданном родительском элементе. Каждый элемент содержит столбец главы, новый столбец, вычисляемый столбец или значение, полученное в результате агрегатной функции в дочернем наборе записей.
grp-field-list
- Список столбцов в родительском и дочернем объектах Recordset , который указывает, как следует группировать строки в дочернем объекте. Для каждого столбца в списке grp-field-list есть соответствующий столбец в дочерних и родительских объектах Recordset . Для каждой строки в родительском наборе записей столбцы списка полей grp имеют уникальные значения, а дочерний набор записей , на который ссылается родительская строка, состоит только из дочерних строк , столбцы которых имеют те же значения, что и родительская строка.
Если включено предложение BY, строки дочернего набора записей будут сгруппированы на основе столбцов в предложении COMPUTE. Родительский набор записей будет содержать по одной строке для каждой группы строк в дочернем наборе записей.
Если предложение BY опущено, весь дочерний набор записей обрабатывается как одна группа, а родительский набор записей будет содержать ровно одну строку. Эта строка будет ссылаться на весь дочерний набор записей. Опущение предложения BY позволяет вычислить агрегаты "общий итог" по всему дочернему набору записей.
Например:
SHAPE {select * from Orders} AS orders
COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Независимо от способа формирования родительского набора записей (с помощью compute или APPEND), он будет содержать столбец главы, который используется для связи с дочерним набором записей. При необходимости родительский набор записей также может содержать столбцы, содержащие агрегаты (SUM, MIN, MAX и т. д.) над дочерними строками. Родительский и дочерний набор записей могут содержать столбцы, содержащие выражение в строке в наборе записей, а также столбцы, которые являются новыми и изначально пустыми.
Operation
Дочерняя команда выполняется поставщику, который возвращает дочерний набор записей.
Предложение COMPUTE указывает столбцы родительского набора записей, которые могут быть ссылкой на дочерний набор записей, одну или несколько агрегатов, вычисляемое выражение или новые столбцы. Если есть предложение BY, столбцы, которые оно определяет, также добавляются в родительский набор записей. Предложение BY указывает, как группируются строки дочернего набора записей .
Например, предположим, что у вас есть таблица "Демография", состоящая из полей "Штат", "Город" и "Население" (данные о численности населения предназначены исключительно для иллюстрации).
Состояние |
Город |
Население |
---|---|---|
WA |
Сиэтл |
700 000 |
ИЛИ |
Медфорд |
200 000 |
ИЛИ |
Портленд |
400,000 |
CA |
Лос-Анджелес |
800,000 |
CA |
Сан-Диего |
600 000 |
WA |
Такома |
500 000 |
ИЛИ |
Корваллис |
300,000 |
Теперь выполните следующую команду фигуры:
rst.Open "SHAPE {select * from demographics} AS rs " & _
"COMPUTE rs, SUM(rs.population) BY state", _
objConnection
Эта команда открывает фигурный набор записей с двумя уровнями. Родительский уровень — это созданный набор записей с агрегатным столбцом (SUM(rs.population) ), столбцом, ссылающимся на дочерний набор записей (rs ), и столбцом для группировки дочернего набора записей (состояние ). Дочерний уровень — это набор записей , возвращаемый командой запроса (), столбец, ссылающийся на дочерний набор записей (rs), и столбец для группировки дочернего набора записей (состояние ). Дочерний уровень — это набор записей , возвращаемый командой запроса (выберите * из демографических данных ).
Дочерние строки сведений о наборе записей будут сгруппированы по состоянию, но в противном случае не в определенном порядке. То есть группы не будут находиться в алфавитном или числовом порядке. Если требуется упорядочение родительского набора записей, можно использовать метод Сортировка набора записей, чтобы упорядочить родительский набор записей.
Теперь вы можете перемещаться по открытому родительскому набору записей и обращаться к дочерним объектам Recordset . Дополнительные сведения см. в разделе Доступ к строкам в иерархическом наборе записей.
Результирующий набор записей сведений о родителях и дочерних элементах
Parent
СУММ (rs. Население) |
rs |
Состояние |
---|---|---|
1,300,000 |
Ссылка на child1 |
CA |
1 200 000 |
Ссылка на child2 |
WA |
1,100,000 |
Ссылка на дочернее3 |
ИЛИ |
Дочерний1
Состояние |
Город |
Население |
---|---|---|
CA |
Лос-Анджелес |
800,000 |
CA |
Сан-Диего |
600 000 |
Дочерний2
Состояние |
Город |
Население |
---|---|---|
WA |
Сиэтл |
700 000 |
WA |
Такома |
500 000 |
Дочерний3
Состояние |
Город |
Население |
---|---|---|
ИЛИ |
Медфорд |
200 000 |
ИЛИ |
Портленд |
400,000 |
ИЛИ |
Корваллис |
300,000 |