Pengenalan:
Dalam Microsoft Access, anda boleh menggunakan fungsi tersuai untuk menggabungkan berbilang baris data ke dalam satu baris. Teknik ini amat berguna apabila anda perlu meringkaskan data berdasarkan medan biasa.
Soalan:
Andaikan anda mempunyai jadual dalam MS Access yang mengandungi data berikut:
ColumnA | ColumnB |
---|---|
1 | abc |
1 | pqr |
1 | xyz |
2 | efg |
2 | hij |
3 | asd |
Matlamat anda ialah untuk menggabungkan nilai dalam lajur kedua (LajurB) ke dalam satu baris untuk setiap baris unik dalam lajur pertama (LajurA). Output yang dikehendaki ialah:
ColumnA | ColumnB |
---|---|
1 | abc, pqr, xyz |
2 | efg, hij |
3 | asd |
Penyelesaian fungsi tersuai:
Untuk melakukan ini, anda boleh menentukan fungsi tersuai dalam Access untuk melaksanakan gabungan. Berikut ialah panduan langkah demi langkah:
<code class="language-vba">Public Function GetList(strSQL As String, Optional strDelimiter As String = ", ", Optional strValueList As String = "") Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(strSQL) Do While Not rs.EOF strValueList = strValueList & rs(0) & strDelimiter rs.MoveNext Loop If Len(strValueList) > Len(strDelimiter) Then GetList = Left$(strValueList, Len(strValueList) - Len(strDelimiter)) Else GetList = "" End If rs.Close Set rs = Nothing End Function</code>
Fungsi ini menerima tiga parameter:
Kini anda boleh menggunakan fungsi tersuai dalam pertanyaan untuk menggabungkan nilai. Masukkan pernyataan SQL berikut ke dalam pertanyaan:
<code class="language-sql">SELECT ColumnA, GetList("SELECT ColumnB FROM Table1 WHERE ColumnA = " & [ColumnA]) AS ConcatenatedValues FROM Table1 GROUP BY ColumnA;</code>
Pertanyaan ini akan mengumpulkan baris mengikut ColumnA dan menggunakan fungsi GetList() untuk menggabungkan nilai ColumnB dalam setiap kumpulan.
Output pertanyaan akan menjadi jadual dengan hasil yang diingini:
ColumnA | ConcatenatedValues |
---|---|
1 | abc, pqr, xyz |
2 | efg, hij |
3 | asd |
Jawapan yang disemak ini menambah baik kod VBA dengan:
If Len(strValueList) > Len(strDelimiter) Then
memastikan bahawa jika pertanyaan SQL tidak mengembalikan baris, fungsi mengembalikan rentetan kosong dan bukannya pembatas mengekor.Ini menjadikan fungsi lebih mantap dan cekap. Pertanyaan SQL dalam contoh juga dipermudahkan sedikit untuk kejelasan.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Baris dalam Pertanyaan MS Access Menggunakan Fungsi Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!