RE: Tính số ngày công tác
ongke0711 > 28-10-16, 12:18 PM
Cái cách mà tôi hướng dẫn bạn làm lúc trước chỉ là dùng để xử lý tình huống đối với CSDL của bạn (tbllenhXe) bị nhập sai, trùng lắp ngày tháng tùm lum. Thủ thuật dùng table tạm để tìm ra nhưng ngày trùng (lỗi nhập liệu) chỉ sử dụng nhất thời, không thể nào cứ mỗi lần cần truy vấn báo cáo thì lại phải chạy công cụ tìm lỗi sai của table để sửa rồi mới trích xuất báo cáo, đó không phải là cách phần mềm nó quản lý dữ liệu.
Báo cáo, xử lý dữ liệu phải dựa trên nguồn dữ liệu chuẩn chính xác. Dữ liệu trong cái table Lệnh Xe của bạn đã sai thì sau này bạn muốn làm gì với nó cũng sẽ mất công vô cùng.
Do vậy trước khi tính tới chuyện truy vấn, xử lý dữ liệu thì bạn nghĩ làm sao chuẩn hóa việc nhập liệu cho table lệnh xe trước đã.
- Làm sao không cho nhập trùng ngày đi/ ngày về. Tức là Ngày Đi của lệnh điều xe kế tiếp không được < Ngày Về của lệnh điều xe trước đó.
- Nếu dùng form nhập liệu thì có thể bẫy lỗi khi nhập liệu, không cho phép nhập sai.
- Nếu dữ liệu đã có sẳn từ Excel, import vô Access thì bắt buộc phải sửa thủ công cho chuẩn trước khi import. Bạn nên nhớ “Gabage In, Gabage Out” nếu dữ liệu bạn đưa vào là rác thì kết quả bạn nhận được cũng là rác thôi. Lập trình không phải lúc nào cũng lập trình cho máy tự sửa dữ liệu cho chuẩn rồi xứ lý đâu.
Bạn trao đổi thêm về cái cách nhập liệu tblLenhXe của bạn như thế nào đi.
Lấy ví dụ cho bạn thấy rõ hơn là đối với CSDL sai như trên của bạn thì khi bạn muốn làm gì với nó thì kết quả cũng khó xử lý.
- Bạn muốn cập nhật số ngày đi công tác đó vào luôn Lệnh điều xe (LĐX)?
Ví dụ:
LDX MaXe NgayDi NgayVe Số ngày CT
01 x1 1/10/2016 3/10/2016 3
02 x1 2/10/2016 5/10/2016 2 => Tính từ ngày 3/10
-> Giả định LDX 01 nhập đúng, LDX 02 nhập sai ngày đi (phải là ngày 3/10 trở đi chứ không phải ngày 2/10) thì kết quả số ngày CT như trên là đúng.
-> Vậy cơ sở nào để bạn xác định được nhập liệu của LDX 01 là đúng và NgayDi của LDX 02 là sai? Có thể Ngày Về của LDX 01 là 2/10 thì sao? Vậy Số ngày CT cũng sai luôn. Làm sao máy tính nó thông minh đến nỗi nhìn vô 2 dòng này và tự động biết dòng nào nhập sai để cập nhật ngày CT đây?
-> Tóm lại chỉ có người nhập (hoặc người viết) cái lệnh điều xe trong tay mới biết sai hay đúng rồi tự sửa khi nhập liệu vào máy tính.
Bạn từ từ ngâm cứu lại đi nhé.