Смекни!
smekni.com

Разработка экономической информационной системы материальных оборотных активов (стр. 9 из 9)

Листинг 3.7

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

Private Sub Command17_Click()Dim base As DatabaseDim PlZa As RecordsetDim PlPr As RecordsetDim rez As RecordsetDim Pt As StringDim i As IntegerPt = 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 Thenrez.MoveFirstFor i = 1 To rez.RecordCountrez.Deleterez.MoveNextNext iEnd IfFor i = 1 To PlPr.RecordCountrez.AddNewrez.Fields(0) = PlPr.Fields(0)rez.Fields(1) = PlPr.Fields(1)rez.Fields(2) = PlPr.Fields(2)rez.Fields(3) = PlPr.Fields(3)rez.UpdatePlPr.MoveNextNext iDim dat As DateDim k As Integerrez.MoveFirstPlZa.MoveLastdat = PlZa.Fields(2)PlZa.MoveFirstPlZa.MoveNextk = 1For i = 1 To rez.RecordCountDo While rez.Fields(3) < PlZa.Fields(2)rez.EditPlZa.MovePreviousrez.Fields(3) = PlZa.Fields(2)PlZa.MoveNextrez.Updaterez.MoveNextk = k + 1LoopIf dat = PlZa.Fields(2) ThenFor j = k To rez.RecordCountrez.Editrez.Fields(3) = datrez.Updaterez.MoveNextNext jGoTo l1ElsePlZa.MoveNextEnd IfNext il1: 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 + 1rez.MoveFirstFor 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.MoveNextNext iEnd WithEnd Sub

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

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

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

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

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

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

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

Листинг 3.8

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

Private Sub Command22_Click()Dim base As DatabaseDim rez As RecordsetDim PrPo As RecordsetDim zap As RecordsetDim Pt As StringPt = 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 ThenFor i = 1 To rez.RecordCountrez.Deleterez.MoveNextNext iEnd IfDim sam As IntegerDim dat As DateDim prise As IntegerDim Nazv As StringPrPo.MoveFirstFor i = 1 To PrPo.RecordCountzap.MoveFirstFor j = 1 To zap.RecordCountIf PrPo.Fields(2) = zap.Fields(1) And zap.Fields(5) = 0 Thensam = sam + zap.Fields(2)zap.Editzap.Fields(5) = 1zap.UpdateNazv = zap.Fields(1)If dat < zap.Fields(4) Thendat = zap.Fields(4)prise = zap.Fields(3)End IfEnd Ifzap.MoveNextNext jrez.AddNewrez.Fields(0) = Nazvrez.Fields(1) = samrez.Fields(2) = priserez.Updatedat = 1prise = 0sam = 0PrPo.MoveNextNext irez.MoveFirstFor i = 1 To rez.RecordCountIf rez.Fields(1) = 0 And rez.Fields(2) = 0 Then rez.Deleterez.MoveNextNext irez.MoveFirstFor i = 1 To rez.RecordCountrez.Editrez.Fields(3) = rez.Fields(1) * rez.Fields(2)rez.Updaterez.MoveNextNext izap.MoveFirstFor i = 1 To zap.RecordCountzap.Editzap.Fields(5) = 0zap.Updatezap.MoveNextNext iWith 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 + 1rez.MoveFirstFor 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.MoveNextNext iEnd WithEnd Sub

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

Для вывода отчётов используются компонент VisualBasicDataReport и MSWord.

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

Листинг 3.9

Формирование отчёта с использованием DataReport

Sub Отчёт(tbl As String)Dim Pt As StringPt = Form2.Label1.Caption & "Base.mdb"Set ist = New ADODB.Connectionist.Provider = "Microsoft.Jet.OLEDB.4.0"ist.ConnectionString = Ptist.OpenSet zap = New ADODB.Recordsetzap.CursorType = adOpenDynamiczap.Source = tblSet zap.ActiveConnection = istzap.OpenEnd SubPrivate Sub Command13_Click()Отчёт "ПродукцияПоставщиков"Set DataReport3.DataSource = zapDataReport3.ShowEnd Sub

Рис 3.4 Отчёт с использованием DataReport

2. MSWord. При использовании MSWord необходимо создать файл с расширением “.doc” затем он наполняется необходимой информацией и сохраняется в указанном месте. Естественно программа всё это делает в автоматическом режиме.


Листинг 3.10

Формирование отчёта с использованием MSWord

Private Sub Command9_Click()Dim base As DatabaseDim nabor As RecordsetDim Pt As StringDim objWord As Word.ApplicationDim objDoc As Word.DocumentPt = Form2.Label1.Caption & "Base.mdb"Set base = OpenDatabase(Pt)Set nabor = base.OpenRecordset("Предприятие", dbOpenTable)Set objWord = New Word.ApplicationobjWord.Visible = TrueSet objDoc = objWord.Documents.AddobjDoc.ActivateobjDoc.ActiveWindow.Selection.Font.Size = 20objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter " Предприятие"objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.Font.Bold = TrueobjDoc.ActiveWindow.Selection.EndOfobjDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "__________________________________________________________"objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.Font.Bold = TrueobjDoc.ActiveWindow.Selection.Font.Size = 14objDoc.ActiveWindow.Selection.EndOfobjDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "Названиепредприятия " & nabor.Fields(0)objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "Адрес " & nabor.Fields(1)objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "ФИОДиректора " & nabor.Fields(2)objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "ФИОглавногобухгалтера " & nabor.Fields(3)objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "Производственныемощностипредприятия " & nabor.Fields(4) & " штук"objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "Производственныйциклдлякаждогоизделия " & nabor.Fields(5) & " дня"objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.Font.Bold = FalseobjDoc.ActiveWindow.Selection.Font.Size = 14objDoc.ActiveWindow.Selection.EndOfobjDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter "__________________________________________________________"objDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.Font.Bold = TrueobjDoc.ActiveWindow.Selection.Font.Size = 14objDoc.ActiveWindow.Selection.EndOfobjDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.InsertAfter DateobjDoc.ActiveWindow.Selection.InsertParagraphAfterobjDoc.ActiveWindow.Selection.Font.Bold = TrueobjDoc.ActiveWindow.Selection.Font.Size = 10objDoc.ActiveWindow.Selection.EndOfPt = Form2.Label1.Caption & Date & "Предприятие.doc"objDoc.SaveAs PtEnd Sub