Загрузка формы «Закупки»

Private Sub Form_Load()   Dim base As Database Dim nabor As Recordset Dim Pt As String Dim i As Integer Pt = Form2.Label1.Caption & "Base.mdb"   Form5.Width = 7455 Form5.Height = 6045   Set base = OpenDatabase(Pt) Set nabor = base.OpenRecordset("КодировкаBOM", dbOpenTable)   For i = 1 To nabor.RecordCount Combo2.AddItem nabor.Fields(1) nabor.MoveNext Next i nabor.Close   Set nabor = base.OpenRecordset("Поставщик", dbOpenTable) Combo1.AddItem "нет"   For i = 1 To nabor.RecordCount Combo1.AddItem nabor.Fields(0) nabor.MoveNext Next i nabor.Close base.Close   Form5.MSFlexGrid1.Row = 0 Form5.MSFlexGrid1.Col = 0 Form5.MSFlexGrid1.Text = "КодBOM" Form5.MSFlexGrid1.Col = 1 Form5.MSFlexGrid1.Text = "Наименование" Form5.MSFlexGrid1.Col = 2 Form5.MSFlexGrid1.Text = "Количество" Form5.MSFlexGrid1.Col = 3 Form5.MSFlexGrid1.Text = "Цена" Form5.MSFlexGrid1.Col = 4 Form5.MSFlexGrid1.Text = "Дата" Form5.MSFlexGrid1.ColWidth(1) = 3000 End Sub

 

Затем после выбора группы наименований и поставщика происходит заполнение компонента «Наименование», причём если поставщик не выбран происходит отбор самой дешёвой комплектующей этой группы.

 

Листинг 3.2

Подбор наименований

Private Sub Command5_Click()   Dim base As Database Dim nabor As Recordset Dim Pt As String Dim i As Integer   Combo3.Clear   Label6.Caption = "Подобранно"   Pt = Form2.Label1.Caption & "Base.mdb" Set base = OpenDatabase(Pt) Set nabor = base.OpenRecordset("КодировкаBOM", dbOpenTable)   For i = 1 To nabor.RecordCount If Combo2.Text = nabor.Fields(1) Then Kod = nabor.Fields(0) nabor.MoveNext Next i nabor.Close   Set nabor = base.OpenRecordset("ПродукцияПоставщиков", dbOpenTable)   If Combo1.Text = "" Or Combo1.Text = "нет" Then For i = 1 To nabor.RecordCount If Kod = nabor.Fields(1) Then Combo3.AddItem nabor.Fields(2) nabor.MoveNext Next i Else For i = 1 To nabor.RecordCount If Kod = nabor.Fields(1) And nabor.Fields(0) = Combo1.Text Then Combo3.AddItem nabor.Fields(2) nabor.MoveNext Next i End If   End Sub

 

После ввода количества и даты заказ можно переслать в компонент MSFlexGride.

 

Листинг 3.3

Механизм накопления информации

Private Sub Command1_Click()   Dim base As Database Dim nabor As Recordset Dim Pt As String Dim i As Integer Dim MinPrise As Integer   Pt = Form2.Label1.Caption & "Base.mdb" Set base = OpenDatabase(Pt) Set nabor = base.OpenRecordset("ПродукцияПоставщиков", dbOpenTable)   Form5.MSFlexGrid1.Rows = Form5.MSFlexGrid1.Rows + 1 Form5.MSFlexGrid1.Row = Form5.MSFlexGrid1.Rows - 1   If Combo1.Text = "" Or Combo1.Text = "нет" Then   Form5.MSFlexGrid1.Col = 0 Form5.MSFlexGrid1.Text = Kod Form5.MSFlexGrid1.Col = 1 Form5.MSFlexGrid1.Text = Combo3.Text Form5.MSFlexGrid1.Col = 2 Form5.MSFlexGrid1.Text = Text1.Text Form5.MSFlexGrid1.Col = 4 Form5.MSFlexGrid1.Text = Text2.Text   MinPrise = 9900 For i = 1 To nabor.RecordCount If nabor.Fields(2) = Combo3.Text And nabor.Fields(3) < MinPrise Then MinPrise = nabor.Fields(3) End If nabor.MoveNext Next i   Form5.MSFlexGrid1.Col = 3 Form5.MSFlexGrid1.Text = MinPrise   Else   Form5.MSFlexGrid1.Col = 0 Form5.MSFlexGrid1.Text = Kod Form5.MSFlexGrid1.Col = 1 Form5.MSFlexGrid1.Text = Combo3.Text Form5.MSFlexGrid1.Col = 2 Form5.MSFlexGrid1.Text = Text1.Text Form5.MSFlexGrid1.Col = 4 Form5.MSFlexGrid1.Text = Text2.Text   For i = 1 To nabor.RecordCount If nabor.Fields(2) = Combo3.Text Then Form5.MSFlexGrid1.Col = 3 Form5.MSFlexGrid1.Text = nabor.Fields(3) End If nabor.MoveNext Next i End If End Sub

