home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / software / pelne / optionp / mts4.cab / Account.VB_Step2_account.cls < prev    next >
Text File  |  1997-11-14  |  3KB  |  110 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "Account"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = True
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = True
  10. ' Filename: Account.vbp
  11. '
  12. ' Description:  Account Class
  13. '
  14. ' This file is provided as part of the Microsoft Transaction Server Samples
  15. '
  16. ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT
  17. ' WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
  18. ' INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
  19. ' OF MERCHANTABILITY AND/OR FITNESS FOR A  PARTICULAR
  20. ' PURPOSE.
  21. '
  22. ' Copyright (C) 1997 Microsoft Corporation, All rights reserved
  23.  
  24. Option Explicit
  25.  
  26. Private Const ERROR_NUMBER = vbObjectError + 0
  27. Private Const APP_ERROR = -2147467008
  28. Private Const strConnect = "FILEDSN=MTSSamples"
  29.  
  30. Public Function Post(ByVal lngAccountNo As Long, ByVal lngAmount As Long) As String
  31.     
  32.     Dim strResult As String
  33.     
  34.     On Error GoTo ErrorHandler
  35.     
  36.     ' obtain the ADO environment and connection
  37.     Dim adoConn As New ADODB.Connection
  38.     Dim varRows As Variant
  39.     
  40.     adoConn.Open strConnect
  41.    
  42.     On Error GoTo ErrorCreateTable
  43.  
  44.     ' update the balance
  45.     Dim strSQL As String
  46.     strSQL = "UPDATE Account SET Balance = Balance + " + Str$(lngAmount) + " WHERE AccountNo = " + Str$(lngAccountNo)
  47.     
  48. TryAgain:
  49.     adoConn.Execute strSQL, varRows
  50.  
  51.     ' if anything else happens
  52.     On Error GoTo ErrorHandler
  53.   
  54.     ' get resulting balance which may have been further updated via triggers
  55.     strSQL = "SELECT Balance FROM Account WHERE AccountNo = " + Str$(lngAccountNo)
  56.     
  57.     Dim adoRS As ADODB.Recordset
  58.     Set adoRS = adoConn.Execute(strSQL)
  59.     If adoRS.EOF Then
  60.         Err.Raise Number:=APP_ERROR, Description:="Error. Account " + Str$(lngAccountNo) + " not on file."
  61.     End If
  62.  
  63.     Dim lngBalance As Long
  64.     lngBalance = adoRS.Fields("Balance").Value
  65.     
  66.     ' check if account is overdrawn
  67.     If (lngBalance) < 0 Then
  68.         Err.Raise Number:=APP_ERROR, Description:="Error. Account " + Str$(lngAccountNo) + " would be overdrawn by " + Str$(lngBalance) + ". Balance is still " + Str$(lngBalance - lngAmount) + "."
  69.     Else
  70.         If lngAmount < 0 Then
  71.             strResult = strResult & "Debit from account " & lngAccountNo & ", "
  72.         Else
  73.             strResult = strResult & "Credit to account " & lngAccountNo & ", "
  74.         End If
  75.         strResult = strResult + "balance is $" & Str$(lngBalance) & ". (VB)"
  76.     End If
  77.  
  78.     ' cleanup
  79.     Set adoRS = Nothing
  80.     Set adoConn = Nothing
  81.     
  82.     Post = strResult
  83.     
  84.  Exit Function
  85.  
  86. ErrorCreateTable:
  87.     On Error GoTo ErrorHandler
  88.     
  89.     ' create the account table
  90.     Dim objCreateTable As CreateTable
  91.     Set objCreateTable = GetObjectContext.CreateInstance("Bank.CreateTable")
  92.     objCreateTable.CreateAccount
  93.       
  94.     GoTo TryAgain
  95.  
  96. ErrorHandler:
  97.     ' cleanup
  98.     If Not adoRS Is Nothing Then
  99.         Set adoRS = Nothing
  100.     End If
  101.     If Not adoConn Is Nothing Then
  102.         Set adoConn = Nothing
  103.     End If
  104.     
  105.     Post = ""                       ' indicate that an error occurred
  106.     Err.Raise Err.Number, "Bank.Accout.Post", Err.Description
  107.     
  108. End Function
  109.  
  110.