-
Tạo nút lưu thay đổi ngày giờ 1 lần
thanhtruong > 20-07-17, 12:25 PM
Mình có file demo
File demon_luu
Mình muốn khi bấm lưu lần thứ nhất thì ô ngày và giờ sẽ cập nhật giờ hệ thống.
Khi bấm lưu lần thứ 2 thì 2 cái ô này sẽ không thay đổi ngày và giờ nữa.
Vì ngày hôm qua mình nhập liệu mà nhập sai cái tên.
ngày hôm nay mình muốn sửa lại cái tên, rồi bấm lưu thì ngày và giờ lại cập nhật thành ngày hôm nay.
vì thế mình muốn bấm lưu lần thứ 2 thì cái ngày và giờ sẽ khồng thay đổi thì phải làm sao ạ.? -
RE: Tạo nút lưu thay đổi ngày giờ 1 lần
ongke0711 > 20-07-17, 02:14 PM
Bạn đã tự thiết kế form này để theo dõi việc cập nhật dữ liệu và bây giờ bạn lại muốn phá luật của mình.
Nếu bạn không muốn lưu thay đổi ngày giờ thì bạn cho check xem trường ngày giờ có Null không, nếu không Null thì không cập nhật, nếu Null thì mới chạy Me.Gio = Time. -
RE: Tạo nút lưu thay đổi ngày giờ 1 lần
cpucloi > 20-07-17, 04:12 PM
Theo mình
C1: Bạn đặt thuộc tính default value của các textbox ngày và giờ tương ứng theo ngày và giờ hiện tại
Ngay: format(date(),"dd/mm/yyyy")
Giờ: tương tự nhưng sử dụng hàm về thời gian (mình cố tình không viết để bạn tự suy luận).
(bỏ 2 câu lệnh gán ngày và giờ trong thủ tục Lưu)
C2: Chỉ cần dùng 1 filed sẽ hiển thị cả ngày tháng và thời gian nhập (không tách thành ngày, giờ) -
RE: Tạo nút lưu thay đổi ngày giờ 1 lần
thanhtruong > 20-07-17, 04:54 PM
Mã:Private Sub Command7_Click()
If Me.gio = Null And Me.ngay = Null Then
Me.gio = Time
Me.ngay = Data
Else
Me.Refresh
End If
End Sub -
RE: Tạo nút lưu thay đổi ngày giờ 1 lần
ongke0711 > 20-07-17, 08:02 PM
(20-07-17, 04:54 PM)thanhtruong Đã viết: [code]Private Sub Command7_Click()
If Me.gio = Null And Me.ngay = Null Then
...
Đã là NULL thì nó không bao giờ bằng(=) cái gì cả nên bạn dùng Me.gio= Null là sai nhé, nó không trả về đúng kết quả đâu. Bạn test code này chưa?
- Đổi qua dùng hàm IsNull().
If IsNull(Me.gio.Value) AND IsNull(Me.Ngay.Value) Then …
- Một cách khác toàn diện hơn là chuyển giá trị Null thành chuỗi (string) rồi kiểm tra độ dài chuỗi, nếu = 0 tức là textbox đó là trống (Empty). Tại sao cách này toàn diện hơn vì nếu gặp trường hợp bạn dùng phím Delete hay Backspace xóa nội dung textbox thì lúc này textbox không còn nội dung gì nữa nhưng nó không phải là NULL. Nếu bạn chỉ kiểm tra bằng hàm IsNull() thì đã bỏ sót trường hợp trên.
+ Null: là cái textbox đó không được gán một giá trị gì cả.
+ Empty: tức là textbox có độ dài chuỗi = 0 nếu ở dạng Text (“”), hoặc = 0 nếu là dạng Number.
- Đổi textbox đang Null thành Empty bằng cách nối thêm chuỗi “” hoặc dùng hằng (Constant) vbNullString.
If Len(Trim(Me.gio.Value) & “”)= 0 Then …
Hoặc
If Len(Trim(Me.gio.Value) & vbNullString)= 0 Then …
Tốt nhất là dùng Constant vbNullString trong trường hợp này vì trong code cũng dễ nhìn và phân biệt hơn là dấu nháy kép “” (nếu bạn gõ dư 1 phím space thì cũng khó biết “ “). Hơn nữa theo tôi biết là đối với các hằng (constant) thì chương trình đã cấp phát bộ nhớ cho nó rồi nên sẽ chạy trơn tru hơn (đối với trường hợp đơn giản thì cũng không đáng kể).