Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Form danh sách khách hàng với nhiều hỗ trợ
#1
Một form nhập liệu khách hàng tưởng chừng đơn giản, nhưng nếu thiết kế không khoa học sẽ dễ bị phát sinh những lỗi không đáng có: dữ liệu bị trùng lập (một khách hàng có nhiều tên), trong tên sẽ có những khoảng trắng thừa, chữ hoa - chữ thường lột xộn v.v…
Với form Danh sách khách hàng của mình có thể giải quyết một số vấn đề như thế, mình post lên để các bạn tham khảo.
Những vần đề được giải quyết.
1/ Thông báo vị trí đầu, cuối, record mới.
2/ Cấm nhập khách hàng đã có mã số thuế với tên mới. (vì mã số thuế công ty giống như số CMND).
3/ Xử lý các khoảng trắng thừa.
4/ Chuyển chữ hoa toàn bộ tên khách hàng.

[Hình: w2x37AR.png]

[Hình: VHyV0r8.png]

demo
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , ongke0711 , bvchauthanh
#2
(29-06-15, 12:18 AM)tranthanhan1962 Đã viết: Một form nhập liệu khách hàng tưởng chừng đơn giản, nhưng nếu thiết kế không khoa học sẽ dễ bị phát sinh những lỗi không đáng có: dữ liệu bị trùng lập (một khách hàng có nhiều tên), trong tên sẽ có những khoảng trắng thừa, chữ hoa - chữ thường lột xộn v.v…
Với form Danh sách khách hàng của mình có thể giải quyết một số vấn đề như thế, mình post lên để các bạn tham khảo.
Những vần đề được giải quyết.
1/ Thông báo vị trí đầu, cuối, record mới.
2/ Cấm nhập khách hàng đã có mã số thuế với tên mới. (vì mã số thuế công ty giống như số CMND).
3/ Xử lý các khoảng trắng thừa.
4/ Chuyển chữ hoa toàn bộ tên khách hàng.

[Hình: w2x37AR.png]

[Hình: VHyV0r8.png]

demo
Mình xem qua demo rồi mà chưa hiểu lắm.
bạn có thể hướng dẫn chi tiết cho mình cách làm thông báo trùng mả số thuế như vậy để mình làm mã số hs dc ko bạn?
Chữ ký của rainkv rainkv,gia nhập Thủ Thuật Access từ 12-07 -15.
Reply
Những người đã cảm ơn
#3
(15-07-15, 07:22 PM)rainkv Đã viết: Mình xem qua demo rồi mà chưa hiểu lắm.
bạn có thể hướng dẫn chi tiết cho mình cách làm thông báo trùng mả số thuế như vậy để mình làm mã số hs dc ko bạn?

Có nhiều cách để xử lý việc trùng mã số. (Ví vụ field mã số có tên là MSo)
Cách thứ 1
Đặt Mso là khóa chính. Khi Bạn nhập trùng MSo Access sẽ báo lỗi như thế này:
“The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship.  Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.”
Đây là lỗi 3022
Nếu bạn không muốn acess báo bằng tiếng anh bạn có thể xử lý trong event Form Error
 

Mã PHP:
Private Sub Form_Error(DataErr As IntegerResponse As Integer)
Response acDataErrContinue
   
If DataErr 3022 Then
      MsgBox 
("Da bi trung ma hoc sinh.")
      Response 0
         End 
If
End Sub 

 
Access cho phép bạn nhập trùng khóa chính khi đang nhập dữ liệu trong record, chỉ khi nào bạn chuyển sang record khác hay close form access mới báo lỗi 3022
 
Cách thứ 2
Trường hợp bạn không muốn đợi access bắt lỗi 3022. Bạn xử lý bằng phương pháp của mình ngay khi nhập mã. Dùng hàm Dlookup tìm MSo trùng với Mso mới đánh vào xử lý ở Event  Form BeforeUpdate
Giả sử ta có table tên là DANHSACHHOCSINH, có field Mso không được trùng.
 

Mã PHP:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strCriteria As String
Dim intResponse 
As Integer
strCriteria 
DLookup("[MSo]""DANHSACHHOCSINH"_
      
"[MSo] = Form![MSo]")
If 
DCount("*""DANHSACHHOCSINH"strCriteria) > 0 Then
              MsgBox 
("Da bi trung ma hoc sinh.")
            Me.Undo
End 
If
End Sub 

 
Khi bạn vừa thoát khỏi textbox Mso lỗi sẽ được báo ngay lập tức đồng thời xóa bỏ ngay Mso mới nhập.
Trường hợp bạn không muốn viết code. Bạn có thể đưa strCriteria vào Validation Rule. Còn thông báo đưa vào Validation Text.
 
Validation Rule = DLookup("[MSo]"; "DANHSACHHOCSINH"; "[MSo] = Form![MSo]")
Validation Text = Đã bị trùng mã học sinh.
 
Mấy cái đoạn VietUniMsgBox "Mã s" & ChrW(7889) & " thu" …Chẳng qua là đoạn dịch ra mã VBA ký tự có dấu tiếng Việt để không bị lỗi Font Unicode.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn rainkv , maidinhdan
#4
B
(15-07-15, 11:18 PM)tranthanhan1962 Đã viết:
(15-07-15, 07:22 PM)rainkv Đã viết: Mình xem qua demo rồi mà chưa hiểu lắm.
bạn có thể hướng dẫn chi tiết cho mình cách làm thông báo trùng mả số thuế như vậy để mình làm mã số hs dc ko bạn?

