You are on page 1of 46

Ado.

Net : Views

Yugo National Bank


The Yugo National Bank is a fictitious company that acts as a bank. It creates bank accounts
for customers, which is done by the employees of the company. The customers can then
deposit or withdraw money.
Page | 1
This is a Microsoft SQL Server database application created using Microsoft Visual Basic.
One of the main features of this application is that it explores various features of Transact-
SQL views, including the ability to view records and/or to perform data entry.

Besides the views, this application also explores the fundamentals of stored procedures,
including how to create, execute, and use one in a graphical application.

Practical Learning: Introducing Views


1. Start Microsoft Visual Basic and create a new Windows Application
named YugoNationalBank1
2. In the Solution Explorer, right-click Form1.vb and click Rename
3. Type Central.vb and press Enter
4. Double-click the middle of the form and implement the Load event as follows:

Imports System.Data.SqlClient
Public Class Central
Friend Sub CreateDatabase()
Dim strAction As String
Dim Command As SqlCommand = Nothing
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local); " & _
"Integrated Security='SSPI';")

strAction = "IF EXISTS ( " & _


"SELECT name " & _
"FROM sys.databases " & _
"WHERE name = N'YugoNationalBank1') " & _
"DROP DATABASE YugoNationalBank1; " & _
"CREATE DATABASE YugoNationalBank1"

Command = New SqlCommand(strAction, Connect)


Connect.Open()
Command.ExecuteNonQuery()
MsgBox("A database named YugoNationalBank1 " & _
"has been created.")
End Using
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local); " & _
"Database='YugoNationalBank1'; " & _
"Integrated Security='SSPI';")

strAction = "CREATE TABLE dbo.AccountTypes( " & _


"AccountTypeID int Identity(1,1) NOT NULL, " & _
"AccountType nvarchar(40) NOT NULL, " & _
"Notes ntext NULL, " & _
Ado.Net : Views

"CONSTRAINT PK_AccountTypes PRIMARY " & _


" KEY (AccountTypeID));"
Command = New SqlCommand(strAction, Connect)
Connect.Open()
Command.ExecuteNonQuery()
MsgBox("A table named AccountTypes " & _
"has been added to the database.") Page | 2
End Using
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local); " & _
"Database='YugoNationalBank1'; " & _
"Integrated Security='SSPI';")

strAction = "CREATE TABLE dbo.Employees( " & _


"EmployeeID int identity(1,1) NOT NULL, " & _
"EmployeeNumber char(6), " & _
"FirstName nvarchar(32), " & _
"LastName nvarchar(32) NOT NULL, " & _
"Title nvarchar(50), " & _
"CanCreateNewAccount bit, " & _
"HourlySalary nvarchar(50), " & _
"Username nvarchar(20), " & _
"Password nvarchar(20), " & _
"EmailAddress nvarchar(100), " & _
"Notes ntext, " & _
"CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID));"
Command = New SqlCommand(strAction, Connect)

Connect.Open()
Command.ExecuteNonQuery()
MsgBox("A table named Employees has " & _
"been added to the database.")
End Using

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local); " & _
"Database='YugoNationalBank1'; " & _
"Integrated Security='SSPI';")

strAction = "CREATE TABLE dbo.Customers( " & _


"CustomerID int Identity(1,1) NOT NULL, " & _
"EmployeeID int Constraint FK_Employee " & _
" References Employees(EmployeeID), " & _
"DateCreated nvarchar(50), " & _
"AccountTypeID int Constraint FK_TypeOfAccount " & _
" References AccountTypes(AccountTypeID), " & _
"AccountNumber nvarchar(12), " & _
"CustomerName nvarchar(50) NOT NULL, " & _
"Address nvarchar(100), " & _
"City nvarchar(50), " & _
"State nvarchar(50), " & _
"ZIPCode nvarchar(50), " & _
"AccountStatus nvarchar(50), " & _
"Username nvarchar(20), " & _
"Password nvarchar(20), " & _
"EmailAddress nvarchar(100), " & _
Ado.Net : Views

"Notes ntext, " & _


"CONSTRAINT PK_Customers PRIMARY KEY (CustomerID));"
Command = New SqlCommand(strAction, Connect)

Connect.Open()
Command.ExecuteNonQuery()
MsgBox("A table named Customers has " & _ Page | 3
"been added to the database.")
End Using

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local); " & _
"Database='YugoNationalBank1'; " & _
"Integrated Security='SSPI';")

strAction = "CREATE TABLE dbo.AccountsTransactions( " & _


"AccountTransactionID int identity(1, 1) NOT NULL, " & _
"EmployeeID int Constraint FK_Clerk " & _
" References Employees(EmployeeID), " & _
"CustomerID int Constraint FK_Depositor " & _
" References Customers(CustomerID) NOT NULL, " & _
"TransactionDate nvarchar(50), " & _
"TransactionType nvarchar(50), " & _
"CurrencyType nvarchar(50), " & _
"DepositAmount nvarchar(50), " & _
"WithdrawalAmount nvarchar(50), " & _
"ChargeAmount nvarchar(50), " & _
"ChargeReason nvarchar(50), " & _
"Balance money, " & _
"Notes ntext, " & _
"CONSTRAINT PK_AccountTransactions PRIMARY KEY " & _
" (AccountTransactionID));"
Command = New SqlCommand(strAction, Connect)

Connect.Open()
Command.ExecuteNonQuery()
MsgBox("A table named AccountTransactions " & _
"has been added to the database.")
End Using

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")
Dim strTimesheets As String = "CREATE TABLE dbo.Timesheets ( " & _
"TimesheetID int identity(1, 1) NOT NULL, " & _
"EmployeeNumber nvarchar(5), " & _
"StartDate nvarchar(50), " & _
"TimesheetCode nvarchar(15), " & _
"Week1Monday nvarchar(6), " & _
"Week1Tuesday nvarchar(6), " & _
"Week1Wednesday nvarchar(6), " & _
"Week1Thursday nvarchar(6), " & _
"Week1Friday nvarchar(6), " & _
"Week1Saturday nvarchar(6), " & _
"Week1Sunday nvarchar(6), " & _
Ado.Net : Views

"Week2Monday nvarchar(6), " & _


"Week2Tuesday nvarchar(6), " & _
"Week2Wednesday nvarchar(6), " & _
"Week2Thursday nvarchar(6), " & _
"Week2Friday nvarchar(6), " & _
"Week2Saturday nvarchar(6), " & _
"Week2Sunday nvarchar(6), " & _ Page | 4
"Notes ntext, " & _
"CONSTRAINT PK_Timesheets PRIMARY KEY (TimesheetID));"

Command = New SqlCommand(strTimesheets, Connect)


Connect.Open()
Command.ExecuteNonQuery()
msgbox("A table named Timesheets has been created.")
End Using
End Sub
Private Sub Central_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
CreateDatabase()
End Sub
End Class

5. Execute the application to create the database


