Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Lỗi] Code nút lưu dữ liệu
#1
Anh chị ơi, giúp em với!
Em muốn tạo 1 cái form cập nhật thông tin giới thiệu học viên. Nhưng khi viết nút lưu thì lại bị lỗi, mấy table khác e làm code này chạy rất mướt nhưng với table này lại có vấn đề vì table này có tới 2 khóa chính( khóa đôi), em không thể nào nhập mã học viên giới thiệu được nhiều lần theo đúng nghĩa của khóa đôi. table của em như sau: GIOITHIEU( mahv_gt, mahv_dgt, chietkhau, ghichu) và hàm của nút lưu như sau:
Mã PHP:
Private Sub luu()
Dim db As Database
      Dim rc 
As Recordset
      Dim cm
      Dim str
      Dim dung 
As Boolean
    
       
If IsNull(Me.mahv_gt) = True Or IsNull(Me.mahv_dgt) = True Then
          str 
MsgBox("Ma hoc vien khong duoc bo trong!"vbInformation"Thông Báo")
          Exit 
Sub
       End 
If
       
       
dung False
  Set db 
CurrentDb()
  
Set rc db.OpenRecordset("gioithieu")
  
cm Me.mahv_gt.Value
  
'cm1 = Me.mahv_dgt.Value
   Do Until rc.EOF
   If rc![mahv_gt] = cm Then
    dung = True
    End If
   rc.MoveNext
   Loop
   rc.Close
   If dung = True Then
str = MsgBox("Ma hoc vien nay da ton tai!!Ban co muon thay doi thong tin khong?", vbYesNo + vbInformation, "Thông Báo")
If str = vbYes Then
DoCmd.RunCommand acCmdSaveRecord
Me.cmdke.Enabled = True
Me.cmddau.Enabled = True
Me.cmdcuoi.Enabled = True
Me.cmdsua.Enabled = True
Me.cmdthem.Enabled = True
Me.cmdthoat.Enabled = True
Me.cmdtruoc.Enabled = True
Me.cmdxoa.Enabled = True
Me.cmdhuy.Enabled = True
End If
     Exit Sub
   End If
   
   If IsNull(Me.mahv_gt) = True Or IsNull(Me.mahv_dgt) = True Or IsNull(Me.chietkhau) = True Or IsNull(Me.ghichu) = True Then
        str = MsgBox("Ban can dien day du thong tin!!", vbInformation, "Thông Báo")
      Exit Sub
    End If
              
    If IsNull(Me.mahv_gt) = False And IsNull(Me.mahv_dgt) = False And IsNull(Me.chietkhau) = False And IsNull(Me.ghichu) = False And dung = False Then
    DoCmd.RunCommand acCmdSaveRecord
    str = MsgBox("Ban da luu thanh cong!", vbInformation, "Thông Báo")
    Me.cmdthem.Enabled = True
    Me.cmdtruoc.Enabled = True
    Me.cmdke.Enabled = True
    Me.cmddau.Enabled = True
    Me.cmdcuoi.Enabled = True
    Me.cmdsua.Enabled = True
    Me.cmdxoa.Enabled = True
    Me.cmdthoat.Enabled = True
    Me.cmdhuy.Enabled = True
    Exit Sub
    End If
End Sub 
Xin mọi người chỉ giáo! Em cảm ơn rất nhiều!
Chữ ký của maixuanthu Kiên trì và bình tĩnh sẽ giúp bạn thành công!
Reply
Những người đã cảm ơn
#2
Xem code của bạn, mình có nhận xét sau:
- Code của bạn chỉ làm cho vui thôi thì được, dùng cho dữ liệu số lớn sẽ sụp hệ thống vì câu lệnh này:
Mã PHP:
Set rc db.OpenRecordset("gioithieu")
  
cm Me.mahv_gt.Value
  cm1 
Me.mahv_dgt.Value
Do Until rc.EOF
   
If rc![mahv_gt] = cm Then
    dung 
True
    End 
If
   
rc.MoveNext
   Loop
   rc
.Close
   
If dung True Then
str 
MsgBox("Ma hoc vien nay da ton tai!!Ban co muon thay doi thong tin khong?"vbYesNo vbInformation"Thông Báo"

Như câu này, con trỏ sẽ phải quét toàn bộ bảng "Giới thiệu" và giả sử bảng này có 10 ngàn dòng thì đó đã là vấn đề rồi chứ đừng nói 1 triệu dòng. Vì vậy, mình khuyến cáo thay dòng:
Mã:
Set rc = db.OpenRecordset("gioithieu")
Thành dòng
Mã:
Set rc = db.OpenRecordset("select * from gioithieu where mahv_gt='" & Me.mahv_gt &"'" )

Thứ 2, vì mình không có trong tay chương trình của bạn, nhưng lỗi có thể phát xuất từ dòng
Mã:
If rc![mahv_gt] = cm Then
Theo như code này, nếu đã có mã học viên rồi thì nó yêu cầu đổi thông tin, như vậy code lưu của bạn thất bại. Bạn nên chú ý sửa chỗ này.

Cuối cùng bạn nên post chương trình của bạn lên để mọi người tiện trong việc supports.
Thân chào
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Em cảm ơn anh, đây là bài của em, anh xem giùm em. Em cảm ơn nhiều!
http://www.mediafire.com/download/l8mm3a...ocvien.rar
Chữ ký của maixuanthu Kiên trì và bình tĩnh sẽ giúp bạn thành công!
Reply
Những người đã cảm ơn
#4
Như mình đã góp ý, bạn đã có chỉnh sửa gì chưa? Mình không có chủ trương làm hộ đâu!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
Có chỉ gì đâu mà nói em sửa chứ anh? Em hỏi a chuyện bị lỗi của khóa đôi nhưng a đâu có nói e sửa như thế nào đâu? Em cũng biết lỗi ở chỗ đó, nhưng không biết sửa như thế nào nên e mới up bài lên cho a xem và sửa cho em đó anh. Mong anh giúp em lần nữa. Em cảm ơn a nhiều!
Chữ ký của maixuanthu Kiên trì và bình tĩnh sẽ giúp bạn thành công!
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 37 06-12-16, 02:23 AM
Bài mới nhất: maidinhdan
  [Help] Cập nhật combobox 2 từ combobox 1 (dữ liệu ở nhiều bảng) votinh.tq 6 208 22-11-16, 11:34 PM
Bài mới nhất: votinh.tq
  [Hỏi] Tổng hợp dữ liệu theo thời gian hoanghai902 1 140 21-10-16, 09:55 PM
Bài mới nhất: maidinhdan
  [Help] Áp dụng query lọc dữ liệu nhập vào form amazonvn82 8 1,348 05-10-16, 03:11 PM
Bài mới nhất: amazonvn82
  Click đúp chuột hiện form và cập nhật dữ liệu theo số phiếu Ranju 1 131 05-10-16, 11:02 AM
Bài mới nhất: lmthu

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ơ