'Идентификатор продавца заносится в новую добавленную запись
rstOrd!key_salman = DLookup("key_salman",_"salesman", strSearch)
rstOrd.UPDATE
Me!cmbCust.Enabled = True
Me!txtFam.Enabled = True
End Sub
В результате выполнения этого кода в таблицу order_ вносится одна запись, но, обратите
внимание, началась транзакция. Эти изменения еще не окончательные, мы можем при
определенных обстоятельствах сделать откат. При работе программы предполагается, что
каждый продавец, оформляющий сделку, будет запускать приложение со своим
пользовательским именем, а с помощью этого имени будет находиться идентификатор, который и
попадет в новую запись таблицы order_. Для этого мы используем свойство Username объекта
mywksp.
strSearch = "Last_name=" & Chr(34) & mywksp.UserName &_ Chr(34)
'Добавляем запись
rstOrd.AddNew
'Идентификатор продавца заносится в новую
'добавленную запись
rstOrd!key_salman = DLookup("key_salman",_ "salesman", strSearch)
После чего необходимо заняться поисками покупателя в предположении, что он уже совершал
покупку до этого, либо ввести данные о нем в базу данных. При этом данные о покупателе будут
сохраняться даже в том случае, если покупка не будет совершена, так как в дальнейшем вы
можете использовать его адрес и имя для рассылки рекламных проспектов, приглашений на
презентацию, для статистической обработки (жители какого квартала действительно покупают
автомобили, а какого любят просто заходить в магазин) и для прочих нужд (зайти к клиенту в
гости, находясь по соседству). С этой целью мы начинаем параллельную транзакцию в коде
события Click, кнопки с подписью "Новый клиент":
Private Sub cmbNcl_Click()
Set mywksp1 = DBEngine.Workspaces(0)
Set rstcust = mywksp1.Databases(0).OpenRecordset("customer", _ dbOpenDynaset)
mywksp1.BeginTrans
DoCmd.OpenForm "Клиенты", acNormal, , , acAdd
End Sub
Эта транзакция завершится уже в форме "Клиенты". При этом, несмотря на все прекрасные
перспективы дальнейшего использования данных о клиенте, существует возможность отката и в
этом случае, например, если клиент вдруг неожиданно скроется, не успев назвать свой адрес и
факс. Без них он для вас неинтересен.
Если клиент настаивает на том, что он совершал у вас покупку, то можно поискать его в вашей
базе данных с помощью комбинированного списка. Применение фильтра ускорит поиск, фильтр
можно установить с помощью единственного текстового поля, которое присутствует в нашей
форме. Этого мы добиваемся с помощью кода, который выполняется при наступлении события
LostFocus (Потеря фокуса):
Private Sub txtFam_LostFocus()
If Len(Trim(txtFam)) >> 0 Then
Me!cmbCust.RowSource = "SELECT DISTINCTROW _
customer.key_customer,customer.name_customer,_
customer.address, customer.tel FROM customer Where _ customer.name_customer
like " & Chr(34) & Trim(txtFam) &_
"*" & _ Chr(34) & ";"
Else
Me!cmbCust.RowSource = "SELECT DISTINCTROW _
customer.key_customer,customer.name_customer,
_ customer.address, customer.tel FROM customer ;"
End If
End Sub
В данном коде используется свойство комбинированного списка - динамически изменять
содержимое списка значений, другими словами, возможность использовать свойство RowSource
converted to PDF by HupBaH9I