6. Close the form and return to your programming environment
7. To create a data source, on the main menu, click Project -> Add New Data Source...
8. In the first page of the wizard, make sure Database is selected and click Next
9. In the combo box
a. If you see a YugoNationalBank1, select it
b. If you do not have YugoNationalBank1, click New Connection... In the Server
combo box, select the server or type (local). In the Select Or Enter A
Database Name combo box, select YugoNationalBank1. Click Test Connection.
Click OK twice. In the Data Source Configuration Wizard, make sure the new
connection is selected and click Next. Change the Connection String
to csYugoNationalBank and click Next. Click the check box of Tables.
Change the DataSet Name to DsYugoNationalBank
Ado.Net : Views

Page | 5

10. Click Finish


11. To create a new form, on the main menu, click Project -> Add Windows Form...
12. Set the Name to AccountTypes and click Add
13. From the Data Sources window, drag the AccountTypes node and drop it on the form
14. Design the form as follows:

Control Text Name Other Properties


Anchor: Top,
DataGridView DgvProperties Bottom, Left,
Right
Anchor: Bottom,
Button Close BtnClose
Right
Double-click the Close button and implement its even as follows:
Ado.Net : Views

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

15. Access the Central form, add a button and change its properties as follows: Page | 6
(Name): BtnAccountTypes
Text: Account Types...
16. Double-click the Account Types button and implement its event as follows:

Private Sub Central_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles MyBase.Load
' CreateDatabase()
End Sub

Private Sub btnAccountTypes_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles btnAccountTypes.Click
Dim Types As AccountTypes = New AccountTypes
Types.ShowDialog()
End Sub

17. Execute the application and open the Account Types form
18. Create the following records:

AccountType
Saving
Checking
Certificate of Deposit

19. Close the forms and return to your programming environment


20. To create a new form, on the main menu, click Project -> Add Windows Form...
21. Set the Name to Employees and click Add
Ado.Net : Views

22. In the Data Sources window, click Employees and click the arrow on its right side to
drop the combo box
23. Select Details
24. Drag the Employees node and drop it on the form
25. Design the form as follows: Page | 7

26. Double-click the Close button and implement its even as follows:

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

27. Access the Central form, add a button and change its properties as follows:
(Name): BtnEmployees
Text: Employees...
28. Double-click the Account Types button and implement its event as follows:

Private Sub btnEmployees_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles btnEmployees.Click
Dim Staff As Employees = New Employees()
Staff.ShowDialog()
End Sub

29. Execute the application and open the Employees form


Ado.Net : Views

30. Create the following records:

Page | 8

31. Close the forms and return to your programming environment


32. To create a new form, on the main menu, click Project -> Add Windows Form...
33. Set the Name to Timesheet and click Add
34. Design the form as follows:
Ado.Net : Views

Page | 9

Other
Control Text Name
Properties
Label Employee #:
MaskedTextBox TxtEmployeeNumber Mask: 00000
Label . LblEmployeeName
Label Start Date:
DateTimePicker DtpStartDate
Label End Date:
Label . LblEndDate
Label Mon
Label Tue
Label Wed
Label Thu
Label Fri
Label Sat
Label Sun
Label Week 1:
TextBox 0.00 TxtWeek1Monday TextAlign: Right
TextBox 0.00 TxtWeek1Tuesday TextAlign: Right
TextBox 0.00 TxtWeek1Wednesday TextAlign: Right
TextBox 0.00 TxtWeek1Thursday TextAlign: Right
TextBox 0.00 TxtWeek1Friday TextAlign: Right
TextBox 0.00 TxtWeek1Saturday TextAlign: Right
Ado.Net : Views

TextBox 0.00 TxtWeek1Sunday TextAlign: Right


Label Week 2:
TextBox 0.00 TxtWeek2Monday TextAlign: Right
TextBox 0.00 TxtWeek2Tuesday TextAlign: Right
TextBox 0.00 TxtWeek2Wednesday TextAlign: Right Page | 10
TextBox 0.00 TxtWeek2Thursday TextAlign: Right
TextBox 0.00 TxtWeek2Friday TextAlign: Right
TextBox 0.00 TxtWeek2Saturday TextAlign: Right
TextBox 0.00 TxtWeek2Sunday TextAlign: Right
Label Notes
TextBox TxtNotes Multiline: true
Button Submit BtnSubmit
Button Reset BtnReset
Button Close BtnClose

35. Right-click the form and click View Code


36. In the Class Name combo box, select (TimeSheet Events)
37. In the Method Name combo box, select Load and make changes as follows:

Imports System.Data.SqlClient

Public Class Timesheet


Dim EmployeeID As Integer
Dim IsNewRecord As Boolean
Dim ValidTimeSheet As Boolean
Dim StrTimeSheetCode As String

