Я полностью понимаю, что Northwind является учебным шаблоном, но он выглядит более полнофункциональным в новых версиях Access и, кажется, соответствует потребностям моего бизнеса. У меня в основном есть функционал базы данных для наших собственных покупок («Заказы на покупку»), но я бы хотел, чтобы почти точная копия этой системы была отражена для продаж (когда мы производим), т.е. добавляю продажу, когда клиент заказывает один из наших продуктов.
Подводя итоги, мы изготавливаем продукцию на заказ; поэтому, когда клиент заказывает товар, у нас нет инвентаря, и база данных выдаст ошибку. Когда делается новый заказ, нам необходимо различать по типу продукта товар, приобретаемый нами (который работает и обрабатывается уже внедренной системой «Заказы на покупку») или должен быть изготовлен нами.
Тип продукта уже является полем в Таблице продуктов.
Мы попытались изменить код VBA, используемый в «Заказах на покупку». Мы использовали грязный раствор, который вряд ли сработал; т. е. копировать каждую таблицу, форму, отчет, запрос из нижеследующих «Заказы на поставку», «Статус заказа на поставку» и «Детали заказа на покупку», и корректируя имена каждой из них, чтобы они представляли «Рабочее задание», и следя за тем, чтобы код ссылался на правильный переименовал таблицу / форму и т. д. Однако я не смог проверить, сработало ли это, потому что это вызвало проблемы в «Заказах на поставку» и «Заказах», которые должны быть связаны между собой функциями с ошибками:
"Ошибка компиляции: обнаружено неоднозначное имя. GetListPrice"
«Ошибка компиляции: Sub или Function не определены»
Это полностью не изменилось и, насколько нам известно, должно было работать так, как до того, как был сделан раздел «Заказ на работу».
Option Compare Database
Option Explicit
Sub InitParentState()
On Error Resume Next
Dim frmParent As [Form_Purchase Order Details]
Set frmParent = Me.Parent
frmParent.InitFormState
End Sub
Private Sub Form_AfterInsert()
InitParentState
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me![Unit Cost]) Then
MsgBoxOKOnly NeedUnitCost
Cancel = True
End If
End Sub
Private Sub Product_ID_AfterUpdate()
' We interpret this as user wanting to delete purchase item
' Suggested Enhancement: Prevent user from deleting items that have been posted to inventory
If IsNull(Me![Product ID]) Then
RemoveCurrentLineItem
Else
Me![Unit Cost] = GetStandardCost(Me![Product ID])
' Suggested Enhancement: Combine same product iine items
End If
End Sub
Private Sub Quantity_AfterUpdate()
If Me![Quantity] = 0 Then
RemoveCurrentLineItem
End If
End Sub
Private Sub Quantity_BeforeUpdate(Cancel As Integer)
If Me![Posted To Inventory] Or Not IsNull(Me![Date Received]) Then
MsgBoxOKOnly CannotModifyPurchaseQuantity
Cancel = True
End If
End Sub
Private Sub Unit_Cost_BeforeUpdate(Cancel As Integer)
If Me![Posted To Inventory] Or Not IsNull(Me![Date Received]) Then
MsgBoxOKOnly CannotModifyPurchasePrice
Cancel = True
End If
End Sub
Private Function RemoveCurrentLineItem() As Boolean
RemoveCurrentLineItem = eh.TryToRunCommand(acCmdDeleteRecord)
End Function
Выше приведен код из «Субформы закупок для деталей заказа на поставку», который нам фактически необходим для точной копии в качестве «Субформы для деталей заказа на работу». Как уже упоминалось, мы пытались изменить этот код, чтобы он ссылался на правильные поля для работы для рабочих заданий (т. Е. Изменяя [Детали заказа Form_Purchase] на [Детали заказа Form_Work] и т. Д., Но это каким-то образом косвенно влияет на «Заказы на покупку» и «Заказы» 'и начинает выдавать вышеуказанные сообщения об ошибках, несмотря на то, что ни одно из этих полей не было изменено.' Обнаружено неоднозначное имя 'возникает при' GetListPrice ', когда создается копия вышеуказанного кода, несмотря на то, что ничего больше не изменяется.
Многие из этих функций поставляются вместе с Northwind, но, поскольку они казались настолько функциональными, мы надеялись, что это можно просто изменить для этой цели. Если кто-то намного опытнее с этим программным обеспечением, чем мы, мы также будем рады получить некоторую помощь вне форума. Уже проделана огромная работа (многие рабочие процессы уже работают), но на данный момент мы зашли в полный тупик.