Thủ Thuật Access

Phiên bản đầy đủ: Bẫy lỗi Unbound Form (Nhập liệu)
Bạn đang xem phiên bản rút gọn. Bạn có thể xem bản đầy đủ.
1. Không biết e có đặt cú pháp sai hay ko mà nó cứ báo lỗi là "Phải cập nhật chi tiết hàng hóa" mặc dù e đã bấm cập nhật rồi.



Đây là đoạn code của e ạ:

Mã:
Private Sub Ghi_Click()

   If IsNull(txtMaHD) Then
       MsgOut VniToUni(" Khoâng ñöôïc löu khi khoâng coù Maõ Hoùa Ñôn !              "), vbExclamation
       Nhap.SetFocus
   Exit Sub
   Else
   
   If IsNull(txtNgay) Then
       MsgOut VniToUni(" Khoâng ñöôïc löu khi Chöa choïn Ngaøy !              "), vbExclamation
       txtNgay.SetFocus
       Exit Sub
   Else
   
   If IsNull(txtNgay) Then
       MsgOut VniToUni(" Khoâng ñöôïc löu khi Chöa choïn Ngaøy !              "), vbExclamation
       txtNgay.SetFocus
   Exit Sub
   Else
   
   If IsNull(txtMaKH) Then
       MsgOut VniToUni(" Khoâng ñöôïc löu khi Chöa choïn Khaùch haøng !              "), vbExclamation
       txtMaKH.SetFocus
       txtMaKH.Dropdown
   Exit Sub
   Else
   
   If IsNull(txtMaNV) Then
       MsgOut VniToUni(" Khoâng ñöôïc löu khi Chöa choïn Nhaân vieân !              "), vbExclamation
       txtMaNV.SetFocus
       txtMaNV.Dropdown
   Exit Sub
   Else
     
   If IsNull(List_HH) Then
       MsgOut VniToUni(" Phaûi Caäp nhaät Chi tieát Haøng Hoùa !              "), vbExclamation
       Them.SetFocus
   Exit Sub
   Else

   Set Db = CurrentDb
   Set rs_ghiHD = Db.OpenRecordset("SELECT * FROM T_HoaDon_NX")
       
       rs_ghiHD.AddNew
           
       rs_ghiHD("MaHD") = Me.txtMaHD.Value
       rs_ghiHD("SoHD") = Me.txtSoHD.Value
       rs_ghiHD("LoaiHD") = Me.txtLoaiHD.Value
       rs_ghiHD("Ngay") = Me.txtNgay.Value
       rs_ghiHD("MaKH") = Me.txtMaKH.Value
       rs_ghiHD("MaNV") = Me.txtMaNV.Value
       rs_ghiHD("GhiChu") = Me.txtGhiChu.Value
       
       rs_ghiHD.Update
           
       rs_ghiHD.Close
       
       
       DoCmd.SetWarnings False
       DoCmd.RunSQL ("INSERT INTO T_HangHoa_NX ( MaHD, MaHH, DonGia, SoLuong, ThanhTien ) SELECT T_HangHoa_NX_Temp.MaHD, T_HangHoa_NX_Temp.MaHH, T_HangHoa_NX_Temp.DonGia, T_HangHoa_NX_Temp.SoLuong, T_HangHoa_NX_Temp.ThanhTien FROM T_HangHoa_NX_Temp")
       DoCmd.RunSQL ("DELETE T_HangHoa_NX_Temp.* FROM T_HangHoa_NX_Temp")
       DoCmd.SetWarnings True
       
       Me.txtMaHD = Null
       Me.txtNgay = Date
       Me.txtMaKH = Null
       Me.txtDiaChi = Null
       Me.txtMST = Null
       Me.txtDienThoai = Null
       Me.txtMaNV = Null
       Me.txtGhiChu = Null
       List_HH.Requery
       
   End If
   End If
   End If
   End If
   End If
   End If
End Sub

2. E có thử test listbox (List_HH) có rỗng hay không, nếu rỗng thì 0, ngược lại là 1. Nhưng kết quả trả về luôn là 1, mặc dù e đã xóa sạch trong listbox.

Nhờ anh / chị giúp e ạ!
Với list box thì bạn nên dùng thuộc tính ListCount:

Mã:
If List_HH.ListCount = 0 Then
      MsgOut VniToUni(" Phaûi Caäp nhaät Chi tieát Haøng Hoùa !              "), vbExclamation
      Them.SetFocus
  Exit Sub
Em đã thêm Exit Sub vào rồi thì để End IF ở chỗ dưới có tác dụng gì nữa đâu.
Em thử Code dưới xem sao

Mã:
Private Sub Ghi_Click()

   If IsNull(txtMaHD) Then
       MsgOut VniToUni(" Khoang nooic lou khi khoang cou Mao Houa Non !              "), vbExclamation
       Nhap.SetFocus
       Exit Sub
   ElseIf IsNull(txtNgay) Then
       MsgOut VniToUni(" Khoang nooic lou khi Choa choin Ngaoy !              "), vbExclamation
       txtNgay.SetFocus
       Exit Sub
   ElseIf IsNull(txtNgay) Then
       MsgOut VniToUni(" Khoang nooic lou khi Choa choin Ngaoy !              "), vbExclamation
       txtNgay.SetFocus
       Exit Sub
   ElseIf IsNull(txtMaKH) Then
       MsgOut VniToUni(" Khoang nooic lou khi Choa choin Khauch haong !              "), vbExclamation
       txtMaKH.SetFocus
       txtMaKH.Dropdown
       Exit Sub
   ElseIf IsNull(txtMaNV) Then
       MsgOut VniToUni(" Khoang nooic lou khi Choa choin Nhaan viean !              "), vbExclamation
       txtMaNV.SetFocus
       txtMaNV.Dropdown
       Exit Sub
   ElseIf IsNull(List_HH) Then
       MsgOut VniToUni(" Phaui Caap nhaat Chi tieat Haong Houa !              "), vbExclamation
       Them.SetFocus
       Exit Sub
   End If

   Set Db = CurrentDb
   Set rs_ghiHD = Db.OpenRecordset("SELECT * FROM T_HoaDon_NX")
   
   rs_ghiHD.AddNew
       
   rs_ghiHD("MaHD") = Me.txtMaHD
   rs_ghiHD("SoHD") = Me.txtSoHD
   rs_ghiHD("LoaiHD") = Me.txtLoaiHD
   rs_ghiHD("Ngay") = Me.txtNgay
   rs_ghiHD("MaKH") = Me.txtMaKH
   rs_ghiHD("MaNV") = Me.txtMaNV
   rs_ghiHD("GhiChu") = Me.txtGhiChu
   
   rs_ghiHD.Update
       
   rs_ghiHD.Close
   
   DoCmd.SetWarnings False
   DoCmd.RunSQL ("INSERT INTO T_HangHoa_NX ( MaHD, MaHH, DonGia, SoLuong, ThanhTien ) SELECT T_HangHoa_NX_Temp.MaHD, T_HangHoa_NX_Temp.MaHH, T_HangHoa_NX_Temp.DonGia, T_HangHoa_NX_Temp.SoLuong, T_HangHoa_NX_Temp.ThanhTien FROM T_HangHoa_NX_Temp")
   DoCmd.RunSQL ("DELETE T_HangHoa_NX_Temp.* FROM T_HangHoa_NX_Temp")
   DoCmd.SetWarnings True
   
   Me.txtMaHD = Null
   Me.txtNgay = Date
   Me.txtMaKH = Null
   Me.txtDiaChi = Null
   Me.txtMST = Null
   Me.txtDienThoai = Null
   Me.txtMaNV = Null
   Me.txtGhiChu = Null
   List_HH.Requery
     
End Sub