Private Sub Timesheet_Load(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles Me.Load
EmployeeID = 0
IsNewRecord = True
ValidTimeSheet = False
StrTimeSheetCode = ""
End Sub
End Class

38. In the Class Name combo box, select TxtEmployeeNumber


39. In the Method Name combo box, select Leave and implement the even as follows:

Private Sub TxtEmployeeNumber_Leave(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles
TxtEmployeeNumber.Leave
If TxtEmployeeNumber.Text = "" Then
ValidTimeSheet = False
Exit Sub
Ado.Net : Views

End If
Dim strSelect As String = "SELECT * FROM Employees " & _
"WHERE EmployeeNumber = '" & _
TxtEmployeeNumber.Text & "';"
Dim Connect As SqlConnection = _
New SqlConnection("Data Source=(local); " & _
"Database='YugoNationalBank1';" & _ Page | 11
"Integrated Security=true")
Dim cmdDatabase As SqlCommand = New SqlCommand(strSelect, Connect)

Dim dsEmployees As DataSet = New DataSet


Dim sda As SqlDataAdapter = New SqlDataAdapter

sda.SelectCommand = cmdDatabase
sda.Fill(dsEmployees)

Try
Dim recEmployee As DataRow = dsEmployees.Tables(0).Rows(0)

If recEmployee.IsNull("EmployeeNumber") Then
ValidTimeSheet = False
Throw New System.IndexOutOfRangeException("Bad Employee Number!")
Else
ValidTimeSheet = True
EmployeeID = CType(recEmployee("EmployeeID"), Integer)
Dim strFullName As String = _
CStr(recEmployee("FirstName")) & _
" " & CStr(recEmployee("LastName"))
LblEmployeeName.Text = "Welcome " & strFullName
End If

Catch Exc As IndexOutOfRangeException


MsgBox("There is no employee with that number!")
ValidTimeSheet = False
LblEmployeeName.Text = ""
TxtEmployeeNumber.Text = ""
End Try

DtpStartDate.Value = Date.Today

TxtWeek1Monday.Text = "0.00"
TxtWeek1Tuesday.Text = "0.00"
TxtWeek1Wednesday.Text = "0.00"
TxtWeek1Thursday.Text = "0.00"
TxtWeek1Friday.Text = "0.00"
TxtWeek1Saturday.Text = "0.00"
TxtWeek1Sunday.Text = "0.00"

TxtWeek2Monday.Text = "0.00"
TxtWeek2Tuesday.Text = "0.00"
TxtWeek2Wednesday.Text = "0.00"
TxtWeek2Thursday.Text = "0.00"
TxtWeek2Friday.Text = "0.00"
TxtWeek2Saturday.Text = "0.00"
TxtWeek2Sunday.Text = "0.00"
Ado.Net : Views

Connect.Close()
End Sub

40. In the Class Name combo box, select BtnReset button


41. In the Method Name combo box, select Click and implement the event as follows:
Page | 12
Private Sub BtnReset_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles BtnReset.Click
TxtWeek1Monday.Text = "0.00"
TxtWeek1Tuesday.Text = "0.00"
TxtWeek1Wednesday.Text = "0.00"
TxtWeek1Thursday.Text = "0.00"
TxtWeek1Friday.Text = "0.00"
TxtWeek1Saturday.Text = "0.00"
TxtWeek1Sunday.Text = "0.00"

TxtWeek2Monday.Text = "0.00"
TxtWeek2Tuesday.Text = "0.00"
TxtWeek2Wednesday.Text = "0.00"
TxtWeek2Thursday.Text = "0.00"
TxtWeek2Friday.Text = "0.00"
TxtWeek2Saturday.Text = "0.00"
TxtWeek2Sunday.Text = "0.00"

IsNewRecord = True
End Sub

42. In the Class Name combo box, select DtpStartDate

To implement the electronic time, we will use two pieces of information are required:
an employee's number and a starting period. After an employee has opened a time
sheet:

1. The employee must first provide an employee number, which we will check in
the Employees table. If the employee provides a valid employee number, we can
continue with the time sheet. If the employee number is invalid, we will let the
user know and we cannot continue with the time sheet
2. After the employee has provided a valid employee number, we will request the
starting period. After entering a (valid) date, we will check the time. If there is a
record that holds both the employee number and the start date, this means that
the employee had previously worked on a time sheet and we will open that
existing time sheet.

After the the employee or contractor has entered a valid employee number and a start
date, we will create a number called a time sheet code, represented in the TimeSheet
as the TimeSheetCode column. This number is created as follows:

0000000000000

The first 5 digits represent the employee's number. The second 4 digits represent the
year of the start date. The next 2 digits represent the month, and the last 2 digits
Ado.Net : Views

represent the day. This number must be unique so that there would not be a duplicate
number throughout the time sheet.

To make sure the value of the TimeSheetCode is unique for each record, after the
employee has provided a valid employee number and a start date, we will create the
time sheet code and check if that number exists in the TimeSheet table already:
Page | 13
o If that number exists already, this means that the employee has previously
worked on that time sheet and he or she simply wants to verify or update it. We
will then open the time values for that record and let the user view or change it
o If there is no record with the specified time sheet code, we will conclude that the
employee is working on a new time sheet

43. In the Method Name combo box, select CloseUP and implement the event as follows:

Private Sub DtpStartDate_CloseUp(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles DtpStartDate.CloseUp
LblEndDate.Text = DtpStartDate.Value.AddDays(14).ToString()

If TxtEmployeeNumber.Text.Equals("") Then
ValidTimeSheet = False
Exit Sub
End If

Dim StrMonth As String, StrDay As String


Dim IntMonth As Integer, IntDay As Integer
Dim StartDate As DateTime

StartDate = DtpStartDate.Value
IntMonth = StartDate.Month
IntDay = StartDate.Day

If IntMonth < 10 Then


StrMonth = StartDate.Year & "0" & CStr(IntMonth)
Else
StrMonth = StartDate.Year & CStr(IntMonth)
End If

If IntDay < 10 Then


StrDay = StrMonth & "0" & CStr(IntDay)
Else
StrDay = StrMonth & CStr(IntDay)
End If

strTimeSheetCode = TxtEmployeeNumber.Text & StrDay

Dim ConnectTimeSheet As SqlConnection = Nothing


Dim StrSQL As String = _
"SELECT * FROM dbo.Timesheets WHERE TimeSheetCode = '" & _
StrTimeSheetCode & "';"
ConnectTimeSheet = _
New SqlConnection("Data Source=(local); " & _
"Database='YugoNationalBank1';" & _
Ado.Net : Views

"Integrated Security=true")
Dim CmdTimeSheet As SqlCommand = _
New SqlCommand(StrSQL, ConnectTimeSheet)

Dim dsTimeSheet As DataSet = New DataSet("TimeSheetSet")


Dim sdaTimeSheet As SqlDataAdapter = New SqlDataAdapter
Page | 14
sdaTimeSheet.SelectCommand = CmdTimeSheet
sdaTimeSheet.Fill(dsTimeSheet)

ConnectTimeSheet.Close()

Try
Dim RecordTimeSheet As DataRow = dsTimeSheet.Tables(0).Rows(0)
StrTimeSheetCode = CStr(RecordTimeSheet("TimeSheetCode"))

If RecordTimeSheet.IsNull("TimeSheetCode") Then
IsNewRecord = True
Throw New System.IndexOutOfRangeException( _
"No TimeSheet with that number exists!")
Else
TxtWeek1Monday.Text = CStr(RecordTimeSheet("Week1Monday"))
TxtWeek1Tuesday.Text = CStr(RecordTimeSheet("Week1Tuesday"))
TxtWeek1Wednesday.Text = _
CStr(RecordTimeSheet("Week1Wednesday"))
TxtWeek1Thursday.Text = _
CStr(RecordTimeSheet("Week1Thursday"))
TxtWeek1Friday.Text = CStr(RecordTimeSheet("Week1Friday"))
TxtWeek1Saturday.Text = _
CStr(RecordTimeSheet("Week1Saturday"))
TxtWeek1Sunday.Text = CStr(RecordTimeSheet("Week1Sunday"))

TxtWeek2Monday.Text = CStr(RecordTimeSheet("Week2Monday"))
TxtWeek2Tuesday.Text = CStr(RecordTimeSheet("Week2Tuesday"))
TxtWeek2Wednesday.Text = _
CStr(RecordTimeSheet("Week2Wednesday"))
TxtWeek2Thursday.Text = _
CStr(RecordTimeSheet("Week2Thursday"))
TxtWeek2Friday.Text = CStr(RecordTimeSheet("Week2Friday"))
TxtWeek2Saturday.Text = _
CStr(RecordTimeSheet("Week2Saturday"))
TxtWeek2Sunday.Text = CStr(RecordTimeSheet("Week2Sunday"))

IsNewRecord = False
End If
Catch Exc As IndexOutOfRangeException
BtnReset_Click(sender, e)
End Try
End Sub

44. Access the Central form, add a button and change its properties as follows:
(Name): BtnTimesheet
Text: Employee's Time Sheet...
45. Double-click the Account Types button and implement its event as follows:
Ado.Net : Views

Private Sub BtnTimeSheet_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnTimeSheet.Click
Dim Sheet As Timesheet = New Timesheet
Sheet.ShowDialog()
End Sub
Page | 15
46. Save all

Practical Learning: Visually Creating a View

1. In the Server Explorer, expand the YugoNationalBank1 node if necessary.


Right-click Views and click Add New View
2. In the Add Table dialog box, click Employees, click Add, and click Close
3. In the Diagram section of the view, click the check boxes of EmployeeID and
EmployeeNumber
4. In the Criteria section, click the empty box under EmployeeNumber and
type LastName + ', ' + FirstName
5. Set its Alias to EmployeeName
6. In the Diagram section, click the check box of CanCreateNewAccount

7. Close the view


8. When asked whether you want to save it, click Yes
9. In the Choose Name dialog box, set the name to EmployeeIdentification and click
OK
10. In the Data Sources window, right-click DsYugoNationalBank and click Configure
DataSet With Wizard...
Ado.Net : Views

11. Click the check box of Views

Page | 16

12. Click Finish


13. To create a new form, on the main menu, click Project -> Add Windows Form...
14. Set the Name to Customers and click Add
15. In the Data Sources window, click Customers and click the arrow on its right side to
drop the combo box
16. Select Details
17. Drag the Customers node and drop it on the form
18. Under the form, click the objects and, using the Properties window, change their
names as follows:

Object Name
customersBindingSource BsCustomers
customersTableAdapter TaCustomers
customersBindingNavigator BnCustomers

19. Once again, from the Data Sources window, drag EmployeeIdentification and drop it
on the form
20. While the data grid view is still selected, press Delete to remove it
21. Under the form, click the objects and, using the Properties window, change their
names as follows:
Ado.Net : Views

Object Name Filter


CanCreateNewAccount
employeeIdentificationBindingSource BsAccountManagers
= True
employeeIdentificationTableAdapter TaAccountManagers

22. Once again, from the Data Sources window, drag AccountTypes and drop it on the Page | 17
form
23. While the data grid view is still selected, press Delete to remove it
24. Under the form, click the objects and, using the Properties window, change their
names as follows:

Object Name
accountTypesBindingSource BsAccountTypes
accountTypesTableAdapter TaAccountTypes

25. On the form, click the text box on the right side of Employee ID and press Delete
26. On the form, click the text box on the right side of Date Created and press Delete
27. On the form, click the text box on the right side of Account Type ID and press Delete
28. On the form, click the text box on the right side of Account Number and press Delete
29. On the form, click the text box on the right side of Account Status and press Delete
30. Design the form as follows:
Ado.Net : Views

New Control Text Name Other Properties


DropDownStyle: DropDownList
DataSource: BsAccountManagers
DisplayMember: EmployeeName
ComboBox CbxEmployeeID ValueMember: EmployeeID Page | 18
(DataBindings) -> Selected
Value: bsCustomers -
EmployeeID
DropDownStyle: DropDownList
DataSource: bsAccountTypes
DisplayMember: AccountType
ComboBox CbxAccountTypeID ValueMember: AccountTypeID

(DataBindings) -> Selected


Value: bsCustomers -
AccountTypeID
Mask: 00-000000-00
MaskedTextBox TxtAccountNumber (DataBindings) -> Text:
bsCustomers - AccountNumber
DropDownStyle: DropDownList
(DataBindings) -> Text:
bsCustomers - DateCreated
ComboBox CbxAccountStatus Items:
Active
Closed
suspended
Button Close BtnClose Anchor: Bottom, Right

31.
32. Double-click the Close button and implement its even as follows:

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

33. Access the Central form, add a button and change its properties as follows:
(Name): BtnCustomers
Text: Customers...
34. Double-click the Account Types button and implement its event as follows:

Private Sub btnCustomers_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles btnCustomers.Click
Ado.Net : Views

Dim Clients As Customers = New Customers


Clients.ShowDialog()
End Sub

35. Execute the application and open the Employees form


36. Create the following records:
Page | 19
37. Close the forms and return to your programming environment
38. To create a new form, on the main menu, click Project -> Add Windows Form...
39. Set the Name to NewDeposit and click Add
40. Design the form as follows:

Control Text Name Other Properties


Transaction
Label
Date:
DateTimePicker DtpTransactionDate
Label Processed By:
MaskedTextBox TxtEmployeeNumber Mask: 00000
TextBox TxtEmployeeName
Label Processed For:
MaskedTextBox TxtAccountNumber Mask: 00-000000-00
TextBox TxtCustomerName
Currency
Label
Type:
DropDownStyle:
ComboBox CbxCurrencyTypes
DropDownList
Ado.Net : Views

Items:
Cash
Check
Money Order
Amount
Label
Deposited: Page | 20
TextBox TxtAmount TextAlign: Right
Label Notes
Multiline: True
TextBox TxtNotes
ScrollBars: Vertical
Button Submit BtnSubmit
Button Close BtnClose

41. Right-click the form and click View Code


42. In the Class Name combo box, select (New Deposit Events)
43. In the Method Name combo box, select Load and make the following changes:

Imports System.Data.SqlClient

Public Class NewDeposit


Dim EmployeeID As Integer
Dim CustomerID As Integer

Private Sub NewDeposit_Load(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles Me.Load
EmployeeID = 0
CustomerID = 0
End Sub
End Class

44. In the Class Name combo box, select TxtEmployeeNumber


45. In the Method Name combo box, select Leave and implement the even as follows:

Private Sub TxtEmployeeNumber_Leave(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles TxtEmployeeNumber.Leave
If TxtEmployeeNumber.Text.Length = 0 Then
MsgBox("You must specify the employee number " & _
"of the clerk who is processing the deposit.")
Exit Sub
Else
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strYNB As String = _


"SELECT EmployeeID, FirstName, LastName " & _
"FROM Employees WHERE EmployeeNumber = '" & _
Ado.Net : Views

TxtEmployeeNumber.Text & "';"


Dim Command As SqlCommand = New SqlCommand(strYNB, Connect)

Connect.Open()

Dim rdrEmployees As SqlDataReader = Command.ExecuteReader()


Page | 21
While rdrEmployees.Read()
EmployeeID = CInt(rdrEmployees.GetSqlInt32(0))
TxtEmployeeName.Text = rdrEmployees.GetString(1) & " " & _
rdrEmployees.GetString(2)
End While

If EmployeeID = 0 Then
MsgBox("The employee number you entered " & _
"is not recognized in our database.")
TxtEmployeeNumber.Text = ""
End If
End Using
End If
End Sub

46. In the Class Name combo box, select TxtAccountNumber


47. In the Method Name combo box, select Leave and implement the even as follows:

Private Sub TxtAccountNumber_Leave(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles TxtAccountNumber.Leave
If TxtAccountNumber.Text.Length = 0 Then
MsgBox("You must specify the account number " & _
"of the customer whose deposit you are entering.")
Exit Sub
Else
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strYNB As String = _


"SELECT CustomerID, CustomerName FROM " & _
"Customers WHERE AccountNumber = '" & _
TxtAccountNumber.Text & "';"
Dim Command As SqlCommand = _
New SqlCommand(strYNB, Connect)
Dim sdaYNB As SqlDataAdapter = New SqlDataAdapter

sdaYNB.SelectCommand = Command
Dim dsCustomers As DataSet = New DataSet("CustomersSet")
sdaYNB.Fill(dsCustomers)

Connect.Open()

For Each Record As DataRow In dsCustomers.Tables(0).Rows


CustomerID = Record("CustomerID")
TxtCustomerName.Text = Record("CustomerName")
Ado.Net : Views

Exit For
Next

If CustomerID = 0 Then
MsgBox("The account number you entered " & _
"is not recognized in our database.")
TxtAccountNumber.Text = "" Page | 22
End If
End Using
End If
End Sub

48. In the Class Name combo box, select BtnSubmit


49. In the Method Name combo box, select Click and implement the even as follows:

Private Sub BtnSubmit_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnSubmit.Click
Dim DateTransaction As DateTime = DateTime.Today
Dim StrCurrencyType As String = "Unknown"
Dim Amount As Double = 0.0

If EmployeeID = 0 Then
MsgBox("You must specify the employee number " & _
"of the clerk who is processing the deposit.")
Exit Sub
End If

If CustomerID = 0 Then
MsgBox("You must enter an account number " & _
"for the new customer.")
Exit Sub
End If

StrCurrencyType = CbxCurrencyTypes.Text

Try
Amount = CDbl(TxtAmount.Text)
Catch ex As Exception
MsgBox("Invalid Amount.")
End Try

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim StrSQL As String = _


"INSERT INTO AccountsTransactions(" & _
"EmployeeID, CustomerID, " & _
"TransactionDate, TransactionType, " & _
"CurrencyType, DepositAmount, Notes) " & _
"VALUES('" & CStr(EmployeeID) + "', '" & _
CStr(CustomerID) + "', '" & _
DtpTransactionDate.Value.ToString("d") & _
Ado.Net : Views

"', 'Deposit', '" & CbxCurrencyTypes.Text & _


"', '" & CStr(Amount) & "', '" & TxtNotes.Text & "');"

Dim cmdEmployees As SqlCommand = _


New SqlCommand(StrSQL, Connect)

Connect.Open() Page | 23
cmdEmployees.ExecuteNonQuery()

DtpTransactionDate.Value = DateTime.Today
TxtEmployeeNumber.Text = ""
TxtEmployeeName.Text = ""
TxtAccountNumber.Text = ""
TxtCustomerName.Text = ""
CbxCurrencyTypes.SelectedIndex = 0
TxtAmount.Text = "0.00"
TxtNotes.Text = ""
End Using
End Sub

50. In the Class Name combo box, select BtnClose


51. In the Method Name combo box, select Click and implement the even as follows:

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

52. Access the Central form, add a button and change its properties as follows:
(Name): BtnNewDeposit
Text: New Deposit...
53. Double-click the Account Types button and implement its event as follows:

Private Sub BtnNewDeposit_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnNewDeposit.Click
Dim Deposit As NewDeposit = New NewDeposit
Deposit.ShowDialog()
End Sub

54. To create a new form, on the main menu, click Project -> Add Windows Form...
55. Set the Name to NewWithdrawal and click Add
56. Design the form as follows:
Ado.Net : Views

Page | 24

Control Text Name Other Properties


Transaction
Label
Date:
DateTimePicker DtpTransactionDate
Label Processed By:
MaskedTextBox TxtEmployeeNumber Mask: 00000
TextBox TxtEmployeeName
Label Processed For:
MaskedTextBox TxtAccountNumber Mask: 00-000000-00
TextBox TxtCustomerName
Currency
Label
Type:
DropDownStyle:
DropDownList

ComboBox CbxCurrencyTypes Items:


Cash
Check
Money Order
Amount
Label
Withdrawn:
TextBox TxtAmount TextAlign: Right
Label Notes
Multiline: True
TextBox TxtNotes
ScrollBars: Vertical
Button Submit BtnSubmit
Button Close BtnClose

57. Right-click the form and click View Code


58. In the Class Name combo box, select (New Deposit Events)
Ado.Net : Views

59. In the Method Name combo box, select Load and make the following changes:

Imports System.Data.SqlClient

Public Class NewWithdrawal


Dim EmployeeID As Integer
Page | 25
Dim CustomerID As Integer

Private Sub NewWithdrawal_Load(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles Me.Load
EmployeeID = 0
CustomerID = 0
End Sub
End Class

60. In the Class Name combo box, select Txt EmployeeNumber


61. In the Method Name combo box, select Leave and implement the even as follows:

Private Sub TxtEmployeeNumber_Leave(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles TxtEmployeeNumber.Leave
If TxtEmployeeNumber.Text.Length = 0 Then
MsgBox("You must specify the employee number " & _
"of the clerk who is processing the transaction.")
Exit Sub
Else
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strYNB As String = _


"SELECT EmployeeID, FirstName, LastName " & _
"FROM Employees WHERE EmployeeNumber = '" & _
TxtEmployeeNumber.Text & "';"
Dim Command As SqlCommand = New SqlCommand(strYNB, Connect)

Connect.Open()

Dim rdrEmployees As SqlDataReader = Command.ExecuteReader()

While rdrEmployees.Read()
EmployeeID = rdrEmployees.GetSqlInt32(0)
TxtEmployeeName.Text = rdrEmployees.GetString(1) & " " & _
rdrEmployees.GetString(2)
End While

If EmployeeID = 0 Then
MsgBox("The employee number you entered " & _
"is not recognized in our database.")
TxtEmployeeNumber.Text = ""
End If
End Using
Ado.Net : Views

End If
End Sub

62. In the Class Name combo box, select Txt AccountNumber


63. In the Method Name combo box, select Leave and implement the even as follows:
Page | 26
Private Sub TxtAccountNumber_Leave(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles TxtAccountNumber.Leave
If TxtAccountNumber.Text.Length = 0 Then
MsgBox("You must specify the account number " & _
"of the customer whose withdrawal you are processing.")
Exit Sub
Else
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strYNB As String = _


"SELECT CustomerID, CustomerName FROM " & _
"Customers WHERE AccountNumber = '" & _
TxtAccountNumber.Text & "';"
Dim Command As SqlCommand = New SqlCommand(strYNB, Connect)
Dim sdaYNB As SqlDataAdapter = New SqlDataAdapter

sdaYNB.SelectCommand = Command
Dim dsCustomers As DataSet = New DataSet("CustomersSet")
sdaYNB.Fill(dsCustomers)

Connect.Open()

For Each RecordCustomer As DataRow In


dsCustomers.Tables(0).Rows
CustomerID = RecordCustomer("CustomerID")
TxtCustomerName.Text = RecordCustomer("CustomerName")
Exit For
Next

If CustomerID = 0 Then
MsgBox("The account number you entered " & _
"is not recognized in our database.")
TxtAccountNumber.Text = ""
End If
End Using
End If
End Sub

64. In the Class Name combo box, select Btn Submit


65. In the Method Name combo box, select Click and implement the even as follows:

Private Sub BtnSubmit_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnSubmit.Click
Ado.Net : Views

Dim DateTransaction As DateTime = DateTime.Today


Dim Amount As Double = 0.0

If CustomerID = 0 Then
MsgBox("You must enter a valid account number " & _
"for the new customer.")
Exit Sub Page | 27
End If

Try
Amount = CDbl(TxtAmount.Text)
Catch ex As Exception
MsgBox("Invalid Amount.")
Exit Sub
End Try

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strCharges As String = _


"INSERT INTO AccountsTransactions(" & _
"CustomerID, " & _
"TransactionDate, TransactionType, " & _
"ChargeAmount, ChargeReason, Notes) " & _
"VALUES('" & CStr(CustomerID) & "', '" & _
DtpTransactionDate.Value.ToString("d") & _
"', 'Charge', '" & CStr(Amount) & "', '" & _
CbxChargeReasons.Text & "', '" & _
TxtNotes.Text & "');"
Dim cmdCharges As SqlCommand = _
New SqlCommand(strCharges, Connect)

Connect.Open()
cmdCharges.ExecuteNonQuery()

DtpTransactionDate.Value = DateTime.Today
TxtAccountNumber.Text = ""
TxtCustomerName.Text = ""
CbxChargeReasons.SelectedIndex = 0
TxtAmount.Text = "0.00"
TxtNotes.Text = ""
End Using
End Sub

66. In the Class Name combo box, select Btn Close


67. In the Method Name combo box, select Click and implement the even as follows:

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub
Ado.Net : Views

68. Access the Central form, add a button and change its properties as follows:
(Name): BtnNewWithdrawal
Text: New Withdrawal...
69. Double-click the Account Types button and implement its event as follows:

Private Sub BtnNewWithdrawal_Click(ByVal sender As System.Object, _ Page | 28


ByVal e As System.EventArgs) _
Handles BtnNewWithdrawal.Click
Dim Withdraw As NewWithdrawal = New NewWithdrawal
Withdraw.ShowDialog()
End Sub

70. To create a new form, on the main menu, click Project -> Add Windows Form...
71. Set the Name to NewCharge and click Add
72. Design the form as follows:

Control Text Name Other Properties


Transaction
Label
Date:
DateTimePicker DtpTransactionDate
Label Processed For:
MaskedTextBox TxtAccountNumber Mask: 00-000000-00
TextBox TxtCustomerName
Charge
Label
Reason:
DropDownStyle:
DropDownList
ComboBox CbxChargeReason Items:
Overdraft
Money Order
Ado.Net : Views

Check Stopping
Monthly Charge
Amount
Label
Charged:
TextBox TxtAmount TextAlign: Right
Page | 29
Label Notes
Multiline: True
TextBox TxtNotes
ScrollBars: Vertical
Button Submit BtnSubmit
Button Close BtnClose

73. Right-click the form and click View Code


74. In the Class Name combo box, select (New Deposit Events)
75. In the Method Name combo box, select Load and make the following changes:

Imports System.Data.SqlClient

Public Class NewCharge


Dim CustomerID As Double

Private Sub NewCharge_Load(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles Me.Load
CustomerID = 0
End Sub
End Class

76. In the Class Name combo box, select Txt AccountNumber


77. In the Method Name combo box, select Leave and implement the even as follows:

Private Sub txtAccountNumber_Leave(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles txtAccountNumber.Leave
If txtAccountNumber.Text.Length = 0 Then
MsgBox("You must specify the account number " & _
"of the customer whose withdrawal you are processing.")
Exit Sub
Else
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strYNB As String = _


"SELECT CustomerID, CustomerName FROM " & _
"Customers WHERE AccountNumber = '" & _
txtAccountNumber.Text & "';"
Dim Command As SqlCommand = New SqlCommand(strYNB, Connect)
Dim sdaYNB As SqlDataAdapter = New SqlDataAdapter
Ado.Net : Views

sdaYNB.SelectCommand = Command
Dim dsCustomers As DataSet = New DataSet("CustomersSet")
sdaYNB.Fill(dsCustomers)

Connect.Open()

For Each RecordCustomer as DataRow in dsCustomers.Tables(0).Rows) Page | 30


CustomerID = RecordCustomer("CustomerID")
txtCustomerName.Text = RecordCustomer("CustomerName")
Exit For
Next

If CustomerID = 0 Then
MsgBox("The account number you entered " & _
"is not recognized in our database.")
txtAccountNumber.Text = ""
End If
End Using
End If
End Sub

78. In the Class Name combo box, select Btn Submit


79. In the Method Name combo box, select Click and implement the even as follows:

Private Sub BtnSubmit_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnSubmit.Click
Dim DateTransaction As DateTime = DateTime.Today
Dim Amount As Double = 0.0

If CustomerID = 0 Then
MsgBox("You must enter a valid account number " & _
"for the new customer.")
Exit Sub
End If

Try
Amount = CDbl(TxtAmount.Text)
Catch ex As Exception
MsgBox("Invalid Amount.")
Exit Sub
End Try

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim strCharges As String = _


"INSERT INTO AccountsTransactions(" & _
"CustomerID, " & _
"TransactionDate, TransactionType, " & _
"ChargeAmount, ChargeReason, Notes) " & _
"VALUES('" & CustomerID + "', '" & _
DtpTransactionDate.Value.ToString("d") & _
Ado.Net : Views

"', 'Charge', '" & Amount + "', '" & _


CbxChargeReasons.Text & "', '" & _
TxtNotes.Text & "');"
Dim cmdCharges As SqlCommand = _
New SqlCommand(strCharges, Connect)

Connect.Open() Page | 31
cmdCharges.ExecuteNonQuery()

DtpTransactionDate.Value = DateTime.Today
TxtAccountNumber.Text = ""
TxtCustomerName.Text = ""
CbxChargeReasons.SelectedIndex = 0
TxtAmount.Text = "0.00"
TxtNotes.Text = ""
End Using
End Sub

80. In the Class Name combo box, select BtnClose


81. In the Method Name combo box, select Click and implement the even as follows:

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

82. Access the Central form, add a button and change its properties as follows:
(Name): BtnNewCharge
Text: New Charge...
83. Double-click the Account Types button and implement its event as follows:

Private Sub BtnNewCharge_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnNewCharge.Click
Dim Charge As NewCharge = New NewCharge
Charge.ShowDialog()
End Sub

84. Execute the application


85. Open the New Deposit form to create the first three transactions
86. Then open the New Withdrawal form to create the withdrawal transactions
87. Create the other transactions
88. Close the forms and return to your programming environment
89. To create a new view, in the Server Explorer, under YugoNationalBank1, right-click
Views and click Add New View
90. In the Add Table dialog box, double-click Customers and AccountTypes
91. Click Close
Ado.Net : Views

92. In the Diagram section, click the check boxes of CustomerID, CustomerName,
AccountNumber, AccountType, DateCreated, and AccountStatus

Page | 32

93. Close the view


94. When asked whether you want to save it, click Yes
95. Set the Name to CustomerIdentification and click OK
96. In the Data Sources window, right-click dsYugoNationalBank and click Configure
DataSet With Wizard...
97. Click the check box of Views to remove the check mark
98. Click it again to put the check mark and click Finish
99. To create a new view, in the Server Explorer, under YugoNationalBank1, right-click
Views and click Add New View
100. In the Add Table dialog box, double-click AccountsTransactions and
Customers
101. Click Close
102. In the Diagram section, click the check boxes of AccountNumber,
TransactionDate, TransactionType, CurrencyType, DepositAmount,
WithdrawalAmount, ChargeAmount, ChargeReason, and Balance
Ado.Net : Views

Page | 33

103. Close the view


104. When asked whether you want to save it, click Yes
105. Set the Name to AccountTransactions and click OK
106. In the Data Sources window, right-click dsYugoNationalBank and click
Configure DataSet With Wizard...
107. Click the check box of View to remove the check mark
Ado.Net : Views

108. Click it again to put the check mark

Page | 34

109. Click Finish


110. To create a new form, on the main menu, click Project -> Add Windows
Form...
111. Set the Name to AccountTransactions and click Add
112. From the Data Sources window, drag AccountTransactions and drop it on the
form
113. Under the form, click accountTransactionsBindingNavigator and press Delete
114. Under the form, click the objects and, using the Properties window, change
their names as follows:

Object Name
accountTransactionsBindingSource BsAccountTransactions
accountTypesTableAdapter TaAccountTransactions

115. Design the form as follows:


Ado.Net : Views

Page | 35

Control Text Name Other Properties


Label Account Number:
MaskedTextBox TxtAccountNumber Mask: 00-000000-00
Button Locate BtnLocate
Label Customer Name:
TextBox TxtCustomerName
Label Account Type:
TextBox TxtAccountType
Label Account Status:
TextBox TxtAccountStatus
Label Date Created:
DateTimePicker DtpDateCreated
DataGridView DgvAccountProperties
Label Total Deposits
Text: 0.00
TextBox TxtTotalDeposits
TextAlign: Right
Label Total Charges
Ado.Net : Views

Text: 0.00
TextBox TxtTotalCharges
TextAlign: Right
Button Close BtnClose
Label Total Withdrawals
Text: 0.00 Page | 36
TextBox TxtTotalWithdrawals
TextAlign: Right
Label Balance
Text: 0.00
TextBox TxtBalance
TextAlign: Right

116. Right-click the form and click View Code


117. Just above the Public Class line, import
the System.Data.SqlClient namespace

Imports System.Data.SqlClient

Public Class AccountTransactions


. . . No Change

118. Locate the Load event and add the following line:

Private Sub AccountTransactions_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles MyBase.Load
'TODO: This line of code loads data into
' the 'DsYugoNationalBank.AccountTransactions' table.
' You can move, or remove it, as needed.

Me.TaAccountTransactions.Fill(Me.DsYugoNationalBank.AccountTransactions
)
BsAccountTransactions.Filter = "AccountNumber = '00-000000-00'"
End Sub

119. In the Class Name combo box, select BtnLocate


120. In the Method Name combo box, select Click and implement the event the as
follows:

Private Sub BtnLocate_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnLocate.Click
Dim CustomerID As Integer = 0

If TxtAccountNumber.Text.Length = 0 Then
MsgBox("You must specify the account number " & _
"of the customer whose transactions you want to view.")
Exit Sub
Else
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
Ado.Net : Views

"Integrated Security=SSPI;")

Dim StrYNB As String = _


"SELECT * FROM " & _
"CustomerIdentification WHERE AccountNumber = '" & _
TxtAccountNumber.Text & "';"
Dim Command As SqlCommand = New SqlCommand(StrYNB, Connect) Page | 37
Dim SdaYNB As SqlDataAdapter = New SqlDataAdapter

SdaYNB.SelectCommand = Command
Dim dsCustomers As DataSet = New DataSet("CustomersSet")
SdaYNB.Fill(dsCustomers)

Connect.Open()

For Each Record As DataRow In dsCustomers.Tables(0).Rows


CustomerID = Record("CustomerID")

TxtCustomerName.Text = Record("CustomerName")
TxtAccountType.Text = Record("AccountType")
TxtAccountStatus.Text = Record("AccountStatus")
DtpDateCreated.Value = Record("DateCreated")
Next

BsAccountTransactions.Filter = _
"AccountNumber = '" & TxtAccountNumber.Text & "'"
End Using
End If

If CustomerID <> 0 Then


Dim Deposits As Double = 0.0, Withdraws As Double = 0.0
Dim Charges As Double = 0.0, Balance As Double = 0.0

Using Connect As SqlConnection = _


New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim StrYNB As String = _


"SELECT SUM(CAST(DepositAmount AS money)), " & _
"SUM(CAST(WithdrawalAmount AS money)), " & _
"SUM(CAST(ChargeAmount AS money)) FROM " & _
"AccountsTransactions WHERE CustomerID = '" & _
CStr(CustomerID) & "';"
Dim Command As SqlCommand = New SqlCommand(StrYNB, Connect)

Connect.Open()
Dim rdrTransactions As SqlDataReader = _
Command.ExecuteReader

While rdrTransactions.Read()
Try
Deposits = CDbl(rdrTransactions(0))
Catch ex As Exception
End Try
Ado.Net : Views

Try
Withdraws = CDbl(rdrTransactions(1))
Catch ex As Exception
End Try
Try
Charges = CDbl(rdrTransactions(2))
Catch ex As Exception Page | 38
End Try
TxtTotalDeposits.Text = FormatNumber(Deposits)
TxtTotalWithdrawals.Text = FormatNumber(Withdraws)
TxtTotalCharges.Text = FormatNumber(Charges)

Balance = Deposits - (Withdraws + Charges)


TxtBalance.Text = FormatNumber(Balance)
End While
End Using
End If
End Sub

121. In the Class Name combo box, select BtnClose

In the Method Name combo box, select Click and implement the even as follows:
Private Sub BtnClose_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

122. Access the Central form, add a button and change its properties as follows:
(Name): BtnAccountTransactions
Text: View an Account's Transactions...
Ado.Net : Views

123. Double-click the Account Types button and implement its event as follows:

Private Sub BtnAccountTransactions_Click(ByVal sender As


System.Object, _
ByVal e As System.EventArgs)
_
Page | 39
Handles BtnAccountTransactions.Click
Dim Transactions As AccountTransactions = New AccountTransactions
Transactions.ShowDialog()
End Sub

124. Execute the application


125. Open the Account's Transactions form, enter an account number and click
Locate
Ado.Net : Views

Page | 40

126. Close the forms and return to your programming environment

Practical Learning: Programmatically Creating a View

1. In the Solution Explorer, right-click Central.vb and click View Code


2. In the Class Name combo box, select BtnClose
3. In the Method Name combo box, select Click and implement the event as follows:

Private Sub BtnClose_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Using Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=SSPI;")

Dim StrTimesheet As String = _


"CREATE VIEW dbo.Timesheet " & _
"AS " & _
"SELECT EmployeeNumber, StartDate, " & _
" TimesheetCode, Week1Monday, " & _
" Week1Tuesday, Week1Wednesday, " & _
" Week1Thursday, Week1Friday, " & _
Ado.Net : Views

" Week1Saturday, Week1Sunday, " & _


" Week2Monday, Week2Tuesday, " & _
" Week2Wednesday, Week2Thursday, " & _
" Week2Friday, Week2Saturday, " & _
" Week2Sunday, Notes " & _
"FROM dbo.Timesheets;"
Page | 41
Dim Command As SqlCommand = _
New SqlCommand(StrTimesheet, Connect)
Connect.Open()
Command.ExecuteNonQuery()
MsgBox("A view named Timesheet has been created.")
End Using

Close()
End Sub

4. Execute the application and click the Close button


5. Change the code of the Close event of the Central form as follows:

Private Sub BtnClose_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
End
End Sub

6. Save all

Practical Learning: Performing Data Entry Using a View

1. In the Solution Explorer, right-click Timesheet.vb and click View Code


2. In the Class Name combo box, select BtnSubmit
3. In the Method Name combo box, select Click and implement the event as follows:

Private Sub BtnSubmit_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles BtnSubmit.Click
Dim StrTimeSheet As String = ""

' If this is new record, then create a new time sheet


If IsNewRecord = True Then
strTimeSheet = "INSERT INTO dbo.Timesheet " & _
"VALUES('" & _
TxtEmployeeNumber.Text & "', '" & _
DtpStartDate.Value.ToString("MM/dd/yyyy")
& "', '" & _
StrTimeSheetCode + "', '" & _
TxtWeek1Monday.Text & "', '" & _
TxtWeek1Tuesday.Text & "', '" & _
TxtWeek1Wednesday.Text & "', '" & _
TxtWeek1Thursday.Text & "', '" & _
TxtWeek1Friday.Text & "', '" & _
Ado.Net : Views

TxtWeek1Saturday.Text & "', '" & _


TxtWeek1Sunday.Text & "', '" & _
TxtWeek2Monday.Text & "', '" & _
TxtWeek2Tuesday.Text & "', '" & _
TxtWeek2Wednesday.Text & "', '" & _
TxtWeek2Thursday.Text & "', '" & _
TxtWeek2Friday.Text & "', '" & _ Page | 42
TxtWeek2Saturday.Text & "', '" & _
TxtWeek2Sunday.Text & "', '" & _
TxtNotes.Text & "');"
End If

' If this is an existing record, then, only update it


If IsNewRecord = False Then
StrTimeSheet = "UPDATE dbo.Timesheets SET Week1Monday = '" & _
TxtWeek1Monday.Text & "', Week1Tuesday = '" & _
TxtWeek1Tuesday.Text & "', Week1Wednesday = '" & _
TxtWeek1Wednesday.Text & "', Week1Thursday = '" & _
TxtWeek1Thursday.Text & "', Week1Friday = '" & _
TxtWeek1Friday.Text & "', Week1Saturday = '" & _
TxtWeek1Saturday.Text & "', Week1Sunday = '" & _
TxtWeek1Sunday.Text & "', Week2Monday = '" & _
TxtWeek2Monday.Text & "', Week2Tuesday = '" & _
TxtWeek2Tuesday.Text & "', Week2Wednesday = '" & _
TxtWeek2Wednesday.Text & "', Week2Thursday = '" & _
TxtWeek2Thursday.Text & "', Week2Friday = '" & _
TxtWeek2Friday.Text & "', Week2Saturday = '" & _
TxtWeek2Saturday.Text & "', Week2Sunday = '" & _
TxtWeek2Sunday.Text & "', Notes = '" & TxtNotes.Text & _
"' WHERE TimeSheetCode = '" & StrTimeSheetCode & "';"
End If

If ValidTimeSheet = True Then


Dim Connect As SqlConnection = _
New SqlConnection("Data Source=(local);" & _
"Database='YugoNationalBank1';" & _
"Integrated Security=true")
Dim cmdTimeSheet As SqlCommand = _
New SqlCommand(StrTimeSheet, Connect)

Connect.Open()
cmdTimeSheet.ExecuteNonQuery()
Connect.Close()

MsgBox("Your time sheet has been submitted")

' Reset the timesheet


TxtEmployeeNumber.Text = ""
DtpStartDate.Value = DateTime.Today

BtnReset_Click(sender, e)
Else

MsgBox("The time sheet is not valid" & vbCrLf & _


"either you didn't enter a valid employee number, " & _
"or you didn't select a valid start date\n" & _
Ado.Net : Views

"The time sheet will not be saved")


End If
End Sub

4. In the Class Name combo box, select BtnClose


5. In the Method Name combo box, select Click and implement the even as follows:
Page | 43

Private Sub BtnClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) _
Handles BtnClose.Click
Close()
End Sub

6. Execute the application


7. Open the employees timesheet and create a few entries
Ado.Net : Views

Page | 44

8. Close the form and return to your programming environment

Practical Learning: Creating a Stored Procedure

1. In the Server Explorer, expand the YugoNationalBank1 connection, right-click its


Stored Procedures node and click Add New Stored Procedure
2. Change the text in the Code Editor as follows:

-- =============================================
-- Author: Darwin Vargas
-- Creation date: Friday, January 28, 2008
-- Description: This stored procedure assigns a
-- default password to each employee.
-- =============================================
Ado.Net : Views

CREATE PROCEDURE dbo.AssignDefaultPassword

AS
BEGIN
UPDATE dbo.Employees
SET Password = 'Password1' FROM dbo.Employees;
END Page | 45
3. To save the stored procedure, on the Standard toolbar, click the Save button

Practical Learning: Executing a Stored Procedure

1. (You should open the Employees table from the Server Explorer and verify that the
Password fields are empty or NULL, then close it).
While the content of the stored procedure is still displaying in the Code Editor, right-
click anywhere in the window and click Execute.
In the Output window, you should receive various lines of code that indicate success:

Running [dbo].[AssignDefaultPassword].

(8 row(s) affected)
(0 row(s) returned)
@RETURN_VALUE = 0
Finished running [dbo].[AssignDefaultPassword].

2. (You should open the Employees table from the Server Explorer and verify that the
Password fields now have Password1 each).
Close the stored procedure tab

Practical Learning: Using Expressions and Functions

1. In the Server Explorer, under the YugoNationalBank1 connection, right-click its


Stored Procedures node and click Add New Stored Procedure
2. Change the text in the Code Editor as follows:

-- =============================================
-- Author: Darwin Vargas
-- Create date: Friday, May 25, 2007
-- Description: This stored procedure creates a
-- username for each employee.
-- It also assigns an email to the employee.
-- =============================================
CREATE PROCEDURE dbo.CreateUsername

AS

BEGIN
UPDATE dbo.Employees
SET Username = LOWER(LEFT(FirstName, 1) + LEFT(LastName, 5))
FROM dbo.Employees;
Ado.Net : Views

UPDATE dbo.Employees
SET EmailAddress = LOWER(LEFT(FirstName, 1) +
LEFT(LastName, 5)) +
'@yugonationalbank.com'
FROM dbo.Employees;
END
Page | 46
3. To save the stored procedure, on the Standard toolbar, click the Save button
4. To execute the stored procedure, in the Server Explorer and under the
YugoNationalBank1 database, right-click CreateUsername and click execute
5. Close the stored procedure tab