Определение времени заказа комплектующих

Private Sub Command6_Click()   Dim base As Database Dim nabor As Recordset Dim Sthran As Recordset Dim Vrdost As Recordset Dim rez As Recordset Dim Pt As String Dim i, j As Integer Dim dat As Date Dim sam As Double Dim kol As Integer   Pt = Form2.Label1.Caption & "Base.mdb"   Set base = OpenDatabase(Pt) Set nabor = base.OpenRecordset("ПланПроизводства", dbOpenTable) Set Sthran = base.OpenRecordset("КодировкаBOM", dbOpenTable) Set Vrdost = base.OpenRecordset("Поставщик", dbOpenTable) Set rez = base.OpenRecordset("ПланЗакупок", dbOpenTable)   If rez.RecordCount > 0 Then For i = 1 To rez.RecordCount rez.Delete rez.MoveNext Next i End If   sam = 0 kol = 0 nabor.MoveFirst For i = 1 To nabor.RecordCount dat = nabor.Fields(3) - Vrdost.Fields(4) Sthran.MoveFirst For j = 1 To Sthran.RecordCount sam = sam * (nabor.Fields(3) - dat) + Sthran.Fields(3) * nabor.Fields(2) Sthran.MoveNext Next j kol = kol + nabor.Fields(2) If sam > Vrdost.Fields(3) Then rez.AddNew rez.Fields(1) = kol sam = 0 kol = 0 rez.Update End If nabor.MoveNext Next i   Dim samzak, sampr As Integer   nabor.MoveFirst For i = 1 To nabor.RecordCount sampr = sampr + nabor.Fields(2) nabor.MoveNext Next i   rez.MoveFirst For i = 1 To rez.RecordCount samzak = samzak + rez.Fields(1) rez.MoveNext Next i   If sampr > samzak Then rez.AddNew rez.Fields(1) = sampr - samzak rez.Update End If   kol = 0   rez.MoveFirst nabor.MoveFirst For i = 1 To rez.RecordCount rez.Edit rez.Fields(2) = nabor.Fields(3) - Vrdost.Fields(4) Do While rez.Fields(1) > kol kol = kol + nabor.Fields(2) nabor.MoveNext Loop kol = 0 rez.Update rez.MoveNext Next i   With Form2.MSFlexGrid2 .Cols = 2 .Row = 0 .Col = 0 .ColWidth(0) = 2000 .ColWidth(1) = 1500 .Text = "Количество комплектов" .Col = 1 .Text = "Дата заказа" .Rows = rez.RecordCount + 1 rez.MoveFirst For i = 1 To.Rows - 1 .Row = i .Col = 0 .Text = rez.Fields(1) .Col = 1 .Text = rez.Fields(2) rez.MoveNext Next i End With   End Sub

 

Заключительным этапом MRP цикла является формирование графика закупок комплектующих, который включает наименование, количество и дату заказа.

 

Листинг 3.7

Формирование графика закупки комплектующих

Private Sub Command17_Click()   Dim base As Database Dim PlZa As Recordset Dim PlPr As Recordset Dim rez As Recordset Dim Pt As String Dim i As Integer   Pt = Label1.Caption & "Base.mdb"   Set base = OpenDatabase(Pt) Set PlPr = base.OpenRecordset("ПланПроизводства", dbOpenTable) Set PlZa = base.OpenRecordset("ПланЗакупок", dbOpenTable) Set rez = base.OpenRecordset("ЗаказКомплектующих", dbOpenTable)   If rez.RecordCount > 0 Then rez.MoveFirst For i = 1 To rez.RecordCount rez.Delete rez.MoveNext Next i End If   For i = 1 To PlPr.RecordCount rez.AddNew rez.Fields(0) = PlPr.Fields(0) rez.Fields(1) = PlPr.Fields(1) rez.Fields(2) = PlPr.Fields(2) rez.Fields(3) = PlPr.Fields(3) rez.Update PlPr.MoveNext Next i   Dim dat As Date Dim k As Integer   rez.MoveFirst PlZa.MoveLast dat = PlZa.Fields(2) PlZa.MoveFirst PlZa.MoveNext k = 1 For i = 1 To rez.RecordCount   Do While rez.Fields(3) < PlZa.Fields(2) rez.Edit PlZa.MovePrevious rez.Fields(3) = PlZa.Fields(2) PlZa.MoveNext rez.Update rez.MoveNext k = k + 1 Loop   If dat = PlZa.Fields(2) Then For j = k To rez.RecordCount rez.Edit rez.Fields(3) = dat rez.Update rez.MoveNext Next j GoTo l1 Else PlZa.MoveNext End If   Next i   l1: With Form2.MSFlexGrid2 .Cols = 3 .Row = 0 .Col = 0 .ColWidth(0) = 1500 .ColWidth(1) = 1250 .ColWidth(2) = 1250 .Text = "Комплектов" .Col = 1 .Text = "Количество" .Col = 2 .Text = "Дата" .Rows = rez.RecordCount + 1 rez.MoveFirst For i = 1 To.Rows - 1 .Row = i .Col = 0 .Text = rez.Fields(1) .Col = 1 .Text = rez.Fields(2) .Col = 2 .Text = rez.Fields(3) rez.MoveNext Next i End With   End Sub