Có nhiều cách để xử lý việc trùng mã số. (Ví vụ field mã số có tên là MSo)
Cách thứ 1
Đặt Mso là khóa chính. Khi Bạn nhập trùng MSo Access sẽ báo lỗi như thế này:
“The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship.  Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.”
Đây là lỗi 3022
Nếu bạn không muốn acess báo bằng tiếng anh bạn có thể xử lý trong event Form Error
 

Mã PHP:
Private Sub Form_Error(DataErr As IntegerResponse As Integer)
Response acDataErrContinue
   
If DataErr 3022 Then
      MsgBox 
("Da bi trung ma hoc sinh.")
      Response 0
         End 
If
End Sub 

 
Access cho phép bạn nhập trùng khóa chính khi đang nhập dữ liệu trong record, chỉ khi nào bạn chuyển sang record khác hay close form access mới báo lỗi 3022
 
Cách thứ 2
Trường hợp bạn không muốn đợi access bắt lỗi 3022. Bạn xử lý bằng phương pháp của mình ngay khi nhập mã. Dùng hàm Dlookup tìm MSo trùng với Mso mới đánh vào xử lý ở Event  Form BeforeUpdate
Giả sử ta có table tên là DANHSACHHOCSINH, có field Mso không được trùng.
 

Mã PHP:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strCriteria As String
Dim intResponse 
As Integer
strCriteria 
DLookup("[MSo]""DANHSACHHOCSINH"_
      
"[MSo] = Form![MSo]")
If 
DCount("*""DANHSACHHOCSINH"strCriteria) > 0 Then
              MsgBox 
("Da bi trung ma hoc sinh.")
            Me.Undo
End 
If
End Sub 

 
Khi bạn vừa thoát khỏi textbox Mso lỗi sẽ được báo ngay lập tức đồng thời xóa bỏ ngay Mso mới nhập.
Trường hợp bạn không muốn viết code. Bạn có thể đưa strCriteria vào Validation Rule. Còn thông báo đưa vào Validation Text.
 
Validation Rule = DLookup("[MSo]"; "DANHSACHHOCSINH"; "[MSo] = Form![MSo]")
Validation Text = Đã bị trùng mã học sinh.
 
Mấy cái đoạn VietUniMsgBox "Mã s" & ChrW(7889) & " thu" …Chẳng qua là đoạn dịch ra mã VBA ký tự có dấu tiếng Việt để không bị lỗi Font Unicode.
 Cám ơn tranthanhan1962 rất nhiều, bạn hướng dẫn như vậy thì quá rõ ràng rồi. Mình nghĩ nên đánh dấu câu trả lời của bạn để ae học acc sau này sẽ cần đến.
Nhưng mình muốn làm để hiên số record trên form như của bạn thì mình phải làm thế nào?mong bạn hướng dẫn giúp mình nhé!
Chữ ký của rainkv rainkv,gia nhập Thủ Thuật Access từ 12-07 -15.
Reply
Những người đã cảm ơn
#5
- Sao mình làm bằng đoạn này: 
Mã PHP:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strCriteria As String
Dim intResponse 
As Integer
strCriteria 
DLookup("[MSo]""DANHSACHHOCSINH"_
     
"[MSo] = Form![MSo]")
If 
DCount("*""DANHSACHHOCSINH"strCriteria) > 0 Then
             MsgBox 
("Da bi trung ma hoc sinh.")
           Me.Undo
End 
If
End Sub 

 mà khi vừa thoát khỏi textbox Maso vẫn không báo lỗi đến khi mình nhấn vào button Lưu mới báo lỗi là sao vậy ban?
hơn nữa mình ko muốn khi xóa tất cả record đó khi báo lỗi trùng mã số thì làm sao bạn?
Chữ ký của rainkv rainkv,gia nhập Thủ Thuật Access từ 12-07 -15.
Reply
Những người đã cảm ơn
#6
(16-07-15, 07:17 AM)rainkv Đã viết:  mà khi vừa thoát khỏi textbox Maso vẫn không báo lỗi đến khi mình nhấn vào button Lưu mới báo lỗi là sao vậy ban?
hơn nữa mình ko muốn khi xóa tất cả record đó khi báo lỗi trùng mã số thì làm sao bạn?

Bạn đưa lên để mình xem sao?
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (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ỏi] Cách thêm dữ liệu vào form Main_Sub NganNguyen 1 29 11 Giờ trước
Bài mới nhất: maidinhdan
  Tự động hiện Form khi loading hết thời gian ChiMai 1 44 02-12-16, 08:59 PM
Bài mới nhất: ongke0711
  [Help] Cập nhật combobox 2 từ combobox 1 (dữ liệu ở nhiều bảng) votinh.tq 6 205 22-11-16, 11:34 PM
Bài mới nhất: votinh.tq
Photo [Hỏi] Mở Form trên access 2007 báo lỗi jason 5 193 22-11-16, 09:23 AM
Bài mới nhất: jason
  Query hiện lên trên form? feeling 4 164 09-11-16, 09:49 PM
Bài mới nhất: toancvp

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ơ