Bentuk Klausul KOMPUTASI

Klausa COMPUTE bentuk menghasilkan Recordset induk, yang kolomnya terdiri dari referensi ke Recordset turunan; kolom opsional yang isinya adalah bab, kolom baru, atau terhitung, atau hasil menjalankan fungsi agregat pada Recordset turunan atau Recordset berbentuk sebelumnya; dan kolom apa pun dari Recordset turunan yang tercantum dalam klausa BY opsional.

Sintaks

SHAPE child-command [AS] child-alias  
   COMPUTE child-alias [[AS] name], [appended-column-list]  
   [BY grp-field-list]  

Deskripsi

Bagian dari klausul ini adalah sebagai berikut:

perintah anak
Terdiri dari salah satu hal berikut ini:

  • Perintah kueri dalam kurung kurawal ("{}") yang mengembalikan objek Recordset turunan. Perintah dikeluarkan untuk penyedia data yang mendasar, dan sintaksnya tergantung pada persyaratan penyedia tersebut. Ini biasanya akan menjadi bahasa SQL, meskipun ADO tidak memerlukan bahasa kueri tertentu.

  • Nama Recordset berbentuk yang sudah ada.

  • Perintah bentuk lain.

  • Kata kunci TABLE, diikuti dengan nama tabel di penyedia data.

alias anak
Alias yang digunakan untuk merujuk ke Recordset yang dikembalikan oleh perintah turunan.Alias anak diperlukan dalam daftar kolom dalam klausa COMPUTE dan menentukan hubungan antara objek Recordset induk dan anak.

daftar kolom yang ditambahkan
Daftar di mana setiap elemen menentukan kolom di induk yang dihasilkan. Setiap elemen berisi kolom bab, kolom baru, kolom terhitung, atau nilai yang dihasilkan dari fungsi agregat pada Recordset anak.

grp-field-list
Daftar kolom di objek Recordset induk dan turunan yang menentukan bagaimana baris harus dikelompokkan dalam anak.

Untuk setiap kolom dalam grp-field-list, ada kolom terkait di objek Recordset turunan dan induk. Untuk setiap baris dalam Recordset induk, kolom grp-field-list memiliki nilai unik, dan Recordset turunan yang direferensikan oleh baris induk hanya terdiri dari baris turunan yang kolom daftar bidang grp memiliki nilai yang sama dengan baris induk.

Jika klausa BY disertakan, baris Recordset turunan akan dikelompokkan berdasarkan kolom dalam klausa COMPUTE. Recordset induk akan berisi satu baris untuk setiap grup baris dalam Recordset turunan.

Jika klausa BY dihilangkan, seluruh Recordset turunan diperlakukan sebagai grup tunggal dan Recordset induk akan berisi tepat satu baris. Baris tersebut akan mereferensikan seluruh Recordset turunan. Menghilangkan klausa BY memungkinkan Anda menghitung agregat "total keseluruhan" di seluruh Recordset anak.

Contohnya:

SHAPE {select * from Orders} AS orders             COMPUTE orders, SUM(orders.OrderAmount) as TotalSales         

Terlepas dari cara mana Recordset induk terbentuk (menggunakan COMPUTE atau menggunakan APPEND), itu akan berisi kolom bab yang digunakan untuk menghubungkannya dengan Recordset turunan. Jika mau, Recordset induk juga dapat berisi kolom yang berisi agregat (SUM, MIN, MAX, dan sebagainya) di atas baris turunan. Recordset induk dan anak mungkin berisi kolom yang berisi ekspresi pada baris di Recordset, serta kolom yang baru dan awalnya kosong.

Operasi

Perintah turunan dikeluarkan untuk penyedia, yang mengembalikan Recordset turunan.

Klausa COMPUTE menentukan kolom Recordset induk, yang mungkin merupakan referensi ke Recordset turunan, satu atau beberapa agregat, ekspresi terhitung, atau kolom baru. Jika ada klausa BY, kolom yang ditentukannya juga ditambahkan ke Recordset induk. Klausa BY menentukan bagaimana baris Recordset turunan dikelompokkan.

Misalnya, asumsikan Anda memiliki tabel, bernama Demografi, yang terdiri dari bidang Negara Bagian, Kota, dan Populasi. (Angka populasi dalam tabel disediakan hanya sebagai contoh).

Provinsi Kota Populasi
WA Seattle 700,000
ATAU Medford 200.000
ATAU Portland 400.000
OS Los Angeles 800.000
OS San Diego 600.000
WA Tacoma 500,000
ATAU Corvallis 300.000

Sekarang, terbitkan perintah bentuk ini:

rst.Open  "SHAPE {select * from demographics} AS rs "  & _  
          "COMPUTE rs, SUM(rs.population) BY state", _  
           objConnection  

Perintah ini membuka Recordset berbentuk dengan dua tingkat. Tingkat induk adalah Recordset yang dihasilkan dengan kolom agregat (SUM(rs.population)), kolom yang mereferensikan Recordset turunan (rs), dan kolom untuk mengelompokkan Recordset turunan (state). Tingkat anak adalah Recordset yang dikembalikan oleh perintah kueri (select * from demographics).

Baris detail Recordset turunan akan dikelompokkan menurut status, tetapi jika tidak dalam urutan tertentu. Artinya, grup tidak akan berada dalam urutan alfabet atau numerik. Jika Anda ingin Recordset induk diurutkan, Anda bisa menggunakan metode Pengurutan Recordset untuk mengurutkanRecordset induk.

Sekarang Anda dapat menavigasi Recordset induk yang dibuka dan mengakses objek Recordset detail turunan. Untuk informasi selengkapnya, lihat Mengakses Baris dalam Kumpulan Rekaman Hierarkis.

Kumpulan Catatan Detail Induk dan Anak yang Dihasilkan

Parent

SUM (rs. Populasi) rs Provinsi
1,300,000 Referensi ke anak1 OS
1.200.000 Referensi ke child2 WA
1,100,000 Referensi ke child3 ATAU

Anak1

Provinsi Kota Populasi
OS Los Angeles 800.000
OS San Diego 600.000

Anak2

Provinsi Kota Populasi
WA Seattle 700,000
WA Tacoma 500.000

Anak3

Provinsi Kota Populasi
ATAU Medford 200.000
ATAU Portland 400.000
ATAU Corvallis 300.000

Lihat juga

Mengakses Baris dalam Perangkat Rekam Hierarkis
Gambaran Umum Pembentukan Data
Objek Bidang
Tata Bahasa Bentuk Formal
Objek Recordset (ADO)
Penyedia yang Diperlukan untuk Pembentukan Data
Bentuk Klausul Lampiran
Bentuk Perintah Secara Umum
Properti Nilai (ADO)
Visual Basic untuk Fungsi Aplikasi