Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Tính số ngày công tác
#1
Tôi có 1 table: tblLenhxe gồm các trường: IDmaphieu, Ngayviet, Ngaydi, Ngayve, maxe
Làm cách nào để tính tổng số ngày theo ngày viết?
Ví dụ: IDmaphieu,    Ngayviet,           Ngaydi,             Ngayve              Maxe
                01         15/10/2016     01/10/2016         03/10/2016           xe1
                02         16/10/2016     03/10/2016         05/10/2016           xe1
                03         18/10/2016     03/10/2016         07/10/2016           xe2
                04         19/10/2016     11/10/2016         11/10/2016           xe1
                05         20/10/2016     06/10/2016         06/10/2016           xe2
Tính tổng số ngày mà xe1, xe2 đi theo ngày viết (từ ngày 15-20/10/2016) tương ứng IDmaphieu.
Nếu lấy Tổng số ngày= Ngayve - Ngaydi thì số ngày sẽ vượt quá ngày thực tế (không đúng)
Chữ ký của trangdv.pchg trangdv.pchg,gia nhập Thủ Thuật Access từ 18-08 -16.
Reply
Những người đã cảm ơn
#2
Vượt quá ngày là sao bạn? Vd: Đi ngày 06/10/2016, Về 06/10/2016 => cho ra kết quả là 1 ngày công tác là không đúng theo y/c quản lý của bạn?
Tôi thấy ví dụ của bạn có trùng lắp ngày của xe2, có thể sẽ gây sai kết quả.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
nếu lấy tổng số ngày = ngayve-ngaydi thì sẽ bị trùng ngày của những bản ghi sau
như vậy 1 tháng xe ngày đi >31 ngày là ko đúng
Chữ ký của trangdv.pchg trangdv.pchg,gia nhập Thủ Thuật Access từ 18-08 -16.
Reply
Những người đã cảm ơn
#4
Trường hợp nào bạn cho nhập trùng ngày? Bảng ghi trước, xe đó đã đi công tác, làm thế nào có tiếp bảng ghi trùng lập (cùng 1 ngày đi công tác 2 lần)? Tôi chưa hiểu lắm cách ghi dữ liệu này của
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
sáng đi, trưa đi, chiều đi ... cùng ngày. Nhiều lần đi nhưng chỉ tính 1 ngày
Chữ ký của trangdv.pchg trangdv.pchg,gia nhập Thủ Thuật Access từ 18-08 -16.
Reply
Những người đã cảm ơn
#6
Vậy bạn dùng query để lấy Min của ngày đi và Max của ngày về, sau đó tính ra số ngày.
Vd:
Mã PHP:
SELECT Table1.MaXeMin(Table1.NgayDi) AS NgayBDDiMax(Table1.NgayVe) AS NgayVeCuoi
FROM Table1
GROUP BY Table1
.MaXe
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
Như vậy theo ví dụ trên xe1 đi từ ngày 01-05/10/2016 thì tính được nhưng đến ngày 11/10/2016 xe1 lại đi thì tính sao. 
Chẳng lẽ min(tblLenhxe.ngaydi) =01 ; max(tblLenhxe.ngayve) = 11 thì tổng số ngày là 11-1+1 = 11 ngày à.
Trong khi đó từ ngày 01-05/10/2016 là 5 ngày. Sau đó cộng với 1 ngày của ngày 11/10/2016 thì tổng là 6 ngày
Như vậy sai kết quả
Chữ ký của trangdv.pchg trangdv.pchg,gia nhập Thủ Thuật Access từ 18-08 -16.
Reply
Những người đã cảm ơn
#8
Chào bạn trangdv.pchg  !

Theo mình thì: Mỗi ngayviet (Có thể trùng ngayviet nhưng khác IDmaphieu) bạn cho một lộ trình ngày đi, ngày về. Ví dụ:

01       15/10/2016     01/10/2016         03/10/2016           xe1
02       15/10/2016     05/10/2016         05/10/2016           xe1
03       16/10/2016     03/10/2016         07/10/2016           xe2
...
Như vậy chỉ cần Sum từng lộ trình theo cách của Ongke0711 là Ok !
Ko biết có đúng ý bạn ko !
Thân./.
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#9
Không thể biết người ta viết phiếu lệnh vào ngày nào, ngày đi lúc nào, ngày về lúc nào thì làm sao mà có lộ trình cụ thể.
Cơ bản ở đây là lọc bỏ được số ngày trùng mà mình không biết bỏ thế nào cho hợp lý
Chữ ký của trangdv.pchg trangdv.pchg,gia nhập Thủ Thuật Access từ 18-08 -16.
Reply
Những người đã cảm ơn
#10
Bài này của bạn phải làm qua mấy bước trung gian.
- Tạo table tạm liệt kê hàng dọc các ngày sử dụng xe. (Dùng code VBA)
   Ví dụ: Phiếu 1: Xe1 - từ ngày 1/10 - 3/10; Phiếu 2:  Xe1 - từ ngày 2/10 - 4/10 thì sẽ liệt kê thành 6 dòng
   Xe1      1/10
   Xe1      2/10
   Xe1      3/10
   Xe1      2/10
   Xe1      3/10
   Xe1      4/10
- Sau đó dùng Total query để group by [ngày] lại để loại bỏ [ngày] trùng lập.
- Dùng Query để count [Ngày] từ Total query trên.

Link demo: http://www.mediafire.com/file/c0m56g5nh0...ungLap.mdb

Các bạn nào có giải pháp khác gọn hơn thì hướng dẫn giùm nhé. Lúc trước cũng có một post "tính lương" dạng này mà bữa giờ tôi nghĩ hòai không ra cách. Cứ xoay quanh nghĩ cách dùng Query mà không nghĩ ra dùng code VBA. 007
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Lọc Hợp đồng theo điều kiện ngày tháng vuthaiha90 7 287 28-11-16, 05:31 PM
Bài mới nhất: vuthaiha90
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 86 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  Điền Mr hoặc Ms theo giới tính huuduy.duy 8 488 04-11-16, 05:58 PM
Bài mới nhất: huuduy.duy
  Hướng Dẫn Lọc ngày tháng năm lùi một ngày so với ngày hiện tại và trừ thứ bảy, chủ nhật jeck09nt 3 121 21-10-16, 12:41 PM
Bài mới nhất: ongke0711
  [Help] Tìm ngày tính lương ducanh.ktnb 18 546 15-10-16, 06:45 PM
Bài mới nhất: ongke0711

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