После нажатия кнопки «Занести в БД» происходит запись информации в базу данных.

 

Листинг 3.4

Запись информации в БД

Private Sub Command3_Click()   Dim base As Database Dim nabor As Recordset Dim Pt As String Dim i As Integer   Pt = Form2.Label1.Caption & "Base.mdb" Set base = OpenDatabase(Pt) Set nabor = base.OpenRecordset("Запас", dbOpenTable)   For i = 1 To Form5.MSFlexGrid1.Rows - 1 Form5.MSFlexGrid1.Row = i nabor.AddNew Form5.MSFlexGrid1.Col = 0 nabor.Fields(0) = Form5.MSFlexGrid1.Text Form5.MSFlexGrid1.Col = 1 nabor.Fields(1) = Form5.MSFlexGrid1.Text Form5.MSFlexGrid1.Col = 2 nabor.Fields(2) = Form5.MSFlexGrid1.Text Form5.MSFlexGrid1.Col = 3 nabor.Fields(3) = Form5.MSFlexGrid1.Text Form5.MSFlexGrid1.Col = 4 nabor.Fields(4) = Form5.MSFlexGrid1.Text nabor.Update Next i MsgBox "Данные успешно занесены в БД",, "Сообщение" End Sub

MRP модуль

Основная задача MRP модуля – сформировать план закупки комплектующих. Для этого план заказов разбивается на подневной план производства с учётом производственных мощностей и продолжительности производственного цикла.

 

Листинг 3.5

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

Private Sub Command15_Click()   Dim base As Database Dim nabor As Recordset Dim rezalt As Recordset Dim prmo As Recordset Dim Pt As String Dim i, sam, kol, koldney As Integer Dim dat, prdat As Date   Pt = Form2.Label1.Caption & "Base.mdb"   Set base = OpenDatabase(Pt) Set nabor = base.OpenRecordset("ПроизводственныйПлан", dbOpenTable) Set rezalt = base.OpenRecordset("ПланПроизводства", dbOpenTable) Set prmo = base.OpenRecordset("Предприятие", dbOpenTable)   If rezalt.RecordCount > 0 Then rezalt.MoveFirst For i = 1 To rezalt.RecordCount rezalt.Delete rezalt.MoveNext Next i End If   sam = 0 For i = 1 To nabor.RecordCount sam = sam + nabor.Fields(2) nabor.MoveNext Next i   prmo.MoveFirst koldney = Round(sam / prmo.Fields(4)) nabor.MoveFirst For i = 1 To nabor.RecordCount dat = nabor.Fields(3) kol = nabor.Fields(2) Do While kol > 0 rezalt.AddNew rezalt.Fields(0) = nabor.Fields(0) rezalt.Fields(1) = nabor.Fields(1) If kol > prmo.Fields(4) Then rezalt.Fields(2) = prmo.Fields(4) Else rezalt.Fields(2) = kol End If If dat < prdat Then dat = prdat + prmo.Fields(5) rezalt.Fields(3) = dat dat = dat + prmo.Fields(5) prdat = rezalt.Fields(3) kol = kol - prmo.Fields(4) rezalt.Update Loop nabor.MoveNext Next i   With Form2.MSFlexGrid2 .Cols = 4 .ColWidth(0) = 1000 .ColWidth(1) = 1500 .ColWidth(2) = 1000 .ColWidth(3) = 1000 .Row = 0 .Col = 0 .Text = "Код заказа" .Col = 1 .Text = "Конфигурация" .Col = 2 .Text = "Количество" .Col = 3 .Text = "Дата" .Rows = rezalt.RecordCount + 1 rezalt.MoveFirst For i = 1 To.Rows - 1 .Row = i .Col = 0 .Text = rezalt.Fields(0) .Col = 1 .Text = rezalt.Fields(1) .Col = 2 .Text = rezalt.Fields(2) .Col = 3 .Text = rezalt.Fields(3) rezalt.MoveNext Next i End With   End Sub

 

Следующим этапом станет определение точки заказа комплектующих. Для этого в цикле нарастающим итогом рассчитывается стоимость хранения партии комплектующих, если в како-то итерации сума на хранение превышает издержки на перевозку это и будет временной точкой заказа комплектующих.

 

Листинг 3.6


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



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