Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Trích xuất dữ liệu
#1
Em có một bài toán được mô tả như sau:
Công ty em có rất nhiều khách hàng, mỗi khách hàng thuộc các tỉnh khác nhau. Hàng năm công ty tổ chức cho khách hàng đi du lịch. Mỗi khách hàng chỉ được đi 2 năm một lần (nếu đã đi năm 2015 thì năm 2016 sẽ không được đi nữa). Mỗi năm tổ chức thành nhiều đợt (khoảng 10 đến 20 đợt), mỗi đợt các tỉnh gửi danh sách khách hàng đăng ký đi du lịch lên công ty bằng file excel. Do lượng khách hàng quá lớn nên việc kiểm soát khó thự hiện (có khách hàng năm nào cũng được đi). Mục tiêu của em là tổ chức cơ sở dữ liệu khách hàng như thế nào trên access để khi các tỉnh gửi danh sách lên thì từ file excel em có thể kiểm tra được lịch sử đi du lịch của từng khách hàng (đã đi những năm nào, đợt thứ mấy của năm).
Rất mong nhận được tư vấn của mọi người về cách làm và cách tổ chức dữ liệu. Em xin cảm ơn!
Chữ ký của binhnguyenthanh Xin chào, mình là binhnguyenthanh, Tham gia http://thuthuataccess.com/forum từ ngày 31-10 -14.
Reply
Những người đã cảm ơn
#2
Chắc bạn làm bên Sales admin hoặc trade marketing Cty FMCG à? 007
Thử thảo luận theo cách này xem có khả thi không nhé.
1. Table danh sách khách hàng
- Danh sách khách hàng phải thiết lập [Mã khách hàng] để tiện việc theo dõi, truy vấn.
- Khi gửi danh sách KH ở các tỉnh lên thì sẽ đối chiếu với DS khách hàng có sẳn ở Cty để xem có "khách hàng mới"  không, nếu có thì sẽ tạo mã mới, thêm vô. Ở đây sẽ phát sinh là việc tạo mã ai làm? Có thể qui định DS ở tỉnh gửi lên sẽ để trống cột [Mã Khách Hàng] để bạn biết đây là khách hàng mới.
- DS khách hàng gửi lên phải có các cột: Mã khách hàng, Tên KH, Khu vực nào gửi, Năm đăng ký đi DL. bạn có thể tạo mã quản lý khu vực để kiểm tra xem khu vực nào đã gửi.
2. Table lưu lịch sử đi tour:
- Có các cột: Mã KH, thời gian đã đi tour.
- Từ table này bạn sẽ query ra ds những khách hàng nào sẽ được đi tour trong năm chỉ định (vd: năm nay). Query bằng cách tìm những KH nào có thời gian đi tour < năm trước (theo y/c của bạn là đi cách năm).
- Dùng danh sách đã query này đối chiếu với ds các tỉnh gửi lên để kiểm tra. Bạn có thể dùng Find Unmatch Query để tìm những KH trong ds bạn có mà các tỉnh gửi lên không có và ngược lại.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn binhnguyenthanh , maidinhdan
#3
Cảm ơn bác [b]ongke0711[/b]. Theo ý tưởng của bác em cũng đã thử làm trước đây nhưng còn vướng mắc như sau: 
1. Với bảng lưu lịch sử đi tour còn một nội dung nữa như bài toán em nêu là đợt đi (mỗi năm có khoảng 20 đợt vì khách hàng không thể đi hết vào một đợt được) vậy bảng này sẽ có nội dung lưu năm đi tour và đợt đi tour. Vậy em sẽ mã hóa năm và đợt là nam_dot (VD: 2014_1 tức là đợt 1 năm 2014). Tuy vậy theo thời gian sẽ có rất nhiều năm thì trường lịch sử tour này sẽ tổ chức thế nào? Mỗi năm một cột (colume) hay có cách nào khác?
2. VD: Đợt 1 Hà Nội gửi 100 khách hàng đi đợt 1 năm 2016 trên tổng số 20.000 khách hàng. Đợt 2 sẽ gửi 100 khách hàng tiếp. Vậy có cách nào tự động cập nhật lịch sử đợt 1 năm 2016 của Hà Nội vào CSDL được không để chắc chắn rằng 100 khách đợt 1 không ai được duyệt đi đợt tiếp theo. Danh sách các đơn vị gửi lên là file excel vì không thể bắt tất cả các đơn vị sử dụng access.
Cảm ơn bác!
Chữ ký của binhnguyenthanh Xin chào, mình là binhnguyenthanh, Tham gia http://thuthuataccess.com/forum từ ngày 31-10 -14.
Reply
Những người đã cảm ơn
#4
Cái này bạn có thể tham khảo thêm mô hình quản lý khách hàng của các siêu thị (vd: nguyenkim, coopmark ). Cách làm như thế này:

Bạn sẻ đăng ký mã số KH, mỗi KH sẻ có một mã số, để tránh tình trạng một KH có nhiều hơn một mã số thì bạn cần yêu cầu KH cung cấp giấy CMND khi đăng ký mã số KH, nếu không ngại tốn thêm chi phí thì bạn có thể cấp cho mỗi KH một thẻ KH, sau này mỗi khi KH mua hàng hoặc thanh toán tiền hàng chỉ cần xuất trình thẻ KH ra là được, với mô hình này bạn có thể theo dõi được doanh số mua hàng, công nợ phải thu (nếu có) của từng KH. Còn về việc tổ chức du lịch thì khi tham gia đi du lịch thì KH cũng phải xuất trình thẻ KH ra (nếu KH nào không có thẻ KH thì không cho tham gia đi du lịch). Và mỗi lần như vậy bạn chỉ cần cập nhật vào CSDL của bạn là được.
Còn về việc đăng ký mã số KH thì bạn giao cho đơn vị địa phương đăng ký về theo dõi KH, định kỳ các đơn vị địa phương sẻ gởi thông tin cập nhật về cho bạn.
Đó là phần cách thức tổ chức, còn phần thiết kế CSDL sao cho hợp lý thì xin nhờ các cao thủ hướng dẫn thêm cho bạn.

Vài lời cùng bạn.
Chữ ký của ketoan_it Xin chào, mình là ketoan_it, Tham gia http://thuthuataccess.com/forum từ ngày 29-06 -13.
Reply
Những người đã cảm ơn binhnguyenthanh , maidinhdan
#5
(04-04-16, 02:28 PM)ketoan_it Đã viết: Cái này bạn có thể tham khảo thêm mô hình quản lý khách hàng của các siêu thị (vd: nguyenkim, coopmark ). Cách làm như thế này:

Bạn sẻ đăng ký mã số KH, mỗi KH sẻ có một mã số, để tránh tình trạng một KH có nhiều hơn một mã số thì bạn cần yêu cầu KH cung cấp giấy CMND khi đăng ký mã số KH, nếu không ngại tốn thêm chi phí thì bạn có thể cấp cho mỗi KH một thẻ KH, sau này mỗi khi KH mua hàng hoặc thanh toán tiền hàng chỉ cần xuất trình thẻ KH ra là được, với mô hình này bạn có thể theo dõi được doanh số mua hàng, công nợ phải thu (nếu có) của từng KH. Còn về việc tổ chức du lịch thì khi tham gia đi du lịch thì KH cũng phải xuất trình thẻ KH ra (nếu KH nào không có thẻ KH thì không cho tham gia đi du lịch). Và mỗi lần như vậy bạn chỉ cần cập nhật vào CSDL của bạn là được.
Còn về việc đăng ký mã số KH thì bạn giao cho đơn vị địa phương đăng ký về theo dõi KH, định kỳ các đơn vị địa phương sẻ gởi thông tin cập nhật về cho bạn.
Đó là phần cách thức tổ chức, còn phần thiết kế CSDL sao cho hợp lý thì xin nhờ các cao thủ hướng dẫn thêm cho bạn.

Vài lời cùng bạn.

 Cảm ơn bác! Vấn đề của mình xuất phát từ nhu cầu xử lý dữ liệu. Khi có phương án xử lý dữ liệu rồi thì từ đó sẽ có cách thiết kế và tổ chức CSDL cho phù hợp với phương án xử lý. Cảm ơn bạn đã góp ý!
Chữ ký của binhnguyenthanh Xin chào, mình là binhnguyenthanh, Tham gia http://thuthuataccess.com/forum từ ngày 31-10 -14.
Reply
Những người đã cảm ơn
#6
(04-04-16, 02:21 PM)binhnguyenthanh Đã viết: Cảm ơn bác [b]ongke0711[/b]. Theo ý tưởng của bác em cũng đã thử làm trước đây nhưng còn vướng mắc như sau: 
1. Với bảng lưu lịch sử đi tour còn một nội dung nữa như bài toán em nêu là đợt đi (mỗi năm có khoảng 20 đợt vì khách hàng không thể đi hết vào một đợt được) vậy bảng này sẽ có nội dung lưu năm đi tour và đợt đi tour. Vậy em sẽ mã hóa năm và đợt là nam_dot (VD: 2014_1 tức là đợt 1 năm 2014). Tuy vậy theo thời gian sẽ có rất nhiều năm thì trường lịch sử tour này sẽ tổ chức thế nào? Mỗi năm một cột (colume) hay có cách nào khác?
2. VD: Đợt 1 Hà Nội gửi 100 khách hàng đi đợt 1 năm 2016 trên tổng số 20.000 khách hàng. Đợt 2 sẽ gửi 100 khách hàng tiếp. Vậy có cách nào tự động cập nhật lịch sử đợt 1 năm 2016 của Hà Nội vào CSDL được không để chắc chắn rằng 100 khách đợt 1 không ai được duyệt đi đợt tiếp theo. Danh sách các đơn vị gửi lên là file excel vì không thể bắt tất cả các đơn vị sử dụng access.
Cảm ơn bác!

1. Bạn tạo 1 table phụ "Đợt tour" có các 2 cột chính (như bạn đã làm): [Mã đợt tour],[Ngày đi tour],[ Ghi chú]... Vd: 
[MaTour]      [NgayTour]
012016        15/01/2016      => [mã tour] qua năm sau thì sẽ quay lại. Vd: 012017,.., 202017
- Trong table lưu lịch sử đi tour chỉ cần lưu [mã tour] của từng KH cho gọn.
2. Khi ds đi tour được duyệt thì Update cột [mã tour] cho khách hàng đó.
Khi query danh sách, để loại nhưng KH đã đi tour rồi thì cho điều kiện là: 
   + [Ngày đi tour]< 2015  -> để lấy ds KH được đi năm nay 2016 (cách 1 năm) và KH nào mới đi 2016 cũng bị loại ra.
3. Danh sách này cũng đơn giản nên bạn thiết kế form excel các cột cho chuẩn theo yêu cầu rồi import vô access thôi. Sau khi import, bạn dùng Find unmatch query để đối chiếu dữ liệu lịch sử bạn đã lưu với file mới import này để kiểm tra danh sách.
Có thể còn nhiều vấn đề phát sinh cần giải quyết, bạn cứ đưa dữ kiện rồi thảo luận tiếp.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn binhnguyenthanh , maidinhdan
#7
Dear cả nhà!

Em xin phép được hỏi ở topic này. Em có 1 query lấy dữ liệu từ một bảng theo điều kiện là 1 textbox thời gian. Sau khi chạy query em muốn edit (nối thêm, viết tiếp)  (không phải update vì update sẽ thay thế) trường "ghi chú" trong bảng gốc là thời gian đã chọn trên textbox điều kiện. Xin được chỉ dẫn bằng VBA thì càng tốt ạ.
Em xin cảm ơn!

P/s: xin phép bác ongke0711 cho em inbox để trảo đổi riêng được không ạ?
Chữ ký của binhnguyenthanh Xin chào, mình là binhnguyenthanh, Tham gia http://thuthuataccess.com/forum từ ngày 31-10 -14.
Reply
Những người đã cảm ơn
#8
Muốn nối thêm vào trường ghi thì code như sau:
-----------------------------
Dim rs as DAO.Recordset
Set rs=CurrentDb.OpenRecordset ("table của bạn", DbOpenDynaset)
With rs
     .Edit
     !GhiChu=!GhiChu & "-" & Me.TextboxNgay
     .Update
End With
rs.Close
Set rs = Nothing
----------------------------

Bạn cứ inbox thoải mái. 007
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn binhnguyenthanh
#9
[quote='ongke0711' pid='30411' dateline='1459876413']
Muốn nối thêm vào trường ghi thì code như sau:
-----------------------------
Dim rs as DAO.Recordset
Set rs=CurrentDb.OpenRecordset ("table của bạn", DbOpenDynaset)
With rs
     .Edit
     !GhiChu=!GhiChu & "-" & Me.TextboxNgay
     .Update
End With
rs.Close
Set rs = Nothing
----------------------------

Như thế này thì chỉ edit được 01 bản ghi thôi ạ. Em muốn edit tất cả bản ghi do query tạo ra cơ ạ.
Chữ ký của binhnguyenthanh Xin chào, mình là binhnguyenthanh, Tham gia http://thuthuataccess.com/forum từ ngày 31-10 -14.
Reply
Những người đã cảm ơn
#10
(04-04-16, 08:26 PM)ongke0711 Đã viết: 1. Bạn tạo 1 table phụ "Đợt tour" có các 2 cột chính (như bạn đã làm): [Mã đợt tour],[Ngày đi tour],[ Ghi chú]... Vd: 
[MaTour]      [NgayTour]
012016        15/01/2016      => [mã tour] qua năm sau thì sẽ quay lại. Vd: 012017,.., 202017
- Trong table lưu lịch sử đi tour chỉ cần lưu [mã tour] của từng KH cho gọn.
2. Khi ds đi tour được duyệt thì Update cột [mã tour] cho khách hàng đó.
Khi query danh sách, để loại nhưng KH đã đi tour rồi thì cho điều kiện là: 
   + [Ngày đi tour]< 2015  -> để lấy ds KH được đi năm nay 2016 (cách 1 năm) và KH nào mới đi 2016 cũng bị loại ra.
3. Danh sách này cũng đơn giản nên bạn thiết kế form excel các cột cho chuẩn theo yêu cầu rồi import vô access thôi. Sau khi import, bạn dùng Find unmatch query để đối chiếu dữ liệu lịch sử bạn đã lưu với file mới import này để kiểm tra danh sách.
Có thể còn nhiều vấn đề phát sinh cần giải quyết, bạn cứ đưa dữ kiện rồi thảo luận tiếp.

Theo cách này cơ bản em đã xử lý được vấn đề chính. Em có một vướng mắc tiếp như sau: Mỗi tỉnh sẽ gửi 1 danh sách khách hàng đi tour, số  lượng khách hàng ở mỗi tỉnh là khác nhau. Vậy với mỗi tỉnh sẽ phải tạo 1 bảng dữ liệu phụ để import file excel vào => sẽ mất thời gian. Vậy phải xử lý như thế nào ạ?
Chữ ký của binhnguyenthanh Xin chào, mình là binhnguyenthanh, Tham gia http://thuthuataccess.com/forum từ ngày 31-10 -14.
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
  [Help] Thiết kế form nhập và lưu trữ dữ liệu theo yêu cầu brianhuynh 16 627 20-10-16, 10:54 PM
Bài mới nhất: brianhuynh
  Xóa tất cả các dữ liệu ChiMai 3 146 15-10-16, 02:47 PM
Bài mới nhất: cpucloi
  [Help] Nhờ tạo form lưu hóa đơn nhập, hóa đơn xuất, hàng nhập hàng xuất không cần tính tồn laxx_xxal 1 133 22-09-16, 02:35 PM
Bài mới nhất: Nguyen Hoang Diep
  Hướng Dẫn Cách lưu (back up database) dữ liệu! danhxetnghiem 20 2,921 07-08-16, 04:40 PM
Bài mới nhất: maidinhdan
  [Help] Nhờ các bạn phục hồi dữ liệu tringuyen 2 130 21-07-16, 06:54 PM
Bài mới nhất: zinzin8x

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ơ