Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm
#11
[/quote]

Vấn đề thay đổi lại mã số HĐ này của bạn đơn giản nhưng một vấn đề quan trong hơn nữa bạn phải nghĩ đến khi thực hiện việc “Sửa” mã HĐ của nghiệp vụ này là nó có ảnh hưởng đến dữ liệu báo cáo kế toán của bạn không? tính đúng đắn của qui trình, nguyên tắc nhập liệu dữ liệu quan trọng như hóa đơn nhập xuất này. 
Bạn cần tính đến:
- Mã HD này sẽ làm khóa ngoại cho các table khác liên quan. khi sửa đổi nó cũng sẽ ảnh hưởng. Nếu bạn đã thiết lập Relationship cho Mã HD này với các table khác là  “Cascading update…” thì ok.
- Mã HD tạo tự động dùng để định danh (primary key) một dòng (1 record) để phân biệt các dòng khác và thường là không cho sửa đổi mà bây giờ bạn lại muốn sửa đổi hàng loạt các Primary Key [mã HD] như hóa đơn tháng 11 trong ví dụ của bạn. Như vậy không đảm bảo tính toàn vẹn dữ liệu. Vd: Tháng 11 bạn đã làm nghiệp vụ thanh toán cho nhà cung cấp các Mã HD đó rồi, in chứng từ, lưu trữ kế toán v.v.. Sau đó tự nhiên phát sinh sửa mã HD hàng loạt vậy mấy chứng từ đã xử lý rồi sai thông tin hết…Do vậy nếu Mã HD đã có phát sinh liên quan đến dữ liệu, nghiệp vụ khác, bạn sửa nó sẽ ảnh hưởng đến tính nhất quán của dữ liệu. Thường thì Kế toán không cho nghiệp vụ nhập ngược trở về tháng trước sau khi đã khóa sổ. Tốt nhất cho trường hợp sửa mã HD về tháng khác thì chỉ cập nhật nó thôi, các Mã HD đã tồn tại của tháng đó rồi, không được thay đổi.
- Một vấn đề bạn phải tính tới nữa khi code cho việc sửa Mã HD này - code cho nút [Sửa]: Phải xét xem có sửa Field  [tháng] không, nếu có thì chạy code cập nhật lại mã HD, nếu không thì chỉ cập nhật thông thường.

Code tạo số tt tăng dần trong demo của bạn cũng hay là nó tự tìm nhưng số nào chưa có (có thể là nhỏ hơn số tt đã cấphiện tại) để cấp lại. Thay vì dùng vòng lặp while... trong Recordset thì dùng Dlookup sẽ nhanh hơn.

Mã PHP:
' tim xem soCT nay da co hay chua'
[/font]
   k 1
   Do Until k 
0
       vsoct 
Right("000" i3)
       k Len(Nz(DLookup("SoChungTu""tblxuatnhap""[NgayCT]=#" Format(Me.txtngayct"mm/dd/yyyy") & "# AND SoChungTu ='" vsoct "'"), ""))
       i 1
   Loop

   vrs
.Close
   Set vdata 
Nothing

[font=Tahoma]   SoChungTu vsoct 

[/quote]

Cám ơn bạn đã quan tâm trả lời. Nhưng bạn có thử nhấn nút "Sửa" không? và nó xảy ra hiện tượng "nhảy số" phải không? Bạn khuyên không nên sửa số HĐ, tôi xin ghi nhận, nhưng đại khái, tôi chỉ muốn sửa dữ liệu, hoặc số tiền, sau đó ấn "Ghi", thì MãHĐ tự "nhảy số"... hichic....
Có cách nào vẹn toàn hơn không bạn? Vì trong quá trình nhập liệu thì sai sót là điều không tránh khỏi.
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Những người đã cảm ơn
#12
(09-11-17, 06:12 PM)pherotao Đã viết: Cám ơn bạn đã quan tâm trả lời. Nhưng bạn có thử nhấn nút "Sửa" không? và nó xảy ra hiện tượng "nhảy số" phải không? Bạn khuyên không nên sửa số HĐ, tôi xin ghi nhận, nhưng đại khái, tôi chỉ muốn sửa dữ liệu, hoặc số tiền, sau đó ấn "Ghi", thì MãHĐ tự "nhảy số"... hichic....
Có cách nào vẹn toàn hơn không bạn? Vì trong quá trình nhập liệu thì sai sót là điều không tránh khỏi.


- Trong file mà bạn gửi tôi, nút [Sửa] chẳng có gì khác ngoại trừ lệnh SetFocus cho textbox NgayCT, có code gì để "Sửa" đâu mà nhảy số?
[Hình: 38282987751_ed4e14c4fc_z.jpg]

- Code tạo mã HD tăng tự động thì đơn giản nhưng để áp dụng vô một form nhập liệu tổng thể thì không đơn giản như bạn nghĩ chút nào.
- Những code cơ bản của nút "Ghi" làm những gì, và nút "Sửa" làm những gì, bạn còn chưa lập trình cho nó mà bạn đã nhảy vô code tự động tạo mã. Code nút [Ghi] hiện tại của bạn chỉ thực hiện một nhiệm vụ duy nhất là tạo Mã HĐ tự động - Xong => dịch code ra là mỗi lần bấm nút [Ghi] nó sẽ chạy lệnh và tạo mã mới, lưu vào trường [SoChungTu] của table, chỉ vậy thôi. Bạn phải ngâm cứu lại những cái cơ bản nhất của Access thôi. Bạm tham khảo bài này để biết code cho các nút [Thêm], [Sửa]... cho Bound Form của bạn.
http://thuthuataccess.com/forum/thread-8467.html
http://thuthuataccess.com/forum/thread-5855.html

Giả sử bạn đã biết code cho các nút [Thêm], [Ghi], [Sửa], [Xóa] rồi thì tôi nói về cái luồng xử lý của code tạo mã HĐ mới nó nằm ở phần nào trong code nút [Ghi]. Khi Form đang "Tạo mới" hay "Sửa", sau đó bạn đều phải bấm nút [Ghi] này để cập nhật dữ liệu vừa "Sửa" hay vừa "Tạo mới". Do vậy:
- Code tạo mới Mã HD chỉ cho chạy khi Form nhập liệu đang ở trạng thái là "Tạo mới" record (nhập liệu HĐ mới). Nếu trong trạng thái "Sửa" thì không cần chạy code này để tránh tạo mã và ghi đè lên record như file hiện tại của bạn. 
- Vậy vấn đề là làm sao phát hiện Form đang ở trạng thái "Tạo mới" hay trạng thái "Sửa"? Một thủ thuật tôi dùng là kiểm tra thuộc tính "Enabled" hay "Disable" các nút lệnh [Tạo mới] và [Sửa]. Khi bấm nút [Tạo mới] sẽ chạy code cho nó Disable luôn, sau khi [Ghi] sẽ "Enabled" lại. Khi bấm nút [Sửa] thì sẽ Enable nút [Tạo mới] (nếu nó đang Disable).
Vd: Code cho nút [Ghi] (cơ bản thôi)
-------------------------------------------------------------------------------      
Private cmdGhi_Click()
         Select Case Me.cmdTaoMoi.Enabled
              Case True    '-> Đang ở trạng thái 'Sửa'
                  'Không cần chạy code tạo mã HĐ
                  Chạy code cập nhật cho việc sửa dữ liệu
              Case False    '-> Đang ở trạng thái 'Tạo mới'
                  Chạy code tạo mã HĐ
                  Chạy code cập nhật dữ liệu mới
         End Select
End Sub
--------------------------------------------------------------------------------
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) ღღღღღ
Những người đã cảm ơn maidinhdan
#13
- Trong file mà bạn gửi tôi, nút [Sửa] chẳng có gì khác ngoại trừ lệnh SetFocus cho textbox NgayCT, có code gì để "Sửa" đâu mà nhảy số?
[Hình: 38282987751_ed4e14c4fc_z.jpg]

- Code tạo mã HD tăng tự động thì đơn giản nhưng để áp dụng vô một form nhập liệu tổng thể thì không đơn giản như bạn nghĩ chút nào.
- Những code cơ bản của nút "Ghi" làm những gì, và nút "Sửa" làm những gì, bạn còn chưa lập trình cho nó mà bạn đã nhảy vô code tự động tạo mã. Code nút [Ghi] hiện tại của bạn chỉ thực hiện một nhiệm vụ duy nhất là tạo Mã HĐ tự động - Xong => dịch code ra là mỗi lần bấm nút [Ghi] nó sẽ chạy lệnh và tạo mã mới, lưu vào trường [SoChungTu] của table, chỉ vậy thôi. Bạn phải ngâm cứu lại những cái cơ bản nhất của Access thôi. Bạm tham khảo bài này để biết code cho các nút [Thêm], [Sửa]... cho Bound Form của bạn.
http://thuthuataccess.com/forum/thread-8467.html
http://thuthuataccess.com/forum/thread-5855.html

Giả sử bạn đã biết code cho các nút [Thêm], [Ghi], [Sửa], [Xóa] rồi thì tôi nói về cái luồng xử lý của code tạo mã HĐ mới nó nằm ở phần nào trong code nút [Ghi]. Khi Form đang "Tạo mới" hay "Sửa", sau đó bạn đều phải bấm nút [Ghi] này để cập nhật dữ liệu vừa "Sửa" hay vừa "Tạo mới". Do vậy:
- Code tạo mới Mã HD chỉ cho chạy khi Form nhập liệu đang ở trạng thái là "Tạo mới" record (nhập liệu HĐ mới). Nếu trong trạng thái "Sửa" thì không cần chạy code này để tránh tạo mã và ghi đè lên record như file hiện tại của bạn. 
- Vậy vấn đề là làm sao phát hiện Form đang ở trạng thái "Tạo mới" hay trạng thái "Sửa"? Một thủ thuật tôi dùng là kiểm tra thuộc tính "Enabled" hay "Disable" các nút lệnh [Tạo mới] và [Sửa]. Khi bấm nút [Tạo mới] sẽ chạy code cho nó Disable luôn, sau khi [Ghi] sẽ "Enabled" lại. Khi bấm nút [Sửa] thì sẽ Enable nút [Tạo mới] (nếu nó đang Disable).
Vd: Code cho nút [Ghi] (cơ bản thôi)
-------------------------------------------------------------------------------      
Private cmdGhi_Click()
         Select Case Me.cmdTaoMoi.Enabled
              Case True    '-> Đang ở trạng thái 'Sửa'
                  'Không cần chạy code tạo mã HĐ
                  Chạy code cập nhật cho việc sửa dữ liệu
              Case False    '-> Đang ở trạng thái 'Tạo mới'
                  Chạy code tạo mã HĐ
                  Chạy code cập nhật dữ liệu mới
         End Select
End Sub
--------------------------------------------------------------------------------
[/quote]


Vậy mình sẽ thêm 1 cmd 'Lưu' nữa, để khỏi đụng chạm nút 'Ghi'. Nhưng như vậy thì không "pro" lắm. Vì mình thiết kế tất cả các form đều có 05 nút là: 'Sửa', 'Xóa', 'Thêm', 'Ghi', 'Không'. Như bạn thấy đó, tôi bấm 'Ghi' thì ok, đến khi bấm 'Sửa' (ví dụ tôi có 03 hóa đơn, lần lượt là: "001", "002", "003". Tôi sửa "001"), thì khi bấm 'Ghi', "001" thành "004"... và số "001" mất tích luôn... Nhức cái đầu...
Nếu có cách nào "pro" nhờ bạn chỉ giúp nha. Cám ơn nhiều!
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Những người đã cảm ơn
#14
(10-11-17, 12:17 PM)pherotao Đã viết: Vậy mình sẽ thêm 1 cmd 'Lưu' nữa, để khỏi đụng chạm nút 'Ghi'. Nhưng như vậy thì không "pro" lắm. Vì mình thiết kế tất cả các form đều có 05 nút là: 'Sửa', 'Xóa', 'Thêm', 'Ghi', 'Không'. Như bạn thấy đó, tôi bấm 'Ghi' thì ok, đến khi bấm 'Sửa' (ví dụ tôi có 03 hóa đơn, lần lượt là: "001", "002", "003". Tôi sửa "001"), thì khi bấm 'Ghi', "001" thành "004"... và số "001" mất tích luôn... Nhức cái đầu...
Nếu có cách nào "pro" nhờ bạn chỉ giúp nha. Cám ơn nhiều!

040 Thế quái nào mà mình càng làm nó càng rối nhỉ. 
Mình không hiểu nguời hay nguời không hiểu mình!!!
Chắc nhờ a tranthanhan1962 hay bạn nào khác có phuơng pháp "sư phạm" huớng dẫn cho dễ hiểu giùm. Phương pháp " sư hổ mang" của mình không truyền đạt đụơc.  008
008 

040  Hình như bạn không hiểu ý tôi trong bài viết trên.
Nút Lưu hay Ghi cũng như nhau thôi.
Bạn thử post một cái file hoàn chỉnh code 5 cái nút mà bạn nói xem thử nhé.
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) ღღღღღ
Những người đã cảm ơn
#15
Anh không đọc hết những gì bạn chủ top hỏi nhưng hình như bạn ấy hiểu chưa đúng trình tự, lập mã số tự nhảy là phải lập khi thêm mới chứ không ai lập lúc ghi chứng từ. Tại vì khi ghi chứng từ có 2 trường hợp : Ghi bản ghi mới và ghi bản ghi sửa. (Một bản ghi cứ sửa đi sửa lại thì cứ mọc ra liên tục các số thứ tự)
Trường hợp thêm mới thì chương trình sẽ đọc, kiểm tra đã ghi đến số bao nhiêu rồi và tự động cộng thêm 1 nữa là được
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Những người đã cảm ơn
#16
040 Thế quái nào mà mình càng làm nó càng rối nhỉ. 
Mình không hiểu nguời hay nguời không hiểu mình!!!
Chắc nhờ a tranthanhan1962 hay bạn nào khác có phuơng pháp "sư phạm" huớng dẫn cho dễ hiểu giùm. Phương pháp " sư hổ mang" của mình không truyền đạt đụơc.  008
008 

040  Hình như bạn không hiểu ý tôi trong bài viết trên.
Nút Lưu hay Ghi cũng như nhau thôi.
Bạn thử post một cái file hoàn chỉnh code 5 cái nút mà bạn nói xem thử nhé.
[/quote]

Nhờ bạn download file của mình và sử dụng thử. bạn sẽ thấy "bực mình" ngay thôi. Nhưng đúng như bạn nói: lúc đầu tôi cũng biết là số thứ tự tăng dần rất đơn giản, nhưng càng đi sâu, nó càng rối rắm và trở nên "vô duyên"...
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Những người đã cảm ơn
#17
Tôi đã làm demo trên bài bạn, bạn xem link này nhé: [Thủ Thuật] [Video+Demo] 2 Cách Tạo Số tăng dần và Reset theo nhu cầu

Thân mến!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Những người đã cảm ơn
#18
(11-11-17, 01:21 AM)maidinhdan Đã viết: Tôi đã làm demo trên bài bạn, bạn xem link này nhé: [Thủ Thuật] [Video+Demo] 2 Cách Tạo Số tăng dần và Reset theo nhu cầu

Thân mến!

"Ý số 01" và "Ý số 02" thì có nhiều cách giải quyết. Mình làm được. Chỉ còn "Ý số 03" là nan giải thật. Cảm ơn mọi người đã nhiệt tình trả lời bài của mình.
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Những người đã cảm ơn maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Click vào button mở form mới ngay dưới button đó mrsiro 1 157 22-09-18, 12:04 PM
Bài mới nhất: lmthu
  [Help] Kết quả tính toán theo dòng record tương ứng tvn_hut 5 549 02-06-18, 03:24 PM
Bài mới nhất: tvn_hut
  Xuất dữ liệu từ Access ra Excel theo điều kiện Minh Tiên 13 1,151 25-05-18, 07:06 PM
Bài mới nhất: ongke0711
  [Hỏi] Mã Số Nhân Viên Tự Động Tăng pherotao 9 997 24-12-17, 02:00 AM
Bài mới nhất: pherotao
Rainbow [Hàm] Tách file và đặt tên theo ý muốn teutamteu 3 491 18-12-17, 10:49 PM
Bài mới nhất: maidinhdan

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ơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line