Xử lý dữ liệu trùng

Liên hệ QC

adult

Thành viên hoạt động
Tham gia
2/12/07
Bài viết
193
Được thích
30
Các anh chị vui lòng cho mình hỏi. Vừa qua mình có download được 1 file login, username trùng thì đc, nhưng user code trùng sẽ báo lỗi.
Mình đã vận dùng để làm vào công việc mình, nhưng trong quá trình thực hiện, mình đã copy y chang nhưng không hiểu tại sao lại bị báo lỗi.
Xin vui lòng xem file đính kèm.
Xin chân thành cám ơn

Các anh chị sao không ai chịu bỏ chút thời gian để giúp em hết vậy? Kiến thức VBA của em rất yếu.Các anh chị vui lòng giúp em nhé
Xin chân thành cám ơn!!!
 

File đính kèm

  • ListBoxForLogIn.xls
    41.5 KB · Đọc: 53
Các anh chị vui lòng cho mình hỏi. Vừa qua mình có download được 1 file login, username trùng thì đc, nhưng user code trùng sẽ báo lỗi.
Mình đã vận dùng để làm vào công việc mình, nhưng trong quá trình thực hiện, mình đã copy y chang nhưng không hiểu tại sao lại bị báo lỗi.
Xin vui lòng xem file đính kèm.
Xin chân thành cám ơn
1. Bạn copy y chang nhưng đầu module của bạn có dòng Option Explicit nên các biến bắt buộc phải khai báo. Do đó:
- Bạn phải khai báo thêm biến a
- Hoặc xóa dòng Option Explicit
2. Trong code của bạn:
Mã:
If ListBox1.List(Zi, 1) = usercode.Value Then
   MyCheck = True
   Unload Me
ElseIf ListBox1.List(Zi, 1) = usercode.Value Then _
  a = MsgBox("New UserCode has already exist! Please choose another UserCode or change the UserName!", vbCritical, "Warning")
  Exit Sub
End If

2 câu If ListBox1.List ...ElseIf ListBox1.List... thật ra là một nên bạn chỉ cần viết:

Mã:
Private Sub usercode_Change()
If (usercode <> "" And IsNull(usercode) = False) Then
  Dim MyListRow As Integer, MyCheck As Boolean, Zi As Long
  MyCheck = False
  MyListRow = ListBox1.ListCount
  For Zi = 0 To MyListRow - 1
    If ListBox1.List(Zi, 1) = usercode.Value Then
      MyCheck = True
      Unload Me
    End If
  Next Zi
End If
End Sub
 
Upvote 0
Xin cám ơn thầy Long. Code trong file em đã sửa lại , bỏ những phần không cần thiết áp dụng trong cviệc. Tiễn phật thì tiễn đến Tây Phương, thầy Long có thể giúp em chỉnh sửa code trên sao cho không phân biệt chữ thường và hoa.Hiện nay nó đang phân biệt chữ Hoa và thường.
Xin chân thành cám ơn!!!
 
Upvote 0
Xin cám ơn thầy Long. Code trong file em đã sửa lại , bỏ những phần không cần thiết áp dụng trong cviệc. Tiễn phật thì tiễn đến Tây Phương, thầy Long có thể giúp em chỉnh sửa code trên sao cho không phân biệt chữ thường và hoa.Hiện nay nó đang phân biệt chữ Hoa và thường.
Xin chân thành cám ơn!!!
Em dùng hàm LCase chuyển sang chữ thường cả 2 vế để so sánh:

Mã:
If LCase(ListBox1.List(Zi, 1)) = LCase(usercode.Value) Then
 
Upvote 0
Nếu bị overflow run-time "6" vì khai báo integer thì biến đó em khai báo lại là Long:
Số nguyên từ -2.147.483.648 to 2.147.483.647
to adult: tôi bấm lộn nên bài trả lời lại đã xóa mất bài của adult
 
Lần chỉnh sửa cuối:
Upvote 0
Khai báo Integer thì phạm vi số nguyên từ -32.768 > 32.767
Nếu số nguyên lớn hơn em có thể khai báo lại là Long: từ -2.147.483.648 > 2.147.483.647
Còn lớn hơn nữa khai báo Double
 
Upvote 0
hix, vậy Thầy cho em hỏi bài viết trước của em có liên quan đến câu hỏi khi em đổi từ usercode_change sang usercode_afterUpdate thì xuất hiện lỗi Run-time error '-2147417848 mặc dù đã chọn khai báo long thay cho integer thì sao Thầy Long?

Xin chào thầy Long! Cuối cùng thì em đã tìm ra giải pháp khắc phục lỗi overflow rồi. Có lẻ do thầy quá bận nên không thể giúp em được nhưng không sao ạh, tự tìm kiếm trước khi nhờ vã cũng là 1 điều cần phải làm. Dữ liệu của em nay đã có thể xuống đến dòng 65536 mà vẫn không bị lỗi trên và tốc độ tìm kiếm rất nhanh. Chắc hẳn code trong file này còn dư thừa nhiều so với những gì em mong muốn. Mong thầy xem nếu tiện thì thầy tiện thể gọt giũa luôn giúp em cũng đc ạh. hì hì, khi nhìn vào code thầy đừng ngạc nhiên nhé+-+-+-+
Chúc thầy cuối tuần vui vẻ!
Thanks
 

File đính kèm

  • ListBoxForLogIn_edit.rar
    649.6 KB · Đọc: 152
Upvote 0
Xin chào thầy Long! Cuối cùng thì em đã tìm ra giải pháp khắc phục lỗi overflow rồi. Có lẻ do thầy quá bận nên không thể giúp em được nhưng không sao ạh, tự tìm kiếm trước khi nhờ vã cũng là 1 điều cần phải làm. Dữ liệu của em nay đã có thể xuống đến dòng 65536 mà vẫn không bị lỗi trên và tốc độ tìm kiếm rất nhanh. Chắc hẳn code trong file này còn dư thừa nhiều so với những gì em mong muốn. Mong thầy xem nếu tiện thì thầy tiện thể gọt giũa luôn giúp em cũng đc ạh. hì hì, khi nhìn vào code thầy đừng ngạc nhiên nhé+-+-+-+
Chúc thầy cuối tuần vui vẻ!
Thanks
Quả thật không biết nguyên nhân lỗi do đâu nên không giúp em được. Có lẽ nó còn tùy thuộc vào trường hợp cụ thể nào đó mà tôi chưa gặp phải. Em đã phát hiện ra lỗi và xử lý được rất hoan nghênh. Em có thể nói cụ thể hơn việc gây lỗi và cách xử lý lỗi để anh gọt giũa lại.
Thân.
 
Upvote 0
em cũng kô thật sự hiểu rõ nhưng theo kiến thức lơ tơ mơ của em thu thập được thì khi sử dụng vòng for ....next chỉ sử dụng được với 1 số dữ liệu nhỏ , và phương thức tìm của nó là từng dòng. Còn sử dụng find và do....loop sẽ đc dùng trong cấu trúc có dữ liệu nhiều.Và theo em biết ít ai sử dụng for...next để tìm kiếm, đa số sử dụng hàm find....
- Do kiến thức của em bị giới hạn nên sử dụng công thức trên hơi biến tấu chút. Có sử dụng thêm 1 giai đoạn trung gian là label1(dulieutrung) trên form. Em muốn nhờ Mr. Long chỉnh sửa giúp bỏ luôn giai đoạn trung gian đó ạh.
thanks
 
Upvote 0
Web KT
Back
Top Bottom