Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Salah satu penggunaan Expression properti adalah membuat kolom terhitung. Misalnya, untuk menghitung nilai pajak, harga satuan dikalikan dengan tarif pajak wilayah tertentu. Karena tarif pajak bervariasi dari wilayah ke wilayah, tidak mungkin untuk menempatkan satu tarif pajak dalam kolom; sebagai gantinya, nilai dihitung menggunakan properti , seperti yang Expression ditunjukkan dalam kode berikut:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Penggunaan kedua adalah membuat kolom agregat. Mirip dengan nilai terhitung, agregat melakukan operasi berdasarkan kumpulan baris lengkap di DataTable. Contoh sederhananya adalah menghitung jumlah baris yang dikembalikan dalam set. Ini adalah metode yang akan Anda gunakan untuk menghitung jumlah transaksi yang diselesaikan oleh tenaga penjual tertentu, seperti yang ditunjukkan dalam kode berikut:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
Sintaksis ekspresi
Saat Anda membuat ekspresi, gunakan ColumnName properti untuk merujuk ke kolom. Misalnya, jika ColumnName untuk satu kolom adalah "UnitPrice", dan "Kuantitas" lainnya, ekspresinya adalah:
"UnitPrice * Quantity"
Nota
Jika kolom digunakan dalam ekspresi, ekspresi dikatakan memiliki dependensi pada kolom tersebut. Jika kolom dependen diganti namanya atau dihapus, tidak ada pengecualian yang dilemparkan. Sebuah pengecualian akan muncul ketika kolom ekspresi yang rusak saat ini diakses.
Saat Anda membuat ekspresi untuk filter, sertakan string dengan tanda kutip tunggal:
"LastName = 'Jones'"
Jika nama kolom berisi karakter non-alfanumerik, dimulai dengan digit, atau cocok (tidak peka huruf besar/kecil) dengan salah satu kata yang dicadangkan berikut ini, maka membutuhkan penanganan khusus seperti yang dijelaskan dalam paragraf-paragraf berikut.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Jika nama kolom memenuhi salah satu kondisi sebelumnya, harus dibungkus dalam tanda kurung siku atau tanda kutip `` (aksen kubur). Misalnya, untuk menggunakan kolom bernama "Column#" dalam ekspresi, Anda akan menulis "[Column#]" atau "'Column#'":
Total * [Column#]
Jika nama kolom diapit dalam tanda kurung siku, karakter ']' dan '\' apa pun (tetapi tidak ada karakter lain) di dalamnya harus diloloskan dengan menambahkannya terlebih dahulu dengan karakter garis miring terbalik ("\"). Jika nama kolom diapit dalam tanda aksen kubur, maka tidak boleh berisi tanda aksen kubur. Misalnya, kolom bernama "Column[]\" akan ditulis:
Total * [Column[\]\\]
atau
Total * 'Kolom[]\'
Nilai yang ditentukan pengguna
Nilai yang ditentukan pengguna dapat digunakan dalam ekspresi untuk dibandingkan dengan nilai kolom. Nilai string harus diapit dalam tanda kutip tunggal (dan setiap karakter tanda kutip tunggal dalam nilai string harus "di-escaping" dengan mendahuluinya dengan karakter tanda kutip tunggal lainnya). Nilai tanggal harus diapit dalam tanda pagar (#) atau tanda kutip tunggal (') berdasarkan penyedia data. Desimal dan notasi ilmiah diizinkan untuk nilai numerik. Contohnya:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
Untuk kolom yang berisi nilai enumerasi, transmisikan nilai ke jenis data bilangan bulat. Contohnya:
"EnumColumn = 5"
Mengurai ekspresi harfiah
Semua ekspresi harfiah harus diekspresikan dalam lokal budaya yang invarian. Ketika DataSet mengurai dan mengonversi ekspresi harfiah, itu selalu menggunakan budaya invarian, bukan budaya saat ini.
Literal string diidentifikasi ketika ada tanda kutip tunggal di sekitar nilai. Contohnya, 'John'.
Boolean harfiah adalah true dan false; tidak dikutip dalam ekspresi.
Integer literal [+-]? [0-9]+ diperlakukan sebagai System.Int32, , System.Int64atau System.Double.
System.Double dapat kehilangan presisi tergantung pada seberapa besar jumlahnya. Misalnya, jika angka dalam literal 2147483650, DataSet pertama-tama akan mencoba mengurai angka sebagai Int32. Ini tidak akan berhasil karena jumlahnya terlalu besar. Dalam hal DataSetini , mengurai angka sebagai Int64, yang akan berhasil. Jika literal adalah angka yang lebih besar dari nilai maksimum Int64, DataSet uraikan literal menggunakan Double.
Literal riil yang menggunakan notasi ilmiah, seperti 4.42372E-30, diurai menggunakan System.Double.
Bilangan nyata tanpa notasi ilmiah, tetapi dengan titik desimal, diperlakukan sebagai System.Decimal. Jika angka melebihi nilai maksimum atau minimum yang didukung oleh System.Decimal, maka angka tersebut diurai sebagai System.Double. Contohnya:
- 142526.144524 dikonversi ke
Decimal. - 345262.78036719560925667 diperlakukan sebagai
Double.
Para Operator
Penggabungan diizinkan menggunakan operator Boolean AND, OR, dan NOT. Anda dapat menggunakan tanda kurung untuk mengelompokkan klausul dan memaksa prioritas. Operator AND lebih diutamakan daripada operator lain. Contohnya:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Saat Anda membuat ekspresi perbandingan, operator berikut diizinkan:
- <
- >
- <=
- >=
- =
INLIKE
Operator aritmatika berikut ini juga didukung dalam ekspresi:
- + (penambahan)
- - (Pengurangan)
- * (perkalian)
- / (divisi)
- % (modul)
Operator pengolah string
Untuk menggabungkan string, gunakan + karakter . Nilai properti CaseSensitive dari kelas DataSet menentukan apakah perbandingan string peka terhadap huruf besar/kecil. Namun, Anda dapat mengganti nilai tersebut dengan properti CaseSensitive dari kelas DataTable.
Karakter pengganti
* dan % dapat digunakan secara bergantian sebagai karakter wildcard dalam perbandingan LIKE. Jika string dalam klausa LIKE berisi * atau %, karakter tersebut harus diapit dalam tanda kurung siku ([]). Jika ada tanda kurung dalam klausa, setiap tanda kurung harus diapit dalam tanda kurung siku (misalnya [[] atau []]). Kartubebas diizinkan di awal dan akhir pola, atau di akhir pola, atau di awal pola. Contohnya:
"ItemName LIKE '*product*'""ItemName LIKE '*product'""ItemName LIKE 'product*'"
Karakter wildcard tidak diperbolehkan di dalam string. Misalnya, 'te*xt' tidak diizinkan.
Referensi hubungan induk/anak
Tabel induk dapat direferensikan dalam ekspresi dengan menambahkan nama kolom dengan Parent. Misalnya, Parent.Price mereferensikan kolom tabel induk bernama Price.
Saat anak memiliki lebih dari satu baris induk, gunakan Parent(RelationName).ColumnName. Misalnya, Parent(RelationName).Price mereferensikan kolom tabel induk bernama "Harga" melalui relasi.
Kolom dalam tabel anak dapat direferensikan dalam ekspresi dengan menambahkan nama kolom terlebih dahulu dengan Child. Namun, karena hubungan anak dapat menghasilkan beberapa baris, Anda harus menyertakan referensi ke kolom relasi anak dalam fungsi agregat. Misalnya, Sum(Child.Price) akan mengembalikan jumlah kolom bernama Price dalam tabel anak.
Jika tabel memiliki lebih dari satu anak, sintaksnya adalah: Child(RelationName). Misalnya, jika tabel memiliki dua tabel anak bernama Customers dan Orders, dan objek DataRelation diberi nama Customers2Orders, referensinya adalah sebagai berikut:
Avg(Child(Customers2Orders).Quantity)
Bahan Agregat
Jenis agregat berikut ini didukung:
-
Sum(Jumlah) -
Avg(Rata-rata) -
Min(Minimal) -
Max(Maksimum) -
Count(Hitung) -
StDev(Simpang siur standar statistik) -
Var(Varians statistik)
Agregat biasanya dilakukan bersama hubungan. Buat ekspresi agregat dengan menggunakan salah satu fungsi yang tercantum sebelumnya dan kolom tabel anak sebagaimana dirinci dalam referensi hubungan induk/anak. Contohnya:
Avg(Child.Price)Avg(Child(Orders2Details).Price)
Penghitungan agregat juga dapat dilakukan pada tabel tunggal. Misalnya, untuk membuat ringkasan angka dalam kolom bernama "Harga":
Sum(Price)
Nota
Jika Anda menggunakan satu tabel untuk membuat agregat, tidak akan ada fungsionalitas pengelompokan berdasarkan. Sebagai gantinya, semua baris akan menampilkan nilai yang sama di kolom .
Jika tabel tidak memiliki baris, fungsi agregat akan mengembalikan null.
Jenis data selalu dapat ditentukan dengan memeriksa DataType properti kolom. Anda juga dapat mengonversi jenis data menggunakan Convert fungsi , yang diperlihatkan di bagian berikut.
Agregat hanya dapat diterapkan ke satu kolom, dan tidak ada ekspresi lain yang dapat digunakan di dalam agregat.
Functions
Fungsi berikut ini juga didukung.
CONVERT
Fungsi ini mengonversi ekspresi ke jenis .NET tertentu.
Convert(expression, type)
| Argumen | Deskripsi |
|---|---|
expression |
Ekspresi yang akan dikonversi. |
type |
Jenis .NET tempat nilai akan dikonversi. |
Contoh: myDataColumn.Expression="Convert(total, 'System.Int32')"
Semua konversi valid dengan pengecualian berikut: Boolean hanya dapat dipaksa ke dan dari Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String, dan ke dirinya sendiri.
Chardapat dipaksa ke dan dari Int32, , UInt32String, dan itu sendiri saja.
DateTime dapat dipaksa menjadi dan dari String dan hanya dirinya sendiri.
TimeSpan dapat dipaksa menjadi dan dari String dan hanya dirinya sendiri.
LEN
Fungsi ini mengukur panjang string.
LEN(expression)
| Argumen | Deskripsi |
|---|---|
expression |
String yang akan dievaluasi. |
Contoh: myDataColumn.Expression="Len(ItemName)"
ISNULL
Fungsi ini memeriksa ekspresi dan mengembalikan ekspresi yang dicentang atau nilai pengganti.
ISNULL(expression, replacementvalue)
| Argumen | Deskripsi |
|---|---|
expression |
Ekspresi yang akan diperiksa. |
replacementvalue |
Jika ekspresi adalah null, replacementvalue dikembalikan. |
Contoh: myDataColumn.Expression="IsNull(price, -1)"
IIF
Fungsi ini mendapatkan salah satu dari dua nilai tergantung pada hasil ekspresi logis.
IIF(expr, truepart, falsepart)
| Argumen | Deskripsi |
|---|---|
expr |
Ekspresi yang akan dievaluasi. |
truepart |
Nilai yang akan dikembalikan jika ekspresinya benar. |
falsepart |
Nilai yang akan dikembalikan jika ekspresi salah. |
Contoh: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Fungsi ini menghapus semua karakter kosong di depan dan berikutnya seperti \r, \n, \t, dan ' '.
TRIM(expression)
| Argumen | Deskripsi |
|---|---|
expression |
Ekspresi yang akan dipangkas. |
SUBSTRING
Fungsi ini mendapatkan substring dengan panjang yang ditentukan, dimulai pada titik tertentu dalam string.
SUBSTRING(expression, start, length)
| Argumen | Deskripsi |
|---|---|
expression |
String sumber untuk substring |
start |
Bilangan bulat yang menentukan di mana substring dimulai. |
length |
Bilangan bulat yang menentukan panjang substring. |
Contoh: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Nota
Anda dapat mengatur ulang Expression properti dengan menetapkannya nilai null atau string kosong. Jika nilai default diatur pada kolom ekspresi, semua baris yang diisi sebelumnya diberi nilai default setelah Expression properti diatur ulang.