Đánh giá chủ đề:
  • 7 Votes - 1.71 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Hàm chuyển giá trị trong cột thành chuỗi cách nhau dấu phẩy
#1
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

[Hình: hoadonxoabo.jpg]
Ví dụ ta có table sau:
tableHDIndex (Click to View)
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


File đính kèm
.zip   columtostring.zip (Kích cỡ: 21.44 KB / Tải về: 252)
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan , Cafe Via He , lacbuidoi , quan_pc , maidinhdan , thucgia
#2
No cho xin link khác nhé. Link trên ko down được.

No nghiên cứu cho xin luôn hàm liệt kê các hóa đơn ko có trong danh sách nhé.
Cụ thể:
mình có HD từ: 0001 -----> 9999, nhưng trong đó bị thiếu một số hóa đơn: chẳng hạn: 0022, 0055
Làm thế nào lấy được 2 số này đưa vào danh sách.
Mình đã thử một số cách nhưng chạy chậm quá.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
(06-12-10, 11:17 AM)haquocquan Đã viết: No cho xin link khác nhé. Link trên ko down được

Thử với link này xem
Download

Hoặc link này Download
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan
#4
(06-12-10, 11:17 AM)haquocquan Đã viết: No cho xin link khác nhé. Link trên ko down được.

No nghiên cứu cho xin luôn hàm liệt kê các hóa đơn ko có trong danh sách nhé.
Cụ thể:
mình có HD từ: 0001 -----> 9999, nhưng trong đó bị thiếu một số hóa đơn: chẳng hạn: 0022, 0055
Làm thế nào lấy được 2 số này đưa vào danh sách.
Mình đã thử một số cách nhưng chạy chậm quá.

No xem giúp ý trên nhé
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(07-12-10, 09:28 AM)haquocquan Đã viết:
(06-12-10, 11:17 AM)haquocquan Đã viết: No cho xin link khác nhé. Link trên ko down được.

No nghiên cứu cho xin luôn hàm liệt kê các hóa đơn ko có trong danh sách nhé.
Cụ thể:
mình có HD từ: 0001 -----> 9999, nhưng trong đó bị thiếu một số hóa đơn: chẳng hạn: 0022, 0055
Làm thế nào lấy được 2 số này đưa vào danh sách.
Mình đã thử một số cách nhưng chạy chậm quá.

No xem giúp ý trên nhé

Vấn đề này thì chỉ có nước duyệt hết bảng hóa đơn thôi! Nên chậm là phải.
Thực tế danh sách hóa đơn không thể thiếu 1 số nào, cho dù cháy nổ mất hay bị hủy, hay xóa bỏ đều phải lưu lại trạng thái. Tức là trạng thái của số hóa đơn đó là xóa bỏ chứ không phải là delete ra khỏi hệ thống máy tính. Và tuyệt đối không để mất 1 số nào trong đó cả. Nếu không làm sao báo cáo với cơ quan thuế!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
Thực ra, vấn đề của mình không phải là hóa đơn, mà là danh sách khách hàng.
Chương trình kế toán của đơn vị mình lập bằng FOX FOR DOS (cổ lỗ sĩ rồi).
Đôi khi, kế toán xóa khách hàng trong danh sách khách hàng.
Mình import dữ liệu vào access để xử lý (không thể lưu vết được). Cần thống kê những khách hàng nào đã bị xóa (mã số khách hàng tự động được lấy từ thấp đến cao trong fox), mã nào không có trong một dãy đó, thì có nghĩa là bị xóa.
Có khoảng 40 ngàn khách hàng. Chạy chậm quá.
Đành phải nghĩ cách khác vậy
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
Cách đơn giản nhất là tạo 1 table tương tự, chỉ có 1 cột là mã số khách hàng. Bằng Excel cho nhanh. từ 00001=> số lớn nhất (không quá 65 ngàn dòng)
Sau đó left join bảng này với bảng danh sách khách hàng hiện hành.
lọc ra những cái nào phía bên trái =null là ok!
Tối đa cho việc lọc này là 5 phút. (đương nhiên là thủ công)
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan
#8
Mình có cách rồi:
Tạo 2 table (một table để lưu dữ liệu khách hàng bị xóa, một table tạm)
Trong table1, mình lưu mã số max của từng tháng, table tạm để tạo các mã số từ max tháng trước, đến max tháng này, sau đó chỉ cần lọc trong table tạm thôi. Chắc là sẽ nhanh hơn.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
(07-12-10, 12:55 PM)haquocquan Đã viết: Mình có cách rồi:
Tạo 2 table (một table để lưu dữ liệu khách hàng bị xóa, một table tạm)
Trong table1, mình lưu mã số max của từng tháng, table tạm để tạo các mã số từ max tháng trước, đến max tháng này, sau đó chỉ cần lọc trong table tạm thôi. Chắc là sẽ nhanh hơn.

Mình gửi Quân demo nè:
danhsachkh: bảng có danh sách kh bị xóa bớt
masokhFull : Bảng list mã số khách hàng đầy đủ
Query1: query lọc ra những mã khách hàng nào bị thiếu trong bảng danh sách khách hàng bị xóa bớt
Download
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan
#10
Thanks No.
Nhưng vấn đề của mình ko đơn giản như vậy.
Cụ thể hơn nhé:
Mình có file DBF (của kế toán), gồm khoảng 40 ngàn record (hiện tại)
Trong file DBF này có một số khách hàng bị xóa mà mình không biết (tất nhiên MSKH là thứ tự từ thấp đến cao, tự động tạo khi có KH mới)
Mình import vào access. Mình muốn lọc ra những MSKH không có trong file DBF này (từ 0001---> max(mskh), MSKH nào ko có).
Nói chung là như vậy.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Hướng Dẫn Hàm API trong quản lý file và folder maidinhdan 1 293 22-04-16, 09:40 AM
Bài mới nhất: kieu manh
  Hướng Dẫn Tổng hợp hàm xử lý văn bản và chuỗi ( Có ví dụ) maidinhdan 0 321 16-04-16, 01:17 PM
Bài mới nhất: maidinhdan
  Hướng Dẫn Một số hàm D trong Access Xuân Thanh 12 6,662 22-01-16, 01:55 PM
Bài mới nhất: khanghychu
  Hướng Dẫn Một số hàm C... trong Access Xuân Thanh 2 1,328 21-01-16, 11:06 AM
Bài mới nhất: khanghychu
  [Hàm] Hàm tách lấy số trong một chuỗi cho trước Xuân Thanh 11 2,130 13-10-15, 10:08 AM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