Xin giải pháp chống sửa, xóa dữ liệu đã nhập vào từ ngày hôm trước. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

buihung.8

Thành viên mới
Tham gia
12/10/13
Bài viết
23
Được thích
2
Nghề nghiệp
bộ đội
Nhờ các anh em GPE giúp mình xem có giải pháp nào để chống thay đổi hoặc xóa các dữ liệu đã được nhập từ thời điểm trước. Cụ thể là mình có một file bảng tính điểm, có một vùng cho giáo viên nhập điểm và mình muốn ngày hôm sau giáo viên không thể chỉnh sửa hay xóa được điểm đã ghi vào từ hôm trước nhưng vẫn có thể thêm điểm vào các ô chưa có dữ liệu. Rất mong mọi người phản hồi và góp ý cho mình.
 

File đính kèm

Lần chỉnh sửa cuối:
Nhờ các anh em GPE giúp mình xem có giải pháp nào để chống thay đổi hoặc xóa các dữ liệu đã được nhập từ thời điểm trước. Cụ thể là mình có một file bảng tính điểm, có một vùng cho giáo viên nhập điểm và mình muốn ngày hôm sau giáo viên không thể chỉnh sửa hay xóa được điểm đã ghi vào từ hôm trước nhưng vẫn có thể thêm điểm vào các ô chưa có dữ liệu. Rất mong mọi người phản hồi và góp ý cho mình.
Bài toán này mình có 1 chiêu là "Mượn đao giết người" hay lắm. Dữ liệu nhập vào qua ngày sau là cốc có sửa được. Để coi có ai cho phương pháp hay không. Nếu không thì đợi vài ngày đi, mình sẽ làm cho.
 
Bài toán này mình có 1 chiêu là "Mượn đao giết người" hay lắm. Dữ liệu nhập vào qua ngày sau là cốc có sửa được. Để coi có ai cho phương pháp hay không. Nếu không thì đợi vài ngày đi, mình sẽ làm cho.
He. Bác có bí kíp mà cất dấu lâu thế
 
Cảm ơn bạn QuangHai1969 đã quan tâm đề tài này. Theo mình nghĩ có thể chủ Top có thể chưa lường được hết các tình huống
- Việc nhầm lẫn nó sẽ không từ 1 ai. Vậy giả sử mấy ngày sau đó mới phát hiện ra dữ liệu sai thì sao ?
- Theo mình nên nghĩ tới việc sau một thời gian phát hiện có dữ liệu sai thì được phép báo hủy dòng đó (Nhưng dữ liệu vẫn được lưu lại nguyên bản để đối chiếu sau này) và như vậy khi đã báo hủy thì sẽ không kết xuất dữ liệu đó ra các báo cáo được thì tốt.
Mạo muội góp mấy lời mong các bạn thông cảm.
 
Cảm ơn bạn QuangHai1969 đã quan tâm đề tài này. Theo mình nghĩ có thể chủ Top có thể chưa lường được hết các tình huống
- Việc nhầm lẫn nó sẽ không từ 1 ai. Vậy giả sử mấy ngày sau đó mới phát hiện ra dữ liệu sai thì sao ?
- Theo mình nên nghĩ tới việc sau một thời gian phát hiện có dữ liệu sai thì được phép báo hủy dòng đó (Nhưng dữ liệu vẫn được lưu lại nguyên bản để đối chiếu sau này) và như vậy khi đã báo hủy thì sẽ không kết xuất dữ liệu đó ra các báo cáo được thì tốt.
Mạo muội góp mấy lời mong các bạn thông cảm.
Bạn góp ý rất hay. Đúng là tình huống này mình cũng chưa lường trước được. Xem ý kiến của các bác
 
Mình thì cũng nóng lòng đếm từng ngày xem đến ngày đó xem anh hải viết code đọc chiêu một tí ...càng đọc càng mê
ko biết có bạn nào tham gia nữa ko thì cho mình coi thêm một tí nữa
xin cảm ơn
 
