Perform Method, Step5 (Visual Basic)
Public Function Perform(ByVal lngPrimeAccount As Long,_
ByVal lngSecondAccount As Long, ByVal lngAmount _
As Long, ByVal lngTranType As Long) As String
Dim strResult As String
On Error GoTo ErrorHandler
' create the account object using our context
Dim objAccount As Bank.Account
Set objAccount = _
GetObjectContext.CreateInstance("Bank.Account")
If objAccount Is Nothing Then
Err.Raise ERROR_NUMBER, _
Description:="Could not create account object"
End If
' call the post function based on the
' transaction type
Select Case lngTranType
Case 1
strResult = objAccount.Post(lngPrimeAccount, 0 - lngAmount)
If strResult = "" Then
Err.Raise ERROR_NUMBER, _
Description:=strResult
End If
Case 2
strResult = objAccount.Post(lngPrimeAccount, lngAmount)
If strResult = "" Then
Err.Raise ERROR_NUMBER, _
Description:=strResult
End If
Case 3
Dim strResult1 As String, strResult2 As String
' do the credit
strResult1 = objAccount.Post(lngSecondAccount, lngAmount)
If strResult1 = "" Then
Err.Raise ERROR_NUMBER, _
Description:=strResult1
Else
' then do the debit
strResult2 = objAccount.Post(lngPrimeAccount, 0 - lngAmount)
If strResult2 = "" Then
' debit failed
Err.Raise ERROR_NUMBER, _
Description:=strResult2
Else
strResult = strResult1 + " " + strResult2
End If
End If
Case Else
Err.Raise ERROR_NUMBER, _
Description:="Invalid Transaction Type"
End Select
' Get Receipt Number for the transaction
Dim objReceiptNo As Bank.GetReceipt
Dim lngReceiptNo As Long
Set objReceiptNo = GetObjectContext.CreateInstance("Bank.GetReceipt")
lngReceiptNo = objReceiptNo.GetNextReceipt
If lngReceiptNo > 0 Then
strResult = strResult & "; Receipt No: " _
& Str$(lngReceiptNo)
End If
' we are finished and happy
GetObjectContext.SetComplete
Perform = strResult
Exit Function
ErrorHandler:
GetObjectContext.SetAbort ' we are unhappy
Perform = "" ' indicate that an error occured
Err.Raise Err.Number, "Bank.MoveMoney.Perform", _
Err.Description
End Function