Phung Duc > 03-08-16, 02:00 PM
Phung Duc > 03-08-16, 02:07 PM
paulsteigel > 03-08-16, 02:08 PM
(03-08-16, 02:00 PM)Phung Duc Đã viết: Mình gặp khó khăn khi match dữ liệu table "NhuCauSX" theo Ca1, Ca2, Ca3 (table "CaSX") theo nhu cầu sản xuất từ 1 đến 12 loại sản phẩm Ca1 sản xuất đầu tiên đến Ca2 và Ca3. Các bạn giúp làm sao để chạy được Ca nào sẽ sản xuất loại sản phẩm gì
https://drive.google.com/file/d/0Bx9f5ZA...sp=sharing
zinzin8x > 03-08-16, 02:39 PM
Phung Duc > 03-08-16, 03:10 PM
maidinhdan > 03-08-16, 04:18 PM
(03-08-16, 03:10 PM)Phung Duc Đã viết: mình giải thích them về nguồn dữ liệu
Table NhuCauSX.Tong_Tg la thời gian cần thiết để hoàn thành 1 sản phẩm ----> các Sản phẩm được sản xuất theo tuần tự 1-12 (Hết 1 sang 2 .... 12)
Table CaSX.TongGio là tổng thời gian sản xuất của 1 ca với số CaSX.SoCongNhan (sản xuât 7 giờ/ca)
3 ca sản xuât liên tuc trong ngày (Ca1 kết thuc đến Ca2 đến Ca3) đảm bảo sản phẩm liên tục từ LoạiSP1 kết thúc đến LoáiSP2 .... đến SP12
(Đương Link này hiển thị kết quả mong đợi được làm thủ công từ Excel)
Tks
paulsteigel > 04-08-16, 12:12 PM
zinzin8x > 04-08-16, 02:51 PM
Phung Duc > 05-08-16, 10:33 AM
ongke0711 > 06-08-16, 07:46 PM
Public Sub ChiaCaSX(NgayBDSX As Date)
Dim rs_NhuCauSX As DAO.Recordset
Dim rs_CaSX As DAO.Recordset
Dim strSql As String
Dim ThoiGianSX As Long 'Tong thoi gian can de SX het 1 loai san pham. VD: Sp A = 100 h (20 dv x 5h)'
Dim ThoiGianSXConLai As Long 'So th.gian con lai de hoan thanh SX 1 loai SP'
Dim GioTheoCa As Long 'Tong so gio 1 ca SX'
Dim GioCaDaSuDung As Long 'So gio CaSX da su dung de SX'
Dim TongGioCaDaSuDung As Long
Dim TenSP As String
Dim NgaySX As Date
Dim DemNgay As Long
Dim TenCaSX As String
Dim reccount As Long 'So CaSX trong ngay'
'Lay table NhuCauSX'
strSql = "SELECT * FROM tblNhuCauSX ORDER BY UuTienSX"
Set rs_NhuCauSX = CurrentDb.OpenRecordset(strSql)
'Lay table CaSX'
strSql = "SELECT * FROM tblCaSX ORDER BY CaSX"
Set rs_CaSX = CurrentDb.OpenRecordset(strSql)
'Lay ngay bat dau san xuat'
NgaySX = NgayBDSX
GioTheoCa = rs_CaSX!TongGioCa
TenCaSX = rs_CaSX!CaSX
'Dem co bao nhieu CaSX'
rs_CaSX.MoveLast
rs_CaSX.MoveFirst
'Xoa table KeHoachSX'
CurrentDb.Execute "DELETE * FROM tblKeHoachSX"
reccount = rs_CaSX.RecordCount
Do While Not rs_NhuCauSX.EOF 'Duyet qua tung dong san pham'
TenSP = rs_NhuCauSX!DanhMucSP
ThoiGianSX = rs_NhuCauSX!SoLuong * rs_NhuCauSX!TGianDonViSP
ThoiGianSXConLai = ThoiGianSX
TongGioCaDaSuDung = 0
Do
'Neu thoi gian CaSX nhieu hon hoac = thoi gian (con lai) de SX 1 loai SP'
If GioTheoCa >= ThoiGianSXConLai Then
GioCaDaSuDung = ThoiGianSXConLai
TongGioCaDaSuDung = TongGioCaDaSuDung + GioCaDaSuDung
GioTheoCa = GioTheoCa - ThoiGianSXConLai
ThoiGianSXConLai = 0
'Neu thoi gian CaSX < thoi gian (con lai) de SX 1 loai SP'
Else
GioCaDaSuDung = GioTheoCa
ThoiGianSXConLai = ThoiGianSXConLai - GioCaDaSuDung
GioTheoCa = 0
TongGioCaDaSuDung = TongGioCaDaSuDung + GioCaDaSuDung
End If
strSql = "Insert into tblKeHoachSX (TenSP, TenCaSX, GioCaSX, NgaySX) values ('" & TenSP & "', '" & TenCaSX & "', " & GioCaDaSuDung & ", #" & NgaySX & "#)"
'Debug.Print strSql'
CurrentDb.Execute strSql
'Khi so gio theo CaSX da su dung het thi qua ca ke tiep'
If GioTheoCa = 0 Then
'Neu dang o Ca cuoi ngay thi move qua Ca dau cua ngay hom sau'
If rs_CaSX.AbsolutePosition = reccount - 1 Then
rs_CaSX.MoveFirst
'Neu ngay SX ke tiep roi vao thu 6 thi doi den thu 2'
If Weekday(NgaySX) = vbFriday Then
NgaySX = NgaySX + 3
Else
NgaySX = NgaySX + 1
End If
Else
rs_CaSX.MoveNext
End If
'Lay ten CaSX va gio theo ca SX ke tiep'
GioTheoCa = rs_CaSX!TongGioCa
TenCaSX = rs_CaSX!CaSX
End If
'Move qua san pham ke tiep khi da SX xong SP'
Loop Until TongGioCaDaSuDung = ThoiGianSX
rs_NhuCauSX.MoveNext
Loop
End Sub