Session 4
From Access Forms to
Windows Forms .NET
Adam Cogan
Database Architect
ssw.com.au
From
To
Overview
1
2
3
4
Access 97
to
Access 2003
Access
to
SQL Server
Access
to
Reporting
Services
Access
to
Windows
Forms .NET

Agenda
•
•
•
Current Problems
What’s New in .NET
Lab: Migrating from Access Forms to
Windows Forms .NET
Breezers Drink Receipt From Outback Oz
Assumptions
•
•
•
•
•
Backend in SQL Server 2000
Using Enterprise Manager for data
management
Access forms front-end
Reports using Reporting Services
Some VBA knowledge
Session Prerequisites (Current Problems)
1. “Our application stopped working on Mary’s
machine when we installed the new version of
Office”
2. “Our Access database got corrupted and we
can’t open it”
3. “Our Access forms run too slowly - we want a
small, fast EXE”
4. “Can we stop the continual polling of SQL
Server so we can scale this application?”
5. “We want to integrate with other systems”
Enter .NET
•
•
•
•
•
No need for Access runtime or Office for
end-user (1)
Produce an EXE which doesn’t get
corrupted like an MDB (2)
The EXE is small and runs fast (3)
Only explicit updates to database (4)
Web Service Support are built in (use an
open XML-based architecture) (5)
Problems with Bound Access Forms
Advantage – Database Connections are Controllable
In Access
• Forms perform database queries in the
background
• Cannot be controlled
In .NET
• Full control over database connections and
queries
• Improved performance and scalability
Not as smooth a ride
Problems with Bound Access Forms
Advantage – Database Connections are
Controllable
In Access
In .NET
Differences In Form Design
Advantage – A Shallow Learning Curve for Access
Developers (1 of 2)
Differences In Form Design
Advantage – A Shallow Learning Curve for Access
Developers (2 of 2)
Northwind .NET
Differences In Form Design
New Feature – Anchoring Controls
Differences In Form Design
New Feature – Docking Controls
Differences In Form Design
Advantage – Powerful New Controls (1 of 2)
Differences In Form Design
Advantage – Powerful New Controls (2 of 2)
Data Forms
In Access
1. Get Data – Make Queries
Data Forms
In Access
2. Bind – Set the One RecordSource
Data Forms
In Access
3. Bind – Set the ControlSource for all bound controls
Data Forms
In .NET
1.
Get Data – Create Data Components (DataSets and DataAdapters)
In .NET
Data Forms
2. Bind – Set the Many Referenced DataSets
Data Forms
In .NET
3. Bind – Set the DataBindings for all bound controls
Differences In Form Design
Disadvantage – Database Updates Are Not
Done Automatically
In Access
1. Changes made on forms are automatically
saved
In .NET:
1. Add a save button
2. Call DataAdapter.Update(DataSet) in the
OnClick event
Differences in Application Design
Advantage – All .NET Solution Items are Described in
Plain Text
In Access
• Everything is in the MDB
• If damaged, everything stops working
In .NET
• All solution items are in plain text
• Forms described in XML
• Low chance of corruption
• Lightweight
Differences In Form Design
Difference – Data Views
Access
Visual Studio .NET
Design
Supported
Form
Compile and Run Application
Datasheet
Not supported
Navigation
Private Sub nextRecord_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles nextRecord.Click
' Check that the user isn't on the last record.
If Not Me._ordersManager.Position = Me._ordersManager.Count - 1 Then
_movingRecords = True
Me._ordersManager.Position += 1
_movingRecords = False
End If
End Sub
Private Sub previousRecord_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles previousRecord.Click
' Check that the user isn't on the first record.
If Not Me._ordersManager.Position = 0 Then
_movingRecords = True
Me._ordersManager.Position -= 1
_movingRecords = False
End If
End Sub
Add / Edit Line Items
Private Sub editItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles editItem.Click
' Check that there is a row to edit.
If Not BindingContext(ordersList, "Orders.OrdersOrder_Details").Position = -1 Then
Dim cm As CurrencyManager = CType(BindingContext(ordersList,
"Orders.OrdersOrder_Details"), CurrencyManager)
' Get the current row.
Dim orderItem As OrdersDataSet.Order_DetailsRow = CType(CType(cm.Current,
DataRowView).Row, OrdersDataSet.Order_DetailsRow)
' Pass the current row to the Order Details form.
Dim orderDetailsForm As New OrderDetailsPopupForm(orderItem)
' Show the Order Details form and return the result.
Dim result As DialogResult = orderDetailsForm.ShowDialog()
' Check if the user clicked "OK".
If result = DialogResult.OK Then
CalculateTotals()
End If
End If
End Sub
Save Data
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnOK.Click
Me._ordersManager.EndCurrentEdit()
' Check if changes were made
If ordersList.HasChanges Then
' Update the Orders table
_ordersDA.Adapter.Update(ordersList)
' Update the Order Details table
_orderDetailsDA.Adapter.Update(ordersList)
End If
End Sub
Differences In Form Design
Disadvantage – Multiple Columns Not Supported in
Some Controls
• Use .NET ListView instead of Access Listbox
• Some programming required for multi-column
ComboBox
Differences In Form Design
Disadvantage – Multiple Columns Not Supported in
Some Controls
Differences In Form Design
Disadvantage – The Datasheet View Is Harder to
Implement
In Access
• View – Datasheet
In .NET:
•
•
•
Use DataGrid control
Manually bind to database
Hard to implement advanced controls (ComboBox etc.)
Differences In Form Design
Disadvantage – Continuous Forms Are Harder to
Implement (1 of 4)
In Access
• Form Property: Default View = Continuous Forms
In .NET
• Not supported in .NET
• 2 options
– Tiled user controls
– Summary/Detail
Differences In Form Design
Disadvantage – Continuous Forms Are Harder to
Implement (2 of 4)
• Tiled user controls
Differences In Form Design
Disadvantage – Continuous Forms Are Harder to
Implement (3 of 4)
• Split into summary/detail for complex subforms
Differences In Form Design
Disadvantage – Continuous Forms Are Harder to
Implement (4 of 4)
• Split into summary with popup window
Differences In Form Design
Disadvantage – Subforms are Easier to Use than User
Controls (1 of 2)
In Access
1. Create parent and sub forms
2. Add subform/subreport to parent
3. Set linkages between parent/subform
Differences In Form Design
Disadvantage – Subforms are Easier to Use than User Controls (2 of 2)
In .NET
1.
Create Orders form (parent)
2.
Create user control for Orders Subform form
3.
Add property to user control to link parent and subform (code)
4.
Update the Orders Subform (user control) when the parent record
changes (code)
5.
Add the Orders Subform (user control) to the Orders form
6.
Bind the Orders form to the Orders Subform (user control)
Note: We take a different approach with our example (popup window)
Differences In Form Design
Advantage – Form Inheritance
1. Add any common form controls and logic
into a base form
2. Create new instances of (“inherit”) the
parent form to ensure consistency
3. Make any required changes to logic and
controls on child forms
Differences In Form Design
Advantage – Use Windows XP Styles
• Easy to implement in .NET
Differences In Form Design
Disadvantage – Read-Only Textboxes are Grayed Out
In Access
• Set Locked = Yes
In .NET
• Set ReadOnly = True
• Have to explicitly set the background colour
Differences In Form Design
Disadvantage – Combo Boxes Cannot Be
Locked
In Access
• Set Locked = Yes
In .NET
• No automatic way
• Capture the SelectedIndexChanged event
and reset the value
Differences In Form Design
Advantage – Applications Are Stored As Binary
Executables
In Access
• Use compact and repair
• Manually compile as MDE
In .NET
• Application automatically compiled on run
• Runs efficiently because it is in binary
Differences in Application Design
Advantage – Application Deployment is Easier
In Access:
• License for Office Developer Edition (for
runtime), or
• Office installed on target machine
In .NET you only need the free .NET
Framework
Differences in Application Design
Advantage – .NET Versions Can Be Run Side-by-Side
In Access:
• Upgrading Office can cause issues (as we have
seen)
• Can have multiple versions of Office installed –
however MDB associations don’t know enough
In .NET:
• Framework versions can run side-by-side
• Apps using 1.0 continue to work alongside 1.1
Differences in Application Design
Advantage – Extending Your Forms to Mobile
Devices
?
.NET Web Service
Business and Data
Access Logic
Differences in Application Design
Difference – Security Model Integrates with Windows
In Access
• Maintain two sets of security for forms (Access)
and backend (SQL)
Differences in Application Design
Difference – Security Model Integrates with
Windows
In .NET
• Use Windows Integrated security
• Based on Active Directory – one model for
forms and SQL Server
• Check user’s role in code (using
System.Security.Principal namespace)
Differences in Application Design
Disadvantage – No Wizard-Based
Security
In Access:
• Use the User-level Security Wizard to
automatically set object permissions
In .NET:
• Form permissions must be defined in code
Differences in Programming
Difference – VBA replaced by VB.NET
In Access you use
• VBA
• .DLLs
In .NET
• VB.NET, C#, J# etc.
• Can use components written in other
languages
Differences in Programming
Advantage – Improved Language Features
• Structured exception handling
• Form and code inheritance
• XML and XSL functionality for web services
• Simple API wrappers – less API calls
– accessing printers
– file dialog boxes
• Improved internationalisation and regional
customisation
• Create and deploy DLLs, user controls and web
services in .NET
Differences in Programming
Difference – Macros replaced by VB .NET
In Access you use
• the visual macro designer
In .NET
• you must rewrite as code
Tip: Use the Macro to VBA converter to
simplify rewriting
Differences in Programming
Difference – Responding to Form Events
• .NET – new “Handles” keyword
• One method can handle multiple events
Private Sub OpenCustomer (…) Handles btnOK.Click,
cboCustomers.DoubleClick
…
End Sub
• All Access form events can be handled
Differences in Programming
Advantage – Improved Development
Environment (1 of 3)
• Improved Intellisense
Differences in Programming
Advantage – Improved Development
Environment (2 of 3)
• Improved design-time debugging
Differences in Programming
Advantage – Improved Development
Environment (3 of 3)
• Visually build database objects
Differences in Programming
Advantage – Use Unit Testing Tools to Check Your Code
• Cannot test code in Access
• .NET supports testing frameworks eg. nUnit
Differences in Programming
Difference – Autoexec Macros vs. Startup
Forms/Stubs
• In Access:
– Startup form
– Autoexec Macro
• In .NET:
– Select form in project properties
– Shared Sub Main()
Summary
•
Current Problems
–
–
–
–
–
•
•
New versions of Office cause applications to stop
working
Corrupt Access databases
Slow, large Access forms
Continual automatic polling of SQL Server, limiting
scalability
Hard to integrate with other systems
What’s New in .NET
Lab: Migrating Access forms to .NET
For More Information…
Microsoft Access: Upgrading and Migrating to SQL Server and .NET - Course
Resources
www.ssw.com.au/ssw/Events/2004AccessToSQLServerAndNET/Resources.aspx
www.microsoft.com/net
More courses in March – see
www.microsoft.com/australia/events/
Tell your friends…
Descargar

Hailstorm Press Event template