Определение стоимости запасов

Стоимость запасов определяется 4-мя различными способами:

1. По стоимости последних по времени закупок LIFO

2. По стоимости первых по времени закупок FIFO

3. По средней цене

4. По средней взвешенной цене

Не смотря на различие в полученных результатах с машинной точки зрения методы расчёта похожи. Поэтому приведём лишь код расчёта с помощью метода LIFO.

 

Листинг 3.8

Расчёт стоимости запасов

Private Sub Command22_Click()   Dim base As Database Dim rez As Recordset Dim PrPo As Recordset Dim zap As Recordset Dim Pt As String   Pt = Form2.Label1.Caption & "Base.mdb"   Set base = OpenDatabase(Pt) Set PrPo = base.OpenRecordset("ПродукцияПоставщиков", dbOpenTable) Set zap = base.OpenRecordset("Запас", dbOpenTable) Set rez = base.OpenRecordset("LIFO", dbOpenTable)   If rez.RecordCount > 0 Then For i = 1 To rez.RecordCount rez.Delete rez.MoveNext Next i End If   Dim sam As Integer Dim dat As Date Dim prise As Integer Dim Nazv As String   PrPo.MoveFirst For i = 1 To PrPo.RecordCount zap.MoveFirst For j = 1 To zap.RecordCount If PrPo.Fields(2) = zap.Fields(1) And zap.Fields(5) = 0 Then sam = sam + zap.Fields(2) zap.Edit zap.Fields(5) = 1 zap.Update Nazv = zap.Fields(1) If dat < zap.Fields(4) Then dat = zap.Fields(4) prise = zap.Fields(3) End If End If zap.MoveNext Next j   rez.AddNew rez.Fields(0) = Nazv rez.Fields(1) = sam rez.Fields(2) = prise rez.Update   dat = 1 prise = 0 sam = 0 PrPo.MoveNext Next i   rez.MoveFirst For i = 1 To rez.RecordCount If rez.Fields(1) = 0 And rez.Fields(2) = 0 Then rez.Delete rez.MoveNext Next i   rez.MoveFirst For i = 1 To rez.RecordCount rez.Edit rez.Fields(3) = rez.Fields(1) * rez.Fields(2) rez.Update rez.MoveNext Next i   zap.MoveFirst For i = 1 To zap.RecordCount zap.Edit zap.Fields(5) = 0 zap.Update zap.MoveNext Next i   With Form2.MSFlexGrid3 .Cols = 3 .Row = 0 .Col = 0 .ColWidth(0) = 2550 .ColWidth(1) = 750 .ColWidth(2) = 1700 .Text = "Наименование" .Col = 1 .Text = "Количество" .Col = 2 .Text = "Стоимость запасов" .Rows = rez.RecordCount + 1 rez.MoveFirst For i = 1 To.Rows - 1 .Row = i .Col = 0 .Text = rez.Fields(0) .Col = 1 .Text = rez.Fields(1) .Col = 2 .Text = rez.Fields(3) rez.MoveNext Next i End With   End Sub

Подготовка и вывод отчётов

Для вывода отчётов используются компонент Visual Basic Data Report и MS Word.

1. Data Report. Работа с Data Report похожа на работу с подготовкой отчётов в MS Access. На форме отчёта располагаем заголовки и счётчик страниц, в области данных указываем название полей БД. Для формирования отчёта необходимо использовать методику доступа к БД ADO.

 

Листинг 3.9


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: