Properti System.Data.DataColumn.Expression
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)"
Sintaks 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"
Catatan
Jika kolom digunakan dalam ekspresi, ekspresi dikatakan memiliki dependensi pada kolom tersebut. Jika kolom dependen diganti namanya atau dihapus, tidak ada pengecualian yang dilemparkan. Pengecualian akan dilemparkan ketika kolom ekspresi yang sekarang rusak 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) salah satu kata yang dipesan berikut, diperlukan penanganan khusus, seperti yang dijelaskan dalam paragraf berikut.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Jika nama kolom memenuhi salah satu kondisi sebelumnya, nama kolom harus dibungkus dalam tanda kurung siku atau tanda kutip "'" (aksen kuburan). 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 karakter aksen kuburan, maka tidak boleh berisi karakter aksen kuburan. Misalnya, kolom bernama "Column[]\" akan ditulis:
Total * [Column[\]\\]
or
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 kutipan tunggal dalam nilai string harus diloloskan dengan menambahkannya terlebih dahulu dengan karakter kutipan tunggal lainnya). Nilai tanggal harus diapit dalam tanda pagu (#) 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.Int64
atau 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 DataSet
ini , mengurai angka sebagai Int64
, yang akan berhasil. Jika literal adalah angka yang lebih besar dari nilai maksimum Int64, DataSet
uraikan literal menggunakan Double
.
Literal nyata yang menggunakan notasi ilmiah, seperti 4.42372E-30, diurai menggunakan System.Double
.
Literal 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
.
Operator
Penggalian 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:
- <
- >
- <=
- >=
- >
- =
IN
LIKE
Operator aritmatika berikut ini juga didukung dalam ekspresi:
- + (penambahan)
- - (Pengurangan)
- * (perkalian)
- / (divisi)
- % (modulus)
Operator string
Untuk menggabungkan string, gunakan +
karakter . Nilai CaseSensitive properti DataSet kelas menentukan apakah perbandingan string peka huruf besar/kecil. Namun, Anda dapat mengambil alih nilai tersebut CaseSensitive dengan properti DataTable kelas .
Karakter kartubebas
*
Karakter dan %
dapat digunakan secara bergantian untuk karakter kartubebas dalam perbandingan LIKE. Jika string dalam klausa LIKE berisi *
atau %
, karakter tersebut harus diapit dalam tanda kurung siku ([]
). Jika tanda kurung dalam klausa, setiap karakter 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 kartubebas tidak diperbolehkan di tengah 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 mengembalikan beberapa baris, Anda harus menyertakan referensi ke kolom 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 , dan DataRelation objek diberi nama Customers2Orders
, referensinya Orders
adalah sebagai berikut:
Avg(Child(Customers2Orders).Quantity)
Agregat
Jenis agregat berikut ini didukung:
Sum
(Jumlah)Avg
(Rata-rata)Min
(Minimum)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)
Agregat juga dapat dilakukan pada satu tabel. Misalnya, untuk membuat ringkasan angka dalam kolom bernama "Harga":
Sum(Price)
Catatan
Jika Anda menggunakan satu tabel untuk membuat agregat, tidak akan ada fungsionalitas kelompok menurut. 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.
Fungsi
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
dapat dipaksa ke dan dari Byte
, , SByte
, Int32
Int16
, Int64
, UInt16
, , UInt32
, UInt64
dan String
itu sendiri saja. Char
dapat dipaksa ke dan dari Int32
, , UInt32
String
, dan itu sendiri saja. DateTime
dapat dipaksa ke dan dari String
dan sendiri saja. TimeSpan
dapat dipaksa ke dan dari String
dan sendiri saja.
LEN
Fungsi ini mendapatkan 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 untuk 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 di belakang seperti \r, \n, \t, dan ' '.
TRIM(expression)
Argumen | Deskripsi |
---|---|
expression |
Ekspresi untuk memangkas. |
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)"
Catatan
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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk