Microsoft Access
From Wikipedia, the free encyclopedia
This article needs additional citations for verification. Please help improve this article by adding reliable references (ideally, using inline citations). Unsourced material may be challenged and removed. (August 2006) |
The neutrality of this article is disputed. Please see the discussion on the talk page. Please do not remove this message until the dispute is resolved. (February 2009) |
Office Access 2007 running on Microsoft Windows Vista. |
|
Developed by | Microsoft |
---|---|
Latest release | 12.0.6211.1000 (2007 SP1) / December 11, 2007 |
Operating system | Microsoft Windows |
Type | RDBMS |
License | Proprietary EULA |
Website | Microsoft Office Access Homepage |
Microsoft Office Access, previously known as Microsoft Access, is a relational database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software development tools. It is a member of the Microsoft Office suite of applications and is included in the Professional and higher versions for Windows and also sold separately. There is no version for MacOS or for Microsoft Office Mobile.
Access stores data in its own format based on the Access Jet Database Engine. It can also import or link directly to data stored in other Access databases, Excel, SharePoint lists, text, XML, Outlook, HTML, dBase, Paradox, Lotus 1-2-3, or any ODBC-compliant data container including Microsoft SQL Server, Oracle, MySQL and PostgreSQL. Software developers and data architects can use it to develop application software and non-programmer "power users" can use it to build simple applications. It supports some object-oriented techniques but falls short of being a fully object-oriented development tool.[clarification needed]
Contents |
[edit] History
Access version 1.0 was released in November 1992, quickly followed in May 1993 by an Access 1.1 release to improve compatibility with other Microsoft products and include the Access Basic programming language.
Microsoft specified the minimum hardware requirements for Access v2.0: Microsoft Windows v3.0 with 4 MB of RAM required, 6 MB RAM recommended; 8 MB of available hard disk space required, 14 MB hard disk space recommended. The product was shipped on seven 1.44 MB diskettes. The manual shows a 1993 copyright date.
Originally, the software worked well with relatively small databases but testing showed some circumstances caused data corruption. For example, file sizes over 10 MB were problematic (note that most hard disks were smaller than 500 MB at the time this was in wide use), and the Getting Started manual warns about a number of circumstances where obsolete device drivers or incorrect configurations can cause data loss. With the phasing out of Windows 95, 98 and ME, improved network reliability, and Microsoft having released 8 service packs for the Jet Database Engine, the reliability of Access databases has been vastly improved in both size and number of users.
With Office 95, Microsoft Access 95 became part of the Microsoft Office Professional Suite joining Microsoft Excel, Word, and PowerPoint and transitioning from Access Basic to Visual Basic for Applications (VBA). Since then, there have been releases of Microsoft Access with each release of Office. This includes Access 97 (version 8.0), Access 2000 (version 9.0), Access 2002 (version 10.0), Access 2003 (version 11.0), and Access 2007 (version 12.0).
The native Access database format (the Jet MDB Database) has also evolved over the years. Formats include Access 1.0, 1.1, 2.0, 95, 97, 2000, and 2002-2007. The most significant transition was from the Access 97 to the Access 2000 format which was not backward compatible, and Access 2000 required the new format. Since Access 2000, all newer versions of Access support the Access 2000 format. New features were added to the Access 2002 format which can be used by Access 2002, 2003, and 2007.
In Access 2007, a new database format was introduced: ACCDB. The ACCDB supports complex data types such as multivalue and attachment fields. These new field types are essentially recordsets in fields and allow the storage of multiple values in one field.
Prior to the introduction of Access, the desktop database market was dominated by Borland with their Paradox and dBase programs, and FoxPro. Microsoft Access was the first mass market database program for Windows. With the purchase of FoxPro and incorporating its Rushmore query optimization routines into Access, Microsoft Access quickly became the dominant database for Windows effectively eliminating the competition which failed to transition from the MS-DOS world[1].
Access's initial codename was Cirrus; the forms engine was called Ruby. This was before Visual Basic - Bill Gates saw the prototypes and decided that the BASIC language component should be co-developed as a separate expandable application, a project called Thunder. The two projects were developed separately as the underlying forms engines were incompatible with each other; however, these were merged together again after VBA.
Access was also the name of a communications program from Microsoft, meant to compete with ProComm and other programs. This proved a failure and was dropped.[1] Years later, Microsoft reused the name for its database software.
[edit] Uses
Microsoft Access is part of the Microsoft Office suite and is the most popular Windows desktop database application. It is targeted for the information worker market, and is the natural progression for managing data when the need for a relational database arises or after reaching the limits of Microsoft Excel.
Microsoft Access is used by programmers and non-programmers to create their own database solutions. Access tables support a variety of standard field types, indices, and referential integrity. Access also includes a very intuitive query interface, forms to display and enter data, and reports for printing. The underlying Jet database which contains these objects is multiuser aware and handles record locking and referential integrity including cascading updates and deletes.
Simple tasks can be automated through macros with point and click options. Microsoft Access is very popular among non-programmers who can create visually pleasing and relatively advanced solutions on their own. It is also easy to place a database on a network and have multiple users share and update data without overwriting each other’s work. Data is locked at the record level which is significantly different from Excel which locks the entire spreadsheet.
Microsoft offers a wide range of template databases within the program and for download from their web site. These options are available upon starting Access and allow users to quickly use and enhance a database with pre-defined tables, queries, forms, reports, and macros. Popular templates include tracking contacts, assets, issues, events, projects, and tasks. Templates do not include VBA code.
Microsoft Access also offers the ability for programmers to create solutions using the programming language Visual Basic for Applications (VBA), which is similar to Visual Basic 6.0 and used throughout the Microsoft Office programs such as Excel, Word, Outlook and PowerPoint. Most VB6 code including the use of Windows API calls, can be used in VBA. Power users and developers can extend basic end-user solutions to a professional solution with advanced automation, data validation, error trapping, and multi-user support.
Database solutions created entirely in Microsoft Access are well suited for individual and workgroup use across a network. The number of simultaneous users that can be supported depends on the amount of data, the tasks being performed, level of use, and application design. Generally accepted limits are solutions with 1 GB or less of data (Access supports up to 2 GB) and 50 or fewer simultaneous users. This is appropriate for workgroup and department solutions where the total number of users number a few hundred.
Applications that simply view data or have simple data entry can support considerably more users. Applications that run complex queries or analysis across large datasets would naturally require greater bandwidth and memory. Microsoft Access is designed to scale to support more data and users by linking to multiple Access databases or using a backend database like SQL Server. With the latter design, the amount of data and users can scale to enterprise level solutions.
Microsoft Access is not appropriate for web based applications as its forms and reports only work in Windows. Therefore, it cannot be compared to an ASP.NET or Java/J2EE solution. The Access Jet database is a file based system and does not have the features of servers such as SQL Server, Oracle, or other ODBC compliant databases. It also doesn’t have the overhead, hardware, or licensing requirements of server based solutions. People can use Access databases for web based solutions when the number of users is small or if it's just delivering data without editing. Programs like Microsoft FrontPage and many ISPs offer Microsoft Access as a database storage option.
In enterprise environments, Microsoft Access is particularly appropriate for meeting end user database needs, and rapid application development. Microsoft Access is easy enough for end users to create their own queries, forms and reports, laying out fields and groupings, setting formats, etc. This frees up professional developers to focus on more complex portions of the application.
A “compiled” MDE or ACCDE version of an Access database can be created to prevent users from getting to the design surfaces to modify module code, forms, and reports. This is often used in environments where end user modifications are discouraged or the application's code should be kept private.
Microsoft offers a runtime version of Microsoft Access 2007 for download. This allows people to create Access solutions and distribute it for use by non-Microsoft Access owners (similar to the way DLLs or EXEs are distributed). Unlike the regular version of Access, the runtime version allows users to use the Access application but they cannot use its design surfaces.
Microsoft also offers developer extensions for download to help distribute Access applications, create database templates, and integrate source code control with Visual SourceSafe.
[edit] Features
Microsoft Access is known for its ability to empower non-professional developers to create database applications on their own. Users can easily create tables, queries, forms and reports, and connect them together with macros. Advanced users can use VBA to write rich solutions with advanced data manipulation and user control.
The original concept of Access was for end users to be able to “access” data from any source. Access offers the ability to import and export data to many formats including Excel, Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server, Oracle, ODBC, etc. It also has the ability to link to data in its existing location and use it for viewing, querying, editing, and reporting. This allows the existing data to change and the Access platform to always use the latest data. It can even perform heterogeneous joins between data sets stored across different platforms. Access is often used by people downloading data from enterprise level databases for manipulation, analysis, and reporting locally.
A significant strength of Microsoft Access is its Jet Database format (MDB or ACCDB in Access 2007) which can contain the application and data in one file. This makes it very convenient to distribute the entire application to another user, who can run it in disconnected environments.
One of the benefits of Access from a programmer's perspective is its relative compatibility with SQL (structured query language) — queries can be viewed graphically or edited as SQL statements, and SQL statements can be used directly in Macros and VBA Modules to manipulate Access tables. Users can mix and use both VBA and "Macros" for programming forms and logic and offers object-oriented possibilities. VBA can also be included in queries.
Microsoft Access offers parameterized queries. These queries and Access tables can be referenced from other programs like VB6 and .NET through DAO or ADO. From Microsoft Access, VBA can reference parameterized stored procedures via ADO.
SQL Express or MSDE (Microsoft SQL Server Desktop Engine) 2000, a scaled down version of Microsoft SQL Server 2000, has been a free download for a decade and may be used with Access as an alternative to the Jet Database Engine.
Microsoft Access is a file server based database. Unlike client server RDBMS, Microsoft Access does not implement database triggers, stored procedures, or transaction logging.
In ADP files (supported in Access 2000 and later), the database-related features are geared more towards a client-server architecture with MSDE or Microsoft SQL Server serving as the back-end instead of using the Jet Engine. Thus, it supports the creation of nearly all objects in the underlying server (tables with constraints and triggers, views, stored procedures and UDF-s). However, only forms, reports, macros and modules are stored in the ADP file (the other objects are stored in the back-end database). This centralization of queries and tables in the database server offers a more restrictive environment which appeals to certain missions.
The advantage of an ADP is that it supports the direct creation and editing of SQL Server tables, views, and stored procedures. The disadvantage compared to the native Access database is the inability to keep temporary tables (the ADP cannot store local tables) or link to data from other sources. By definition, this eliminates the ability to query across different data sources. As a result of these limitations and improvements to the native Access database, Microsoft is recommending the use of linked tables in Access for getting to SQL Server data rather than ADPs.
[edit] Development
All database tables, queries, forms, reports, macros, and modules are stored in the Access Jet database as a single file.
For query development, Access offers a Query Designer, a graphical user interface that allows users to create queries without knowledge of the SQL programming language. In the Query Designer, users can "show" the datasources of the query (which can be tables or queries) and select the fields they want returned by clicking and dragging them into the grid. Joins can be created by clicking and dragging fields in tables to fields in other tables. Access allows users to view and manipulate the SQL code if desired. Any Access table, including linked tables from different data sources, can be used in a query.
Access also supports the creation of Pass-Through queries. These are queries that can be linked to external data sources through the use of ODBC connections on the local machine. This enables users to interact with data stored outside the Access programme without using linked Tables. The Pass-Through queries are written using the SQL syntax supported by the external data source.
When developing Reports that are linked to Queries placing or moving items in the design view of the Report Access runs the linked query in the background on any placement or movement of an item in that Report. If the Report is linked to a Query that takes a long time to return records this forces you to wait until the query has run before you can add/edit or move the next item in the Report (this feature cannot be turned off).
Non-programmers can use the macro feature to automate simple tasks through a series of drop down selections. Macros allow users to easily chain commands together such as running queries, importing or exporting data, opening and closing forms, previewing and printing reports, etc. Macros support basic logic (IF conditions) and the ability to call other macros. Macros can also contain sub-macros which are similar to subroutines. In Access 2007, macros are significantly enhanced with the inclusion of error handling and temporary variable support. Access 2007 also introduces embedded macros that are essentially properties of an object's event. This eliminates the need to store macros as individual objects. Macros however, are limited in their functionality by a lack of programming loops and advanced coding logic. Most professional Access developers use the VBA programming language for a richer and more powerful development environment.
The programming language available in Access is, as in other products of the Microsoft Office suite, Microsoft Visual Basic for Applications, which is nearly identical to Visual Basic 6.0 (VB6). VBA code can be stored in modules and code behind forms and reports. Modules can also be classes.
To manipulate data in tables and queries in VBA, two database access libraries of COM components are provided: the Data Access Objects (DAO), which is included in Access and Windows and evolved to ACE in Microsoft Access 2007 for the ACCDE database format, and ActiveX Data Objects ActiveX Data Objects (ADO). Beside DAO and ADO, developers can also use OLE DB and ODBC for developing native C/C++ programs for Access.[2] For ADPs and the direct manipulation of SQL Server data, ADO is required. DAO is most appropriate for managing data in Access/Jet databases, and the only way to manipulate the complex field types in ACCDB tables.
In the database container or navigation pane of Access 2007, Access automatically categorizes each object by type. Many Access developers use the Leszynski naming convention, though this is not universal; it is a programming convention, not a DBMS-enforced rule.[3] It is particularly helpful in VBA where references to object names may not indicate its data type (e.g. tbl for tables, qry for queries).
Microsoft Access is most often used for individual and workgroup projects (the Access 97 speed characterization was done for 32 users).[4] Since Access 97, and with Access 2003 and 2007, Microsoft Access and hardware have evolved significantly. Databases under 1 GB in size (which can now fit entirely in RAM) and 50 simultaneous users are well within the capabilities of Microsoft Access. Of course, performance depends on the database design and tasks. Disk intensive work such as complex searching and querying are the most time consuming.
As data from a Microsoft Access database can be cached in RAM, processing speed may be substantially better when there is only a single user or if the data is not changing. In the past, the effect of packet latency on the record locking system caused Access databases to be too slow on Virtual Private Network (VPN) or Wide Area Network (WAN) against a Jet database. This is less of an issue now with broadband connections. Performance can also be enhanced if a continuous connection is maintained to the back end database throughout the session rather than opening and closing it for each table access. If Access Database performance over VPN or WAN suffers, then Microsoft Terminal Services is an effective solution. Access databases linked to SQL Server or Access Data Projects work great over VPN and WAN.
Split Database Architecture
For best results in multiuser environments, Access applications should adopt a split database architecture. The database should be divided into a front end database that contains the application (queries, forms, reports, macros, and modules) that is linked to tables stored in a back end shared database containing the data. The latter database is stored on a shared network drive, and the front-end database is distributed to each user's desktop and linked to the shared database. Using this design, each user has a copy of Microsoft Access installed on their machine along with their application database. This reduces network traffic since the application does not need to be sent over the line for each use, and allows the front end database to contain tables with data that is private to each user for storing settings or temporary data. This split database design also allows development of the application independent of the data. When a new version is ready, the front end database is replaced without impacting the data database. Microsoft Access has two built-in utilities, Database Splitter and Linked Table Manager, to facilitate this architecture.
Linked tables in Access use explicit paths rather than relative paths, so the development environment should have the same path as the production environment or a "dynamic-linker" routine should be written in VBA.
Access to SQL Server Upsizing
To scale Access applications to enterprise or web solutions, a recommended technique is to migrate to Microsoft SQL Server or equivalent server database. A client-server design significantly reduces maintenance and increases security, availability, stability, and transaction logging.
Access includes an Upsizing Wizard that allows users to upsize their databases to Microsoft SQL Server an ODBC client-server database. An additional solution, the SQL Server Migration Assistant for Access(SSMA), is also available for download from Microsoft.
A variety of upsizing options are available. After migrating the data and queries to SQL Server, the MDB/ACCDB Access database can be linked to the database. This is the easiest migration and most appropriate if the user does not have rights to create objects such as stored procedures on SQL Server. Retrieving data from linked tables is optimized to just the records needed, but are not as efficient for multi-table joins that may require copying the whole table across the network.
Access databases can also be converted to an Access Data Projects (ADP) which is tied directly to one SQL Server database. ADPs support the ability to directly create and modify SQL Server objects such as tables, views, stored procedures, views, and SQL Server constraints. The views and stored procedures can significantly reduce the network traffic for multi-table joins. Unfortunately, ADPs do not support temporary tables or link to other data sources beyond the single SQL Server database. (MDB/ACCDB databases can link to a variety of data sources and let you perform heterogenous queries across them).
Finally, some Access databases are completely replaced by another solution such as ASP.NET or Java once the data is converted.
In many cases, hybrid solutions are created where web interfaces are built by developers using ASP.NET, while administrative or reporting features that don't need to be distributed to everyone and/or change often, are kept in Access for information workers to maintain.
While all Access data can migrate to SQL Server, it should be noted that Access queries are richer than SQL Server queries, so some queries cannot migrate successfully. In some situations, you may need to translate VBA functions and user defined functions into TSQL or .NET functions / procedures. Crosstab queries can be migrated to SQL Server using the PIVOT command.
[edit] Protection
Microsoft Access offers several ways to secure the application while allowing users to remain productive.
The most basic is a database password. Once entered, the user has full control of all the database objects. This is a relatively weak form of protection which can be easily cracked.
A higher level of protection is the use of workgroup security requiring a user name and password. Users and groups can be specified along with their rights at the object type or individual object level. This can be used to specify people with readonly or data entry rights but may be challenging to specify. A separate workgroup security file contains the settings which can be used to manage multiple databases. Workgroup security is not supported in the Access 2007 ACCDB database format, although Access 2007 still supports it for MDB databases.
Databases can also be encrypted. The ACCDB format offers significantly advanced encryption from previous versions [2].
Additionally, if the database design needs to be secured to prevent changes, Access databases can be locked/protected (and the source code compiled) by converting the database to an .MDE file. All changes to the VBA project (modules, forms, or reports) need to be made to the original MDB and then reconverted to MDE. In Access 2007, the ACCDB database is converted to an ACCDE file. Some tools are available for unlocking and 'decompiling', although certain elements including original VBA comments and formatting are normally irretrievable.
[edit] File extensions
Microsoft Access saves information under the following file formats:
File format | Extension |
---|---|
Access Project | .adp |
Access Blank Project Template | .adn |
Access Database (2007) | .accdb |
Access Database Runtime (2007) | .accdr |
Access Database Template (2007) | .accdt |
Access Database (2003 and earlier) | .mdb |
Access Database, used for addins (2,95,97), previously used for workgroups (2). | .mda |
Access Database Template (2003 and earlier) | .mdt |
Access Workgroup, database for user-level security. | .mdw |
Access (SQL Server) detached database (2000) | .mdf |
Protected Access Database, with compiled VBA (2003 and earlier) | .mde |
Protected Access Database, with compiled VBA (2007) | .accde |
Windows Shortcut: Access Macro | .mam |
Windows Shortcut: Access Query | .maq |
Windows Shortcut: Access Report | .mar |
Windows Shortcut: Access Table | .mat |
Windows Shortcut: Access Form | .maf |
[edit] Versions
Date | Version | Version number |
Supported OS | Office suite version |
---|---|---|---|---|
1992 | Access 1.1 |
|
Windows 3.0 | |
1993 | Access 2.0 |
|
Windows 3.1x | Office 4.3 Pro |
1995 | Access for Windows 95 |
|
Windows 95 | Office 95 Professional |
1997 | Access 97 |
|
Windows 9x, NT 3.51/4.0 | Office 97 Professional and Developer |
1999 | Access 2000 |
|
Windows 9x, NT 4.0, 2000 | Office 2000 Professional, Premium and Developer |
2001 | Access 2002 |
|
Windows 98, Me, 2000, XP | Office XP Professional and Developer |
2003 | Access 2003 |
|
Windows 2000, XP,Vista | Office 2003 Professional and Professional Enterprise |
2007 | Microsoft Office Access 2007 |
|
Windows XP SP2, Vista | Office 2007 Professional, Professional Plus, Ultimate and Enterprise |
There are no Access versions between 2.0 and 7.0 because the Windows 95 version was launched with Word 7. All of the Office 95 products have OLE 2 capabilities, and Access 7 shows that it was compatible with Word 7.
[edit] Competing software
- Alpha Five
- Borland Paradox
- dBase
- FileMaker Pro (formerly Claris Filemaker)
- Kexi
- Lotus Approach
- NeoOffice
- OpenOffice.org Base
- Oracle XE (Express Edition)
- Sun StarBase
- Foxpro (later acquired by Microsoft)
- SQLite
- Sybase PowerBuilder
- MySQL
- PostgreSQL
- Omnis Studio
[edit] External links
- Access Team Blog
- Microsoft Access Home Page
- Microsoft Access Newsgroups
- Microsoft Access 3rd Party Tools
- A FAQ site about Microsoft Access
- Microsoft Access for Beginners
- Microsoft Access 101 Video Tutorial
- Microsoft Access within an Organization's Database Strategy
- Microsoft Access Performance Tips
- Microsoft Access Error Numbers and Description Reference
- AxBase : Open Source editor and viewer for mdb databases
[edit] References
- ^ Where did the name for Microsoft Access come from?
- ^ Aleksandar Jakšić (08 2008). "Developing Access 2007 Solutions with Native C or C++". Microsoft Corporation. http://msdn.microsoft.com/en-us/library/cc811599.aspx. Retrieved on 2008-09-22.
- ^ Naming Conventions for Microsoft Access
- ^ Kevin Collins (Microsoft Jet Program Management), "Microsoft Jet 3.5 Performance Overview and Optimization Techniques", MSDN. Retrieved July 19, 2005.
|
This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.
|