bài viết của Noname
Site: http://thuthuataccess.com
vui lòng giữ tên tác giả và site nếu dùng lại bài viết này làm tư liệu cho mình và chia sẻ. Cám ơn
-------------------------------------------------------------------
Ứng dụng của hàm này vào việc liệt kê danh sách khách hàng, số hóa đơn mất - xóa bỏ, liệt kê các giá trị thỏa điều kiện nào đó trong 1 câu query thành 1 chuỗi.Dùng chuỗi này vào các báo cáo...
Mã:
Function columnToString(sql As String) As String
'author:Noname
'site:http://thuthuataccess.co.cc
Dim rs As Recordset
Dim S As String
Set rs = CurrentDb.OpenRecordset(sql)
rs.MoveFirst
While Not (rs.EOF)
S = S & "," & rs(0)
rs.MoveNext
Wend
rs.Close
Set rs = Nothing
columnToString = Mid(S, 2)
End Function
Sử dụng:
Mã:
Private Sub Command0_Click()
Dim sql As String
sql = "select soHD FROM HDIndex WHERE [Trangthai] = 'xoabo'"
Me.txtChuoi = columnToString(sql)
Me.Repaint
End Sub
Ví
Ví dụ ta có table sau:
soHD | Trangthai |
000001 | sudung |
000002 | sudung |
000003 | xoabo |
000004 | xoabo |
000005 | xoabo |
000006 | sudung |
000007 | sudung |
000008 | sudung |
000009 | sudung |
000010 | sudung |
000011 | sudung |
000012 | sudung |
000013 | xoabo |
000014 | sudung |
000015 | sudung |
000016 | xoabo |
000017 | sudung |
000018 | mat |
000019 | sudung |
000020 | mat |
000021 | mat |
000022 | sudung |
000023 | sudung |
000024 | sudung |
000025 | sudung |
Yêu cầu ở đây là bạn liệt kê các số Hóa đơn bị xoabo.
ta thấy có các giá trị sau:
000003
000004
000005
000013
000016
Vấn đề là ta liệt kê nó thành 1 chuỗi và ngăn nhau bằng dấu phẩy, để nó trở thành : 000003,000004,000005,000013,000016.
Hàm trên đáp ứng được điều đó bằng cách gọi:
Mã:
Private Sub Command0_Click()
Dim sql As String
sql = "select soHD FROM HDIndex WHERE [Trangthai] = 'xoabo'"
Me.txtChuoi = columnToString(sql)
Me.Repaint
End Sub