Nhờ các anh em GPE giúp mình xem có giải pháp nào để chống thay đổi hoặc xóa các dữ liệu đã được nhập từ thời điểm trước. Cụ thể là mình có một file bảng tính điểm, có một vùng cho giáo viên nhập điểm và mình muốn ngày hôm sau giáo viên không thể chỉnh sửa hay xóa được điểm đã ghi vào từ hôm trước nhưng vẫn có thể thêm điểm vào các ô chưa có dữ liệu. Rất mong mọi người phản hồi và góp ý cho mình.
Bạn có thể backup file rồi cất ở một chỗ, hôm sau người khác chỉnh sửa thoải mái, mình copy dữ liệu cũ đè lên ô tương ứng là xong.
 
Bạn có thể backup file rồi cất ở một chỗ, hôm sau người khác chỉnh sửa thoải mái, mình copy dữ liệu cũ đè lên ô tương ứng là xong.
Đây cũng là một giải pháp nhưng có một số vấn đề sảy ra là khi có nhiều sheet và nhiều vùng thì rất là lâu
 
Nhờ các anh em GPE giúp mình xem có giải pháp nào để chống thay đổi hoặc xóa các dữ liệu đã được nhập từ thời điểm trước. Cụ thể là mình có một file bảng tính điểm, có một vùng cho giáo viên nhập điểm và mình muốn ngày hôm sau giáo viên không thể chỉnh sửa hay xóa được điểm đã ghi vào từ hôm trước nhưng vẫn có thể thêm điểm vào các ô chưa có dữ liệu. Rất mong mọi người phản hồi và góp ý cho mình.
Tạm thời thử cách này đi. Nếu có phát sinh thì tính tiếp.
Bạn thử nhập dữ liệu vào vùng E4:O15, sau đó lưu và đóng file lại. Thử chỉnh lại ngày hệ thống, mở file lên và thử sửa lại dữ liệu xem sao
 

File đính kèm

Đây cũng là một giải pháp nhưng có một số vấn đề sảy ra là khi có nhiều sheet và nhiều vùng thì rất là lâu
Dữ liệu càng lớn thì càng không an toàn nếu bạn không sao lưu, người khác có thể vô hiệu hóa code để chỉnh sửa mà bạn không biết. Nếu bạn sợ lâu thì có thể viết code vba để phục hồi phần cần bảo vệ.
 
Ổ khoá thì chỉ để chống người ngay thôi.

Mấy vụ cót két để chống sửa dữ liệu chỉ là để hạn chế sự vô tình thay đổi dữ liệu trước đó, chứ nếu hắn mà biết tí tẹo về code, khi mở file lên hắn vào VBE múa mấy cái là coi như loạn. Chủ thớt phải nhớ điều này nhé. Dao 2 lưỡi đấy.
 
Ổ khoá thì chỉ để chống người ngay thôi.

Mấy vụ cót két để chống sửa dữ liệu chỉ là để hạn chế sự vô tình thay đổi dữ liệu trước đó, chứ nếu hắn mà biết tí tẹo về code, khi mở file lên hắn vào VBE múa mấy cái là coi như loạn. Chủ thớt phải nhớ điều này nhé. Dao 2 lưỡi đấy.
Nhờ bác xem lại cho em file này. e cũng thực hiện như bác nhưng mà khi add điểm vào ô trống thì nó lại bắt unprotect. không được như file bác làm. em cũng muốn hỏi thêm, làm thế nào để mình có thể đặt mật khẩu luôn cho những ô đã có điểm rồi được không. phòng trường hợp bị sai điểm người quản lý còn có thể sửa lại được.}}}}}}}}}}
 

File đính kèm

Nhờ bác xem lại cho em file này. e cũng thực hiện như bác nhưng mà khi add điểm vào ô trống thì nó lại bắt unprotect. không được như file bác làm. em cũng muốn hỏi thêm, làm thế nào để mình có thể đặt mật khẩu luôn cho những ô đã có điểm rồi được không. phòng trường hợp bị sai điểm người quản lý còn có thể sửa lại được.}}}}}}}}}}
Nếu muốn "đặt mật khẩu luôn cho những ô đã có điểm rồi" thì bạn có thể sử dụng chức năng của Exl vào Allow Users Edit Ranges mà thực hiện đặt pass cho từng Cells
 
Nhờ bác xem lại cho em file này. e cũng thực hiện như bác nhưng mà khi add điểm vào ô trống thì nó lại bắt unprotect. không được như file bác làm. em cũng muốn hỏi thêm, làm thế nào để mình có thể đặt mật khẩu luôn cho những ô đã có điểm rồi được không. phòng trường hợp bị sai điểm người quản lý còn có thể sửa lại được.}}}}}}}}}}
Nếu vậy thì bày ra chi cái vụ kiểm tra ngày cho mệt máy tính vậy.
File này khi nhập dữ liệu vào vùng E2:O15 sẽ tự động khoá ô đó lại. Khi nào muốn sửa thì bấm tổ hợp shift ctrl z thì sửa được. Sửa xong thì lại tự khoá tiếp.
 

File đính kèm

Nếu vậy thì bày ra chi cái vụ kiểm tra ngày cho mệt máy tính vậy.
File này khi nhập dữ liệu vào vùng E2:O15 sẽ tự động khoá ô đó lại. Khi nào muốn sửa thì bấm tổ hợp shift ctrl z thì sửa được. Sửa xong thì lại tự khoá tiếp.
Tình hình nó là như thế này bác ak. Em đang làm một file quản lý điểm cho nhà trường, có sử dụng mạng nội bộ. Theo yêu cầu của nhà trường thì các máy của giáo viên có thể thêm và chỉnh sửa điểm hàng ngày. Ngày hôm sau thì hệ thống tự động khóa lại các điểm đã được add từ hôm trước để tránh trường hợp tiêu cực trong nhà trường như nâng hạ điểm của học sinh. Trường hợp điểm số có sai sót thật thì chỉ admin nhà trường mới chỉnh sửa lại được nên em mới muốn nhờ các bác tạo cho e cái mật khẩu nữa
 
Bác nào có giải pháp nào hay hơn thì đóng góp cho tớ với
 
Bác nào có giải pháp nào hay hơn thì đóng góp cho tớ với

Mình Nghĩ Cậu nên đặt pass Open 9 ký tự trở LÊN trong đó có số và hoa + ký tự đặc biệt ... Xong dùng Winrar nén lại và đặt pass tiếp xong ko cho ai biết nữa chỉ mình mình Biết thôi
Vậy là khá Ok thôi nha
nều cần nữa thì sử dụng thêm đồ chơi này nữa nha
khà khà
 
Lần chỉnh sửa cuối:
Gửi đồ chơi bổ Sung bài 17
SORRY NHỜ MOD XOA DÙM BÀI THỪA NÀY
XIN CẢM ƠN
 
Lần chỉnh sửa cuối:
Tạm thời thử cách này đi. Nếu có phát sinh thì tính tiếp.
Bạn thử nhập dữ liệu vào vùng E4:O15, sau đó lưu và đóng file lại. Thử chỉnh lại ngày hệ thống, mở file lên và thử sửa lại dữ liệu xem sao
Bác cho em hỏi. file bác gửi có cách nào làm cho chức năng filter vẫn hoạt động được không.
 
Đương nhiên là được nhưng bạn có thể record macro để xem excel tự code thế nào thì sẽ sửa code được
Em thử macro rồi nhưng mà vẫn không được bác ak. khi gọi Macro thì do đã bị unprotect nên chương trình bị run error. Biết mình tài năng có hạn, Thủ đoạn vô biên mà không giúp được gì. nhờ bác cao tay giúp em với. !$@!!
 
mọi người có cao kiến gì không, giúp mình voi
 
Thiết nghĩ bạn chỉ nên để bình thường bảng tính , gv nhập điểm thoải mái ngày hôm trước hoặc vài ngày trước đó .... bạn chỉ cần tạo 1 cột phụ bằng công thức để kiểm tra , hễ gv nào vào sửa ô nào thì dòng đó sẽ hiện màu lên là biết rồi . trường học thì cao lắm 1/3 gv là biết tin học dạng cơ bản ,còn lại 2/3 không biết hoặc biết quờ quạng thì vẫn chỉ muốn làm bằng tay,( Số rành và siêu VBA thì ít lắm ) ...và dù làm trên máy thì nhà trường vẫn yêu cầu gv phải nộp kết quả bằng giấy có đóng mộc ký tên của CBQL để làm bằng chứng sau này.
Bạn không rành về code mà xài mấy cái phức tạp thì " tự đao giết mình " là cái chắc ( quỳ hoa bảo điển )
 
