tvn_hut > 18-04-16, 11:43 AM
lmthu > 18-04-16, 05:06 PM
tvn_hut > 20-04-16, 06:29 PM
(18-04-16, 05:06 PM)lmthu Đã viết: Theo như câu hỏi thì bạn cần khóa (lock) các mẫu tin (record) theo ngày tháng vậy thì chắc chắn cấu trúc bảng (Table) của bạn phải có 1 trường (Field) khiểu Date để ghi nhận rồi cho nên theo ý tôi thì ta không cần phải đặt thêm 1 trường Yes/No làm gì cho tốn bộ nhớ.
Giả sử Table của bạn tên là Dulieu và trường Ngay có kiểu Date, bạn cần khóa các mẫu tin của năm 2015 trở về trước, trong sự kiện Onload của form bạn viết mã lệnh như sau:
Private Sub Form_Load()
Me.Record Source="Select * from Dulieu Where Ngay>=#01/01/2016#"
Me.Requery
End Sub
ongke0711 > 21-04-16, 10:06 AM
tvn_hut > 21-04-16, 06:10 PM
(21-04-16, 10:06 AM)ongke0711 Đã viết: Thông thường giống như các ứng dụng quản lý bán hàng, những sản phẩm nào không còn bán nữa thì đánh dấu nó là "InActive". Đối với file của bạn thì dùng Field [InActive] kiểu Yes/No là được rồi. Khi muốn "Inactive" nó thì dùng Update Query, cập nhật fieldld này thành "YES". Trong các truy vấn sau này thì thêm điều kiện là [InActive]=No để chỉ lọc những records còn hoạt động thôi.Cám ơn ongke711 nhé. Trong các truy vấn thì mình chưa hiểu lắm, vì nếu form lấy dữ liệu từ bảng mình phải lập trình cho nó theo sự kiện nào. Bạn có thể nói rõ hơn không. Mình chưa hiểu cấu cuối là sẽ làm như nào: Trong các truy vấn sau này thì thêm điều kiện là [InActive]=No để chỉ lọc những records còn hoạt động thôi.
maidinhdan > 21-04-16, 09:56 PM
(18-04-16, 11:43 AM)tvn_hut Đã viết: Do đó mình muốn lock những record của năm cũ từ ngày đến ngày.
Khi thực hiện lock thì toàn bộ record này sẽ ẩn hết trên form.
Ví dụ khi mở form có liên kết đến record trong table thì tổng số record là 10.000, sau khi lock trên form chỉ hiện thị là 100 chẳng hạn.
Trong table mình có thiết kế 1 trường yes/no cho việc block data.
vậy khi mình thiết kế 1 form để lock dữ liệu thì thủ tục cụ thể như nào các bạn.
Private Sub cmdUnlock_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tbBanhang SET tbBanhang.Lock = No WHERE (((tbBanhang.Thoigian) Between [Tungay] And [Denngay]));"
Me.lstBanhang.Requery
End Sub
Private Sub txtKhoa_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tbBanhang SET tbBanhang.Lock = Yes WHERE (((tbBanhang.Thoigian) Between [Tungay] And [Denngay]));"
Me.lstBanhang.Requery
End Sub
tvn_hut > 24-04-16, 01:00 AM
(21-04-16, 09:56 PM)maidinhdan Đã viết:(18-04-16, 11:43 AM)tvn_hut Đã viết: Do đó mình muốn lock những record của năm cũ từ ngày đến ngày.
Khi thực hiện lock thì toàn bộ record này sẽ ẩn hết trên form.
Ví dụ khi mở form có liên kết đến record trong table thì tổng số record là 10.000, sau khi lock trên form chỉ hiện thị là 100 chẳng hạn.
Trong table mình có thiết kế 1 trường yes/no cho việc block data.
vậy khi mình thiết kế 1 form để lock dữ liệu thì thủ tục cụ thể như nào các bạn.
Bạn lmthu và [b][b]ongke0711 đã trả lời đúng ý bạn rồi, để mình làm Demo và code ngắn gọn.[/b][/b]
Trả lời:
Code sử dụng:
Nút khóa
Mã PHP:Private Sub cmdUnlock_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tbBanhang SET tbBanhang.Lock = No WHERE (((tbBanhang.Thoigian) Between [Tungay] And [Denngay]));"
Me.lstBanhang.Requery
End Sub
Nút mở khóa
Mã PHP:Private Sub txtKhoa_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tbBanhang SET tbBanhang.Lock = Yes WHERE (((tbBanhang.Thoigian) Between [Tungay] And [Denngay]));"
Me.lstBanhang.Requery
End Sub
Chú thích:
+ tbBanhang là table gồm các cột (Stt, Thoigian, Lock)
+ [Tungay], [Denngay]: sẽ hiện khi nhất nút, ta điền tay vào: ví dụ 01/01/2016
Demo đính kèm phía dưới
Thân mến