-
Lỗi cannot Update.
huuduy.duy > 27-06-18, 02:21 PM
Chào các anh chị
Nhờ các anh chị giúp em khắc phục lỗi Cannot update. Databse or object is read only, khi em Click save
Ps: Trên Form frmThongKeCongDoan, có phần nhập giờ bắt đàu và kết thúc, cho em hỏi, có cách nào để nhập giờ được nhanh hơn không?
Link
-
RE: Lỗi cannot Update.
ongke0711 > 27-06-18, 03:24 PM
- Query source của SubForm có các trường tính toán nên nó không thể cập nhật dữ liệu được và nó cũng khoá luôn cái table bạn cần "AddNew". Bạn nên thiết kế lại subF hoặc gọi form cập nhật theo cách khác didi.
- Trong code của bạn tôi thấy bạn đặt tên biến trùng tên các table -> nó vẫn chạy nhưng sẽ gây khó khi sửa code: không biến nó là biến hay tên table và gây khó khăn cho code VBA nó cũng phải tự suy và đặt tên table vô dấu ngoặc vuông [..] để tránh xử lý sai. -> nên bỏ cách đặt tên như vậy.
Mã PHP:Set tblThongKeCongDoan = CurrentDb.OpenRecordset("SELECT * FROM [tblThongKeCongDoan]")
-
RE: Lỗi cannot Update.
huuduy.duy > 27-06-18, 04:06 PM
(27-06-18, 03:24 PM)ongke0711 Đã viết: - Query source của SubForm có các trường tính toán nên nó không thể cập nhật dữ liệu được và nó cũng khoá luôn cái table bạn cần "AddNew". Bạn nên thiết kế lại subF hoặc gọi form cập nhật theo cách khác didi.
- Trong code của bạn tôi thấy bạn đặt tên biến trùng tên các table -> nó vẫn chạy nhưng sẽ gây khó khi sửa code: không biến nó là biến hay tên table và gây khó khăn cho code VBA nó cũng phải tự suy và đặt tên table vô dấu ngoặc vuông [..] để tránh xử lý sai. -> nên bỏ cách đặt tên như vậy.
Mã PHP:Set tblThongKeCongDoan = CurrentDb.OpenRecordset("SELECT * FROM [tblThongKeCongDoan]")
Còn phầnmình xử lý sao anh?Mã PHP:Trên Form frmThongKeCongDoan, có phần nhập giờ bắt đàu và kết thúc, cho em hỏi, có cách nào để nhập giờ được nhanh hơn không?
anh có thể giúp em?Mã PHP:Bạn nên thiết kế lại subF hoặc gọi form cập nhật theo cách khác didi.
-
RE: Lỗi cannot Update.
ongke0711 > 28-06-18, 10:03 PM
- Anh mới xem lại form của em thì thấy trong subform - Form Properties - Data -> em set Record Locks: All records -> phải đổi lại thành "No lock" thì mới update được. Còn query của subF em cứ giữ nguyên. Post trên anh trả lời sai.
- Còn về việc nhập cái textbox giờ bắt đầu/ kết thúc: anh nghĩ em nên thiết kế 2 field này dạng TEXT và có thiết lập Input Mask cho nó để người dùng dễ nhập liệu. Input mask: 00:00;0;_
Lý do: Nếu Field này em dùng định dạng DateTime nhưng Format dạng “ShortTime”, khi hiển thị nó hiển thị đúng yêu cầu của em là “hh:nn” nhưng thực tế mặc định của nó sẽ tự động gán ngày “30/12/1899” vào trước cái giờ: phút em nhập. Em có thể dùng hàm Format([Bat-Dau],”yyyy-mm-dd”) sẽ thấy ngay. Khi đó nếu có tính toán liên quan đến thời gian của field này sẽ cho kết quả không chính xác.
Sau này nếu có tính toán thì có thể dùng công thức sau để kết hợp [Ngày] và [Giờ] như sau:
dteNgayGioBatDau=Me.txtNgayThucHien+TimeValue(Me.txtBatDau)
-
RE: Lỗi cannot Update.
huuduy.duy > 29-06-18, 11:48 AM
(28-06-18, 10:03 PM)ongke0711 Đã viết: - Anh mới xem lại form của em thì thấy trong subform - Form Properties - Data -> em set Record Locks: All records -> phải đổi lại thành "No lock" thì mới update được. Còn query của subF em cứ giữ nguyên. Post trên anh trả lời sai.
Cảm ơn anh, em đã khắc phục được lỗi trên rồi.
- Còn về việc nhập cái textbox giờ bắt đầu/ kết thúc: anh nghĩ em nên thiết kế 2 field này dạng TEXT và có thiết lập Input Mask cho nó để người dùng dễ nhập liệu. Input mask: 00:00;0;_
Lý do: Nếu Field này em dùng định dạng DateTime nhưng Format dạng “ShortTime”, khi hiển thị nó hiển thị đúng yêu cầu của em là “hh:nn” nhưng thực tế mặc định của nó sẽ tự động gán ngày “30/12/1899” vào trước cái giờ: phút em nhập. Em có thể dùng hàm Format([Bat-Dau],”yyyy-mm-dd”) sẽ thấy ngay. Khi đó nếu có tính toán liên quan đến thời gian của field này sẽ cho kết quả không chính xác.
Sau này nếu có tính toán thì có thể dùng công thức sau để kết hợp [Ngày] và [Giờ] như sau:
dteNgayGioBatDau=Me.txtNgayThucHien+TimeValue(Me.txtBatDau)
Cũng ở form ThongKeCongDoan, khi em Click Save lần 1, thì báo cập nhật thành công, mặc dù chưa nhập dữ liệu gì hết, nhưng khi click lần thứ 2 trở đi (cũng chưa nhập dữ liệu vào các textbox) thì mới báo lỗi chưa điền đầy đủ thông tin.
Nhờ anh kiểm tra giúp em.
Trân trọng cảm ơn -
RE: Lỗi cannot Update.
ongke0711 > 30-06-18, 06:38 PM
(29-06-18, 11:48 AM)huuduy.duy Đã viết: Cũng ở form ThongKeCongDoan, khi em Click Save lần 1, thì báo cập nhật thành công, mặc dù chưa nhập dữ liệu gì hết, nhưng khi click lần thứ 2 trở đi (cũng chưa nhập dữ liệu vào các textbox) thì mới báo lỗi chưa điền đầy đủ thông tin.
Cái lỗi này là do lỗi code trong cái hàm CheckNullEmpty() anh post lên lúc trước.
Giải thích về trường hợp khi bấm [Save] lần 1 khi chưa nhập liệu nó vẫn báo "Lưu thành công" là do: Trong form của em, em có thiết lập 1 textbox là [Ngày thực hiện] có Default value = Date() tức là luôn có trị khi mở form và cái hàm CheckNullEmpty() chạy sai ở đây. Nó bị sai ở vòng lặp khi gặp textbox [Ngày thực hien] có trị sẽ gán CheckNullEmpty = False -> sẽ tiến hành Lưu dữ liệu. Bấm [Save] lần 2 thì code chạy đúng, hiện thông báo yêu cầu nhập liệu các textbox null là do: code sau khi lưu dữ liệu sẽ xoá trống tất cả các textbox trên main form dẫn đến hàm CheckNullEmpty() sẽ chạy và trả về giá trị đúng (=True).
Bạn sửa code hàm CheckNullEmpty lại như bên dứoi:
Mã PHP:Function CheckNullEmpty(frm As Form) As Boolean
Dim ctl As Control
str = Empty
For Each ctl In frm.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acCheckBox Then
If Right(ctl.Tag, 8) = "required" Then
If IsNullOrEmpty(ctl) Then
'Debug.Print IsNullOrEmpty(ctl) & " - " & ctl.Name'
colCtlName.Add ctl.Name 'De setFocus vao control dau tien trong danh sách collection'
ctl.BackColor = RGB(255, 255, 153)
str = str & "- " & ctl.Controls(0) & vbNewLine
End If
End If
End If
Next
If Len(str) = 0 Then
CheckNullEmpty = False
Else
CheckNullEmpty = True
End If
End Function -
RE: Lỗi cannot Update.
huuduy.duy > 03-07-18, 11:35 AM
Ở frmThongKeNangSuat, em thêm sự kiện double click cho subform (sfrmThongKeCongDoan) để mở 1 form mới (Form chỉnh sửa), thì báo lỗi sau. Em đã đăng ký thư viện OLE luôn rồi,
Nhưng nếu em thay sfrmThongKeCongDoan bằng 1 subform khác thì bình thường,
Cho em hỏi, lỗi trên mình khắc phục như thế nào
Trân trọng cảm ơn
[img][/img]
-
RE: Lỗi cannot Update.
ongke0711 > 03-07-18, 12:13 PM
Kiểm tra lại tất cả các Controls, có control nào đó trong Form có đặt tên (Name) tiếng Việt có dấu hoặc khoảng trắng. Không cần đăng ký thêm thư viện gì nữa.