Bagikan melalui


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.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 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 Ordersadalah 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, Int32Int16, Int64, UInt16, , UInt32, UInt64dan String itu sendiri saja. Chardapat dipaksa ke dan dari Int32, , UInt32String, 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.