Предложение SHAPE COMPUTE
Предложение COMPUTE для формирования структуры создает родительский набор записей , содержащий столбцы с ссылками на дочерний набор записей ; необязательные столбцы, которые могут быть главами, новыми или вычисляемыми столбцами либо результатами выполнения агрегатных функций над дочерним набором записей или ранее сформированным набором записей; а также любые столбцы из дочернего набора записей, перечисленные в необязательном предложении BY.
Синтаксис
SHAPE child-command [AS] child-alias
COMPUTE child-alias [[AS] name], [appended-column-list]
[BY grp-field-list]
Описание
Ниже приведены части этого предложения:
дочерней команды
Состоит из одного из следующих элементов:
Команда запроса в фигурных скобках ("{}") , которая возвращает дочерний объект Recordset. Команда выдается базовому поставщику данных, а его синтаксис зависит от требований этого поставщика. Обычно это язык SQL, хотя ADO не требует определенного языка запросов.
Имя существующей фигурной Recordset.
Ещё одна команда для создания фигуры.
Ключевое слово TABLE, за которым следует имя таблицы в поставщике данных.
дочерний псевдоним
Псевдоним, используемый для ссылки на набор записей , возвращенный дочерней командой.дочерний псевдоним требуется в списке столбцов в предложении COMPUTE и определяет связь между родительским и дочерним набором записей объектами.
список добавленных столбцов
Список, в котором каждый элемент определяет столбец в созданном родительском элементе. Каждый элемент содержит либо столбец главы, либо новый столбец, либо вычисляемый столбец, либо значение, полученное в результате применения агрегатной функции к дочернему Recordset.
grp-field-list
Список столбцов в родительском и дочернем набора записей объектов, указывающих, как строки должны группироваться в дочернем элементе.
Для каждого столбца в списке grp-field-list имеется соответствующий столбец в объектах Recordset как дочерних, так и родительских. Для каждой строки в родительском Наборе записейстолбцы из списка grp-field-list имеют уникальные значения, а дочерний Набор записей, на который ссылается родительская строка, состоит исключительно из дочерних строк, у которых столбцы из списка grp-field-list имеют те же значения, что и у родительской строки.
Если предложение BY включено, строки дочернего набора записей будут сгруппированы на основе столбцов в предложении COMPUTE. Родительский набор записей будет содержать одну строку для каждой группы строк в дочернем наборе записей.
Если предложение BY опущено, весь дочерний набор записей обрабатывается как одна группа, а родительский набор записей будет содержать ровно одну строку. Эта строка будет ссылаться на весь дочерний набор записей . Опущение предложения BY позволяет вычислить суммарные итоги по всему дочернему Recordset.
Например:
SHAPE {select * from Orders} AS orders COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Независимо от того, каким образом формируется родительский набор записей (с помощью операции COMPUTE или добавления), он будет содержать столбец главы, которая используется для связи с дочерним набором записей. Если вы хотите, родительский набор записей также может содержать столбцы, содержащие агрегаты (SUM, MIN, MAX и т. д.) по дочерним строкам. Как родительский, так и дочерний набор записей могут содержать столбцы, в которых указано выражение для строки в наборе записей, а также новые и изначально пустые столбцы.
Операция
Команда "дочерняя команда" выдается поставщику, который возвращает дочерний набор записей "".
Предложение COMPUTE указывает столбцы родительского набора записей , которые могут быть ссылкой на дочерний набор записей , один или несколько агрегатов, вычисляемое выражение или новые столбцы. Если присутствует предложение BY, то столбцы, которые оно определяет, также добавляются в родительский Набор записей. Клауза BY указывает, как сгруппированы строки дочернего набора записей Recordset.
Например, предположим, что у вас есть таблица с именем "Демографические данные", которая состоит из полей "Штат", "Город" и "Население". (Цифры популяции в таблице предоставляются исключительно в качестве примера).
Государство | Город | Население |
---|---|---|
WA | Сиэтл | 700,000 |
ИЛИ | Медфорд | 200,000 |
ИЛИ | Портленд | 400,000 |
Центр сертификации | Лос-Анджелес | 800,000 |
Центр сертификации | Сан-Диего | 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
), и столбец для группировки дочернего набора записей (state
). Дочерний уровень — это набор записей, возвращаемый командой запроса (select * from demographics
).
Дочерние строки сведений набора записей будут сгруппированы по состоянию, но в остальном в произвольном порядке. То есть группы не будут находиться в алфавитном или числовом порядке. Если требуется упорядочение родительского набора записей , можно использовать метод сортировки набора записей, чтобы упорядочить родительский набор Recordset.
Теперь можно просматривать открытый родительский Recordset и получить доступ к дочерним деталям объекта Recordset. Дополнительные сведения см. в разделе Доступ к строкам в иерархическом наборе записей.
Результирующий набор записей "Родительский" и "Дочерний"
Родитель
SUM (rs. Население) | rs | Государство |
---|---|---|
1,300,000 | Ссылка на дочерний1 | Центр сертификации (ЦС) |
1,200,000 | Ссылка на дочерний элемент 2 | WA |
1,100,000 | Ссылка на дочерний3 | ИЛИ |
Ребенок1
Государство | Город | Население |
---|---|---|
Центр сертификации | Лос-Анджелес | 800,000 |
Центр сертификации | Сан-Диего | 600,000 |
Ребенок2
Государство | Город | Население |
---|---|---|
WA | Сиэтл | 700,000 |
WA | Такома | 500,000 |
Дочерний3
Государство | Город | Население |
---|---|---|
ИЛИ | Медфорд | 200,000 |
ИЛИ | Портленд | 400,000 |
ИЛИ | Корваллис | 300,000 |
См. также
доступ к строкам в иерархическом наборе записей
Обзор формирования данных
объект поля
грамматика формальной фигуры
объекта набора записей
обязательные поставщики для формирования данных
Клауза формы присоединяется
Общие команды фигур
свойство value (ADO)
функции Visual Basic для приложений