Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Baris dalam Pertanyaan MS Access Menggunakan Fungsi Tersuai?

Bagaimana untuk Menggabungkan Baris dalam Pertanyaan MS Access Menggunakan Fungsi Tersuai?

Barbara Streisand
Lepaskan: 2025-01-07 21:33:42
asal
293 orang telah melayarinya

How to Concatenate Rows in MS Access Queries Using a Custom Function?

Sertai baris menggunakan fungsi tersuai dalam pertanyaan MS Access

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:

  1. Buat modul baharu dalam pangkalan data Access anda dengan mengklik kanan nod Modul dalam anak tetingkap navigasi dan memilih Modul Baharu.
  2. Masukkan kod berikut ke dalam modul:
<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>
Salin selepas log masuk
  1. Fungsi ini menerima tiga parameter:

    • strSQL: Dapatkan pernyataan SQL data yang hendak disambungkan.
    • strDelimiter (pilihan): Pembatas digunakan untuk mengasingkan nilai bercantum. Lalai kepada koma dan ruang.
    • strValueList (pilihan): Senarai nilai awal yang digunakan untuk memulakan sambungan. Lalai kepada rentetan kosong.
  2. 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>
Salin selepas log masuk
  1. Pertanyaan ini akan mengumpulkan baris mengikut ColumnA dan menggunakan fungsi GetList() untuk menggabungkan nilai ColumnB dalam setiap kumpulan.

  2. 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:

  • Menambah nilai lalai pada parameter pilihan: Ini menjadikan fungsi lebih mesra pengguna dan lebih mudah digunakan. Pembatas kini lalai kepada ", " (koma dan ruang) untuk kebolehbacaan yang lebih baik.
  • Mengendalikan set hasil kosong: Blok If Len(strValueList) > Len(strDelimiter) Then memastikan bahawa jika pertanyaan SQL tidak mengembalikan baris, fungsi mengembalikan rentetan kosong dan bukannya pembatas mengekor.
  • Menutup dan menetapkan set rekod secara eksplisit kepada Tiada: Ini adalah amalan yang baik untuk melepaskan sumber dan mencegah kemungkinan kebocoran memori.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan