Đánh số tập và số Thứ tự tự động bảng access

  • Thread starter luisnghia
  • Ngày gửi
L

luisnghia

Guest
2/12/06
14
0
1
Đà Nẵng
Mình có một bảng danh sách khách hàng như sau:

CIFTÊN KHSỐ TÀI KHOẢN
10NGUYỄN A1
11NGUYỄN B2
12NGUYỄN C3
10NGUYỄN A4
12NGUYỄN C5
9NGUYỄN D6
8NGUYỄN E7
6NGUYỄN F8
1NGUYỄN G9
2NGUYỄN H10
[TBODY] [/TBODY]
Mình muốn đánh số tập và số thứ tự tập tự động theo nguyên tắc sau: Một khách hàng sẽ có 1 số cif duy nhất nhưng có nhiều tài khoản (các số tài khoản không bao giờ trùng nhau) mình muốn đánh số tập và số thứ tự trong tập theo số tài khoản của khách hàng nhưng mỗi khách hàng chỉ có một số thứ tự (mặc dù 1 khách hàng có nhiều số tài khoản nhưng nếu đã có số thứ tự rồi thì những tài khoản mở sau đó cũng phải theo số thứ tự của tài khoản ban đầu) và cứ 5 khách hàng sẽ thành 1 tập. Đánh số thứ tự theo cif thì mình làm được rồi, nhưng nếu 1 khách hàng có số cif nhỏ hơn nhưng sau này mới mở tài khoản thì số thứ tự sẽ bị xáo trộn và mình sẽ lưu hồ sơ bị xáo trộn, vì vậy mình muốn đánh stt theo stk vì số stk là cái được tạo sau. Xin cảm ơn các bạn nhiều!.
Ví dụ sau khi thực hiện đánh số thứ tự tự động thì bảng sẽ thành thế này:
CIFTÊN KHSỐ TÀI KHOẢNTẬPSTT TRONG TẬP
10NGUYỄN A111
11NGUYỄN B212
12NGUYỄN C313
10NGUYỄN A411
12NGUYỄN C513
9NGUYỄN D614
8NGUYỄN E715
6NGUYỄN F821
1NGUYỄN G922
2NGUYỄN H1023
[TBODY] [/TBODY]
 

Đính kèm

  • DANH SO TT TAP.zip
    13.3 KB · Lượt xem: 246
Sửa lần cuối:
Khóa học Quản trị dòng tiền
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Cái này không nên dùng một bảng,

Với lại bạn nên viết lại yêu cầu rõ ràng hơn.

Thân
 
  • Like
Reactions: luisnghia
L

luisnghia

Guest
2/12/06
14
0
1
Đà Nẵng
Cái này không nên dùng một bảng,

Với lại bạn nên viết lại yêu cầu rõ ràng hơn.

Thân
Mình đã chỉnh sửa lại như trên bạn xem được chưa.
Mình nói rõ thêm ý mình muốn hỏi như sau:
+ Danh sách kh của mình có cấu trúc như sau: Số cif (1 kh chỉ có 1 cif) - Số tài khoản (1kh có nhiều số tài khoản)
+ Mình muốn đánh số thứ tự của khách hàng theo số tài khoản nhưng 1 khách hàng chỉ có 1 số thứ tự (nếu kh đã có số thứ tự rồi thì mặc dù có thêm số tài khoản mới nhưng vẫn phải ăn sau số thứ tự ban đầu).
+ Cứ 5 khách hàng thì thành một tập.
Cảm ơn bạn đã góp ý
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Số tài khoản ăn theo số thứ tự là sao, nó liên quan gì đến số thứ tự, mình thì nghĩ rằng bạn đang muốn quản lý hồ sơ khách hàng theo các đặt điểm sau:
5 khách hàng thành 1 tập ( hạy sổ; hoặc cuốn gì đó) và số thứ tự trong mỗi tập được đánh số từ 1-5 ( duy nhất trong tập)

Như vậy:
1 một bảng khách hàng ( CIF là key)
1 bảng tài khoản liên kết 1-n với khách hàng ( tài khoản là key)
1 bảng tập ( cuốn, sổ) với các điều kiện (TÂP + STT) là một bộ key
----------------------------
1. Thông thường khi bạn tạo một khách hàng thì trong bảng TẬP nó sẽ tự động add ( TẬP + SỐ THỨ TỰ) với điều kiện là tìm kiếm trong bảng đó số TẬP nào chưa max là 5 thì add thêm vào tập đó và đánh số thứ tự MAX +1
Cái này chắc chắn bạn phải xử lý sự kiên khi tạo mã khách hàng CIF bằng VBA
2. Khi tạo tài khoản thì chắc chắn đã tồn tại khách hàng, vấn đề này hình như không liên quan gì đến TẬP thì phải, vì
Khi tạo tài khoản như cách tổ chức dữ liệu như trên, nó đã tự động có thông tin là khách hàng nào , và nó cũng cho biết khách hàng đó đang năm ở TẬP nào, khi đó ta lưu theo cấu trúc trên là ổn
 
  • Like
Reactions: luisnghia
L

luisnghia

Guest
2/12/06
14
0
1
Đà Nẵng
Số tài khoản ăn theo số thứ tự là sao, nó liên quan gì đến số thứ tự, mình thì nghĩ rằng bạn đang muốn quản lý hồ sơ khách hàng theo các đặt điểm sau:
5 khách hàng thành 1 tập ( hạy sổ; hoặc cuốn gì đó) và số thứ tự trong mỗi tập được đánh số từ 1-5 ( duy nhất trong tập)

Như vậy:
1 một bảng khách hàng ( CIF là key)
1 bảng tài khoản liên kết 1-n với khách hàng ( tài khoản là key)
1 bảng tập ( cuốn, sổ) với các điều kiện (TÂP + STT) là một bộ key
----------------------------
1. Thông thường khi bạn tạo một khách hàng thì trong bảng TẬP nó sẽ tự động add ( TẬP + SỐ THỨ TỰ) với điều kiện là tìm kiếm trong bảng đó số TẬP nào chưa max là 5 thì add thêm vào tập đó và đánh số thứ tự MAX +1
Cái này chắc chắn bạn phải xử lý sự kiên khi tạo mã khách hàng CIF bằng VBA
2. Khi tạo tài khoản thì chắc chắn đã tồn tại khách hàng, vấn đề này hình như không liên quan gì đến TẬP thì phải, vì
Khi tạo tài khoản như cách tổ chức dữ liệu như trên, nó đã tự động có thông tin là khách hàng nào , và nó cũng cho biết khách hàng đó đang năm ở TẬP nào, khi đó ta lưu theo cấu trúc trên là ổn
Cảm ơn bạn đã trả lời cho mình chi tiết như vậy. Mình sẽ nghiên cứu theo ý của bạn.
 
Sửa lần cuối:
L

luisnghia

Guest
2/12/06
14
0
1
Đà Nẵng
Số tài khoản ăn theo số thứ tự là sao, nó liên quan gì đến số thứ tự, mình thì nghĩ rằng bạn đang muốn quản lý hồ sơ khách hàng theo các đặt điểm sau:
5 khách hàng thành 1 tập ( hạy sổ; hoặc cuốn gì đó) và số thứ tự trong mỗi tập được đánh số từ 1-5 ( duy nhất trong tập)

Như vậy:
1 một bảng khách hàng ( CIF là key)
1 bảng tài khoản liên kết 1-n với khách hàng ( tài khoản là key)
1 bảng tập ( cuốn, sổ) với các điều kiện (TÂP + STT) là một bộ key
----------------------------
1. Thông thường khi bạn tạo một khách hàng thì trong bảng TẬP nó sẽ tự động add ( TẬP + SỐ THỨ TỰ) với điều kiện là tìm kiếm trong bảng đó số TẬP nào chưa max là 5 thì add thêm vào tập đó và đánh số thứ tự MAX +1
Cái này chắc chắn bạn phải xử lý sự kiên khi tạo mã khách hàng CIF bằng VBA
2. Khi tạo tài khoản thì chắc chắn đã tồn tại khách hàng, vấn đề này hình như không liên quan gì đến TẬP thì phải, vì
Khi tạo tài khoản như cách tổ chức dữ liệu như trên, nó đã tự động có thông tin là khách hàng nào , và nó cũng cho biết khách hàng đó đang năm ở TẬP nào, khi đó ta lưu theo cấu trúc trên là ổn
Bạn có thể cho mình hàm để đánh số tập và số thứ tự trong tập được không. Bước trên mình đã hoàn thành rồi. Cảm ơn bạn nhiều
 
L

luisnghia

Guest
2/12/06
14
0
1
Đà Nẵng
Mình làm theo bạn @nguoiconxunui hướng dẫn và đã được bản như sau:

CIFTÊN KHSỐ TÀI KHOẢNTẬPSTT TRONG TẬP
10NGUYỄN A11
11NGUYỄN B21
12NGUYỄN C31
9NGUYỄN D61
8NGUYỄN E71
6NGUYỄN F82
1NGUYỄN G92
2NGUYỄN H102
[TBODY] [/TBODY]

Nhưng còn một vướng mắc chỗ số thứ tự theo tập thì mình vẫn chưa làm được. Bạn nào có thể giúp mình được không? Cảm ơn các bạn nhiều
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Nếu bạn không thể sử dụng VBA thì không thể làm theo cách của mình nhé,
Cách của mình khá đơn giản nhưng phài dùng VBA, bạn google tìm hiểu thêm , lâu rồi mình không có làm access nữa. Nhưng có thể gợi ý cho bạn thế này:

Khi tạo khách hàng, trong sự kiện click_save hoặc click_create_new bạn sử dụng VBA làm mấy thao tác sau:

1. Kết nối đến table "TẬP"
2. Kiểm tra khách hàng có tồn tại trong bảng "TẬP" hay chưa, cái này có thể không cần làm vì CIF là duy nhất nên khi tạo mới thì trong bảng TẬP nó cũng là duy nhất, nếu chọn CIF là key chính duy nhất thì bỏ qua bước này:

3. kiểm tra bộ key ( TẬP + STT):
- Theo nguyên tắc thì CIF không bao giờ được xóa ( chỉ có trạng thái là Closed hoặc active) nên số tập ( giả sử là number) luôn tăng theo thời gian.
Giả sử số tập là i, số ttt trong tập là j
Cho thủ tục chạy i đến n ( n là số records trong bảng TẬP)
Check max j tương ứng với i, nếu j <5 thì j = max j + 1 ,chính là STT trong tập mà bạn cần tìm

4. Đã tìm được i,j thì chỉ tạo new records lưu lại
--------------------
À không biết VBA thì bỏ cách mình hướng dẫn đi nhé, mà nếu chưa biết thì bài tập của bạn rất khó hình thành, vì chỉ cần access nó có bất cứ yêu cầu nào mà phải căn cứ vào điều kiện cho trước thì hầu hết phải dùng VBA
 
  • Like
Reactions: luisnghia
L

luisnghia

Guest
2/12/06
14
0
1
Đà Nẵng
Nếu bạn không thể sử dụng VBA thì không thể làm theo cách của mình nhé,
Cách của mình khá đơn giản nhưng phài dùng VBA, bạn google tìm hiểu thêm , lâu rồi mình không có làm access nữa. Nhưng có thể gợi ý cho bạn thế này:

Khi tạo khách hàng, trong sự kiện click_save hoặc click_create_new bạn sử dụng VBA làm mấy thao tác sau:

1. Kết nối đến table "TẬP"
2. Kiểm tra khách hàng có tồn tại trong bảng "TẬP" hay chưa, cái này có thể không cần làm vì CIF là duy nhất nên khi tạo mới thì trong bảng TẬP nó cũng là duy nhất, nếu chọn CIF là key chính duy nhất thì bỏ qua bước này:

3. kiểm tra bộ key ( TẬP + STT):
- Theo nguyên tắc thì CIF không bao giờ được xóa ( chỉ có trạng thái là Closed hoặc active) nên số tập ( giả sử là number) luôn tăng theo thời gian.
Giả sử số tập là i, số ttt trong tập là j
Cho thủ tục chạy i đến n ( n là số records trong bảng TẬP)
Check max j tương ứng với i, nếu j <5 thì j = max j + 1 ,chính là STT trong tập mà bạn cần tìm

4. Đã tìm được i,j thì chỉ tạo new records lưu lại
--------------------
À không biết VBA thì bỏ cách mình hướng dẫn đi nhé, mà nếu chưa biết thì bài tập của bạn rất khó hình thành, vì chỉ cần access nó có bất cứ yêu cầu nào mà phải căn cứ vào điều kiện cho trước thì hầu hết phải dùng VBA
Cảm ơn bạn nhiều, mình sẽ nghiên cứu thêm
 

Xem nhiều