http://php-dukkha.rhcloud.com/thpt/demo/bangdiem.php

Đây là một giải pháp của mình:( rất tiếc là không phải excel , nhưng có thể ctrl +c và ctrl +v ) để copy qua lại với excel.

Nếu bạn đăng nhập bằng quyền admin với pass 123 thì có thể sửa toàn bộ.

Nếu bạn đăng nhập bằng user thường: abc với pass 123 thì chỉ có thể sửa được 1 lần duy nhất với các ô trống, còn các ô nào mà đã có dữ liệu rồi thì không thể sửa được.
Còn chức năng xóa dòng của user thường (tức là giáo viên) chỉ có thể xóa những dòng cập nhật trong ngày, không thể xóa dòng cập nhật từ hôm trước.

Bạn có thể cấp cho mỗi giáo viên một user để họ cập nhật điểm từ xa qua mạng. Và họ chỉ có thể cập nhật được một lần duy nhất. Nếu họ muốn sửa lại thì phải nhờ đến admin.(tức là bạn đấy, phải thông qua bạn thì mới có thể sửa được)

Ví dụ minh họa các thao tác:

Bạn chọn dòng cần xóa bằng cách kích vào ô check chọn del, sau đó kích chọn save. Bạn đợi một lúc sẽ có thông báo xóa thành công, đối với các dòng của ngày hôm trước, cũng có thông báo xóa thành công nhưng(thông báo chỉ là thông báo thôi).
Sau đó kích vào nút load để kiểm tra thành quả , xem đã xóa được chưa. (Thình thoảng mạng hơi chậm thì có thể không xóa được).

Mình có làm một dòng là của ngày hôm trước , bạn test thử xem .

Tạm thời , tới thời điểm này thì , giáo viên chỉ có thể insert một lần, không thể sửa được, muốn sửa dữ liệu trong ngày thì lại phải xóa dòng đó đi và insert lại.
Còn dữ liệu của hôm trước, tức là các ô trống thì chỉ có thể insert được 1 lần, không sửa và cũng không xóa được.

insert: ở đây là insert toàn bộ một dòng mới.
update : cập nhật các ô trống , sửa lại (đối với user có quyền admin). Muốn xoá dữ liệu trong một ô thì xoá dữ liẹu trong ô đó và để trống chọn update ở cột check , sau đó kích chọn save. Kích load de xem lại ket quả hoặc ấn F5, nhưng kích load sẽ nhanh hơn.
del:xoá toàn bộ dòng.

Cột điểm trung bình M91 mình để trống vì không biết công thức tính điểm trung bình ra sao cả bạn tính theo kiểu gì hệ số như thế nào.
 
Lần chỉnh sửa cuối:
Mình cũng muốn ý thưởng giống chủ đề ở trên. Muốn nội dung đã nhập của hôm qua thì sang hôm nay và về sau kg thay đổi được. ( Nếu muốn thay đổi thì dùng pass hoặc ký tự đặc biệt ). Nhờ các cao nhân giúp đỡ chỉnh sửa file đính kèm giúp. Xin cảm ơn rất nhiều !
 

File đính kèm

Mình cũng muốn ý thưởng giống chủ đề ở trên. Muốn nội dung đã nhập của hôm qua thì sang hôm nay và về sau kg thay đổi được. ( Nếu muốn thay đổi thì dùng pass hoặc ký tự đặc biệt ). Nhờ các cao nhân giúp đỡ chỉnh sửa file đính kèm giúp. Xin cảm ơn rất nhiều !
Có cách này: Khi đầu ngày, mở file (giả sử ngày 2/5/2025, từ dòng 19-31) thì chỉ có các dòng 19-31 là unlocked, các dòng còn lại là "locked".
Sang hôm sau 3/5, mở file thì tương tự dòng 32-44 unlocked, còn lại thì locked.
Có passwords để có thể unlocked dòng bất kỳ để chỉnh sữa bất kỳ thời gian nào.
Bạn thấy gợi ý này thế nào?
 
Nhờ các anh em GPE giúp mình xem có giải pháp nào để chống thay đổi hoặc xóa các dữ liệu đã được nhập từ thời điểm trước. Cụ thể là mình có một file bảng tính điểm, có một vùng cho giáo viên nhập điểm và mình muốn ngày hôm sau giáo viên không thể chỉnh sửa hay xóa được điểm đã ghi vào từ hôm trước nhưng vẫn có thể thêm điểm vào các ô chưa có dữ liệu. Rất mong mọi người phản hồi và góp ý cho mình.
em xin góp ý các giải pháp sau :
1. sử dụng protect sheet
- viết sự kiện change khi dữ liệu thay đổi thì khóa các sheet đã có dữ liệu
- tất nhiên vẫn code thêm để ví dụ click đúp thì nhập mật khẩu sửa dữ liệu được
* Ưu điểm : dễ code
* Nhược điểm : chỉ bảo vệ với người không biết code VBA chứ người biết phá mật khẩu vào sửa code bình thường
2. đưa toàn bộ dữ liệu lên máy chủ ( có thể thuê VPS loại rẻ tầm 100k/ tháng)
- đưa dữ liệu lên MySQL cài ở VPS để lưu trữ lịch sử dữ liệu
- mỗi khi chỉnh sửa thì cần mật khẩu
* Ưu điểm : Bảo mật an toàn tuyệt đối
* Nhược điểm: code phức tạp hơn, mất tiền hàng tháng
( note : có thể dùng chính máy tính của mình làm máy chủ cũng đc, ko phải thuê VPS nữa )
 
Bạn có thể thực hiện điều này bằng VBA bằng cách giới hạn chỉnh sửa trong một khoảng thời gian cụ thể, Chẳng hạn từ 3 giờ chiều đến 6 giờ chiều. Dĩ nhiên không ngăn được người biết... Sau đây là phác thảo cơ bản:
Sử dụng "Workbook Open Event" để kiểm tra thời gian hiện tại. Chỉ cho phép chỉnh sửa trong phạm vi thời gian bằng cách khóa/mở khóa các trang tính cho phù hợp.
Tắt chức năng lưu bên ngoài cửa sổ bằng cách sử dụng sự kiện BeforeSave.

Private Sub Workbook_Open()
Dim currentTime As Date
currentTime = Time

If currentTime >= TimeValue("15:00") And currentTime <= TimeValue("18:00") Then
Worksheets("Sheet1").Protect UserInterfaceOnly:=False ' Allow edits
Else
Worksheets("Sheet1").Protect UserInterfaceOnly:=True ' Lock edits
End If
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim currentTime As Date
currentTime = Time

If currentTime < TimeValue("15:00") Or currentTime > TimeValue("18:00") Then
MsgBox "Saving is only allowed between 3 PM and 6 PM.", vbCritical, "Restricted Save"
Cancel = True
End If
End Sub
 
Nên đưa code vào trong thẻ code cho gọn.
Bạn có thể thực hiện điều này bằng VBA
Mã:
Private Sub Workbook_Open()
Dim currentTime As Date
currentTime = Time

If currentTime >= TimeValue("15:00") And currentTime <= TimeValue("18:00") Then
Worksheets("Sheet1").Protect UserInterfaceOnly:=False ' Allow edits
Else
Worksheets("Sheet1").Protect UserInterfaceOnly:=True ' Lock edits
End If
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim currentTime As Date
currentTime = Time

If currentTime < TimeValue("15:00") Or currentTime > TimeValue("18:00") Then
MsgBox "Saving is only allowed between 3 PM and 6 PM.", vbCritical, "Restricted Save"
Cancel = True
End If
End Sub
 

Bài viết mới nhất

Back
Top Bottom