Microsoft Word - MS Access Note

56
DATABASE MANAGEMENT SYSTEM DATABASE MANAGEMENT SYSTEM DATABASE MANAGEMENT SYSTEM DATABASE MANAGEMENT SYSTEM Why Database? Why Database? Why Database? Why Database? Why should an Organisation choose to use an integrated database to store its operational data? A general answer to this question is that a database system provides the Organisation with centralised control of its data. This is in sharp contrast to the situation that prevails in many enterprises, where typically each application has its own private files in its own tapes and disks, so that the data is widely dispersed and therefore difficult to control. The advantages of having the data in a centralised database is summarised below: Redundancy can be reduced Redundancy can be reduced Redundancy can be reduced Redundancy can be reduced: In non-database systems each application or department has its own private files resulting in considerable amount of redundancy of the stored data. Thus storage space is wasted. By having a centralised database most of this can be avoided. I do not say or suggest that all redundancy should be eliminated. Sometimes there are sound business and technical reasons for maintaining multiple copies of the same data. In a database system, however, this redundancy can be controlled. Inconsistency can be avoided: Inconsistency can be avoided: Inconsistency can be avoided: Inconsistency can be avoided: This is really a corollary to the above point. When the same data is duplicated and changes are made at one site which is not propagated to the other site, it give rise to inconsistency. Then the two entries regarding the same data will not agree. At such times the data is said to be inconsistent. So if the redundancy is removed chances of having inconsistent data is also removed. The data can be shared The data can be shared The data can be shared The data can be shared: The existing applications can share the data in a database. Standards can be enforced Standards can be enforced Standards can be enforced Standards can be enforced: With the central control of the database, the database administrator can enforce standards. Security restrictions Security restrictions Security restrictions Security restrictions can be applied can be applied can be applied can be applied: Having complete authority over the operational data the database administrator can ensure that the only means of access to the database is through proper channels and can define authorisation checks to be carried out whenever access to sensitive data is attempted. Different checks can be established for each type of access (retrieve, modify, delete, etc.) and to each piece of information in the database. Integrity can be maintained Integrity can be maintained Integrity can be maintained Integrity can be maintained: Integrity means that the data in the database is accurate. Centralised control of the data helps in permitting the administrator to define integrity constraints to the data in the database. Conflicting requirements can be balanced Conflicting requirements can be balanced Conflicting requirements can be balanced Conflicting requirements can be balanced: Knowing the overall requirements as opposed to the individual requirements, the database can be structured to provide an overall service that is best for the Organisation. Characteristics of Database Management Systems Characteristics of Database Management Systems Characteristics of Database Management Systems Characteristics of Database Management Systems Data storage techniques have evolved through several stages, and all stages are still to be found today, the primitive ones mainly on small systems or mini computers. The term database can into popularity in the 1970s. Prior to that the data processing world had talked about files of data. Some of the most important characteristics of a database are: Data Independence Speedy handling of spontaneous information requests Non-redundancy Versatility in representing relationships between data items. Security protection Real-time accessibility As the employment of better data management software spreads, these characteristics spread with it.

Transcript of Microsoft Word - MS Access Note

Page 1: Microsoft Word - MS Access Note

DATABASE MANAGEMENT SYSTEMDATABASE MANAGEMENT SYSTEMDATABASE MANAGEMENT SYSTEMDATABASE MANAGEMENT SYSTEM Why Database?Why Database?Why Database?Why Database? Why should an Organisation choose to use an integrated database to store its operational data? A general answer to this question is that a database system provides the Organisation with centralised control of its data. This is in sharp contrast to the situation that prevails in many enterprises, where typically each application has its own private files in its own tapes and disks, so that the data is widely dispersed and therefore difficult to control. The advantages of having the data in a centralised database is summarised below: Redundancy can be reducedRedundancy can be reducedRedundancy can be reducedRedundancy can be reduced: In non-database systems each application or department has its own private files resulting in considerable amount of redundancy of the stored data. Thus storage space is wasted. By having a centralised database most of this can be avoided. I do not say or suggest that all redundancy should be eliminated. Sometimes there are sound business and technical reasons for maintaining multiple copies of the same data. In a database system, however, this redundancy can be controlled. Inconsistency can be avoided:Inconsistency can be avoided:Inconsistency can be avoided:Inconsistency can be avoided: This is really a corollary to the above point. When the same data is duplicated and changes are made at one site which is not propagated to the other site, it give rise to inconsistency. Then the two entries regarding the same data will not agree. At such times the data is said to be inconsistent. So if the redundancy is removed chances of having inconsistent data is also removed. The data can be sharedThe data can be sharedThe data can be sharedThe data can be shared: The existing applications can share the data in a database. Standards can be enforcedStandards can be enforcedStandards can be enforcedStandards can be enforced: With the central control of the database, the database administrator can enforce standards. Security restrictionsSecurity restrictionsSecurity restrictionsSecurity restrictions can be applied can be applied can be applied can be applied: Having complete authority over the operational data the database administrator can ensure that the only means of access to the database is through proper channels and can define authorisation checks to be carried out whenever access to sensitive data is attempted. Different checks can be established for each type of access (retrieve, modify, delete, etc.) and to each piece of information in the database. Integrity can be maintainedIntegrity can be maintainedIntegrity can be maintainedIntegrity can be maintained: Integrity means that the data in the database is accurate. Centralised control of the data helps in permitting the administrator to define integrity constraints to the data in the database. Conflicting requirements can be balancedConflicting requirements can be balancedConflicting requirements can be balancedConflicting requirements can be balanced: Knowing the overall requirements as opposed to the individual requirements, the database can be structured to provide an overall service that is best for the Organisation. Characteristics of Database Management Systems Characteristics of Database Management Systems Characteristics of Database Management Systems Characteristics of Database Management Systems Data storage techniques have evolved through several stages, and all stages are still to be found today, the primitive ones mainly on small systems or mini computers. The term database can into popularity in the 1970s. Prior to that the data processing world had talked about files of data. Some of the most important characteristics of a database are: Data Independence Speedy handling of spontaneous information requests Non-redundancy Versatility in representing relationships between data items. Security protection Real-time accessibility As the employment of better data management software spreads, these characteristics spread with it.

Page 2: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Relational Database Management Systems (RDBMS) Relational Database Management Systems (RDBMS) Relational Database Management Systems (RDBMS) Relational Database Management Systems (RDBMS) Development of Database Management Systems (DBMS), Relational Database Management Systems(RDBMS), Structured Query Languages (SQLs), etc. are so closely intertwined that some amount of repetition becomes unavoidable. The foundations of Relational Database technology were laid by the Dr. E.F.Codd, who in his paper 'A Relational Model of Data for Large Shared Data Banks' laid the basic principles of the RDBMS. Codd was at that time working for IBM at their San Jose Research Lab in California. He laid down certain principles of database management, referred to as relational model. These principles were soon applied to experimental systems, and a start was made on the design of a database language that would interact with such systems At present there are many implementations of the relational technology. At the mainframe end there are DB2, ORACLE, Ingress all supporting different dialects of SQL. Relational systems are now available in all sizes and shapes and for all sizes of computers. RDBMS Terminology RDBMS Terminology RDBMS Terminology RDBMS Terminology The relational model, is an abstract theory of data that is based on the mathematical theory whose principles were laid down by Dr.E.F. Codd. The relational model of Codd used certain terms and principles, which were not familiar in the data processing circles at that time. The terms that were used to describe the database properties and functions lacked the precision necessary for the formal list of the relational term and their corresponding informal equivalent(s).

Formal Relational termFormal Relational termFormal Relational termFormal Relational term Informal equivalent (s)Informal equivalent (s)Informal equivalent (s)Informal equivalent (s) Relation Table Tuple Row, Record Attribute Column, field Primary key Unique identifier

The Relational Database Management Systems, as said above, are based on the relational model. The relational Model, in turn, is a way of looking at data - that is, it is a prescription for how to represent and manipulate data. More precisely, the relational model is concerned with three aspects of data: data structure, data integrity, and data manipulation. Codd's RulesCodd's RulesCodd's RulesCodd's Rules. 1. Information RuleInformation RuleInformation RuleInformation Rule: All information in a relational database including table names, column names are represented by values in tables. This simple view of data speeds design and learning. User productivity is improved since knowledge of only one language is necessary to access all data such as description of the table and attribute definitions, integrity constraints. Action can be taken when the constraints are violated. Access to data can be restricted. All these information are also stored in tables. 2. Guaranteed Access RuleGuaranteed Access RuleGuaranteed Access RuleGuaranteed Access Rule: Every piece of data in a relational database, can be accessed by using a combination of a table name, a primary key value that identifies the row and a column name which identifies a cell User productivity is improved since there is no need to resort to using physical pointers or addresses. It also provides data independence and make it possible to retrieve each individual piece of data stored in a relational database by specifying the name of the table in which it is stored, the column and the primary key which identifies the cell in which it is stored. 3. Systematic Treatment of Nulls RuleSystematic Treatment of Nulls RuleSystematic Treatment of Nulls RuleSystematic Treatment of Nulls Rule: The RDBMS handles records that have unknown or inapplicable values in a pre-defined fashion. Also, the RDBMS distinguishes between zeros, blanks and nulls in the records and handles such values in a consistent manner that produces correct answers, comparisons and calculations. Through the set of rules for

Page 3: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

handling nulls, users can distinguish results of the queries that involve nulls, zeros and blanks. Even though the rule doesn't specify what should be done in the case of nulls, it specifies that there should be a consistent policy in the treatment of nulls. 4. Active onActive onActive onActive on----line catalog based on the reline catalog based on the reline catalog based on the reline catalog based on the relational modellational modellational modellational model: The description of a database and its contents are database tables and therefore can be queried on-line via the data manipulation language. The Database Administrator's productivity is improved since the changes and additions to the catalog can be done with the same commands that are used to access any other table. All queries and reports can also be done as any other table. 5. Comprehensive data subComprehensive data subComprehensive data subComprehensive data sub----language rulelanguage rulelanguage rulelanguage rule: The RDBMS may support several languages. But at least one of them should allow the user to do all of the following: define tables and views, query and update data, set integrity constraints, set authorisations and define transactions. User productivity is improved since there is just one approach that can be used for all database operations. In a multi-user environment the user does not have to worry about the data integrity and such things, which will be taken care by the system. Also, only users with proper authorisation will be able to access data. 6. View Updating RuleView Updating RuleView Updating RuleView Updating Rule: Any view that is theoretically updatable can be updated using the RDBMS. Data consistency is ensured since the changes made in the view is transmitted to the base-table and vice-versa. 7. HighHighHighHigh----Level Insert, Update and DeleteLevel Insert, Update and DeleteLevel Insert, Update and DeleteLevel Insert, Update and Delete: The RDBMS supports insertion, updation and deletion at a table level. The performance is improved since the commands act on a set of records rather that one record at a time. 8. Physical data IndependencePhysical data IndependencePhysical data IndependencePhysical data Independence: The execution of ad hoc requests and application

programs is not affected by changes in the physical data access and storage methods.

Database administrators can make changes to the physical access and storage method,

which improve performance and do not require changes in the application programs or

requests. Here the user specifies what he wants and need not worry about how the data

is obtained.

9. Logical Data IndependenceLogical Data IndependenceLogical Data IndependenceLogical Data Independence: Logical changes in tables and views such as adding, deleting columns or changing field lengths need not necessitate modifications in the programs or in the format of ad hoc requests. The database can change and grow to reflect changes in reality without requiring the user intervention or changes in the applications. For example adding an attribute or column to the base table should not disrupt the programs or the interactive commands that have no use for the new attribute. 10. Integrity IndependenceIntegrity IndependenceIntegrity IndependenceIntegrity Independence: Like table and view definitions, integrity constraints are stored in the on-line catalog and can therefore be changed without necessitating changes in the application programs. Integrity constraints specific to a particular Relational Database must be definable in the relational data sub-language and storable in the catalog. At least the Entity integrity and referential integrity must be supported. 11. Distribution IndDistribution IndDistribution IndDistribution Independenceependenceependenceependence: Application programs and ad hoc requests are not affected by changes in the distribution of physical data. This improves systems reliability since application programs will work even if the programs and data are moved in different sites. 12. NNNNonononon----subversion Rulesubversion Rulesubversion Rulesubversion Rule: If the RDBMS has a language that accesses the information of a record at a time, this language should not be used to bypass the integrity constraints. This is necessary for data integrity. According to Dr. Codd, a Relational Database Management System (RDBMS) must be able to manage the databases entirely through its relational capabilities.

Page 4: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Data Modeling Data Modeling Data Modeling Data Modeling Data modeling is the process of building database structures to store data. This involves analysis in first identifying which data must be stored and then deciding how best to store it. This step is crucial, because any application ultimately depends on its data structures. If the data structures are poorly designed the application will start from a poor foundation. This will require a lot more work to create a useful and efficient application, if it can be done at all. Principles of Normalization Normalization is a formal process of developing data structures in a manner that eliminates redundancy and promotes integrity. Data Normalization is a comer stone of the relational theory. Many people do not consider a set of data structures to be relational unless it is fully normalized. There are five steps to Data Normalization, which are called the normal forms. Each normal form builds upon the last and functions as both a process and a criterion. For example, a database structure can be developed to the third normal form or can be said to satisfy the second normal form. Before discussing the normal forms, there are two concepts required by normal forms that integral to Data Modeling: Keys and Relationships. Keys Keys Keys Keys A key uniquely identifies a row in a table. There are two types of keys: intelligent keys and non- intelligent keys. An intelligent key is based upon data values such as a date, a last name or a combination of values. A non-intelligent key is completely arbitrary, having no function or meaning other than identification of the row. Intelligent keys are problematic because the key value must be changed to reflect changing data values. An updateable key presents its own problems, because all related tables must be updated every time the key is updated. As a general rule, intelligent keys must never be used, but it is not always possible to do that. A primary key is a column in the table whose purpose is to uniquely identify records from the same table. A foreign key is a column in a table that uniquely identifies records form a different table. Primary and foreign keys therefore have a symbiotic relationship, in which the foreign key is used to store values of another table's primary key to describe the relationship between data from different tables. Relationships Relationships Relationships Relationships There are three possible relationships between related tables: 1. one-to-one 2. one-to-many 3. many-to-many Relational Databases are designed to work most effectively with one-to-many relationships between tables, expressed using primary and foreign keys. Defining a column as a primary key in the database will ensure that no duplicate values are contained in that column. In other words, primary key will be unique. One-to-one relationships are rare, because data elements related in this way are normally placed in the same table. When a one-to-one relationship is desired, it can be expressed simply as a one-to- many relationship using primary and foreign keys.

Page 5: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

One-to-many relationships are most common. A primary key is the 'one' side of the relationship, and the foreign key is the 'many' side of the relationship. A primary key value is unique in its own table. Each primary key may have any number of foreign keys using the same value, in any number of tables, or each pair of primary and foreign key columns is a one-to-many relationship. The data values stored in these columns determine which rows from the table containing the foreign key column are associated with an individual row in the table containing the primary key column. The foreign key value refers to one, and only one, value in the table containing the primary key. The primary key value may be referenced by multiple foreign keys. This is how one-to-many relationships are expressed and maintained by the database. The database can perform special operations on primary and foreign key relationship between tables, including the ability to delete all rows in a table containing a foreign key value when the associated primary key row is deleted or to restrict deletion of a row containing a primary key that has references in another table. Defining primary and foreign key columns in the database promotes data integrity. Many-to-many relationships are problematic and cannot be adequately expressed directly in a relational database. Many-to-many relationships are usually expressed using intersection tables. An intersection table contains two or more foreign keys, relating the primary key values of two or more tables to each other. The role of an intersection table is to convert the many-to-many relationship into two one-to-many relationships that can be easily handled by the database. The First Normal Form The First Normal Form The First Normal Form The First Normal Form ---- Elimination of Repeating Groups Elimination of Repeating Groups Elimination of Repeating Groups Elimination of Repeating Groups A repeating group is a set of columns that store similar information that repeats in the same table. Consider the following table, which contains the contact tracking information: CREATE TABLE CONTACTS CREATE TABLE CONTACTS CREATE TABLE CONTACTS CREATE TABLE CONTACTS CONTACT_ID Number Integer NAME Text 20 CONTACT_DATEI Date Medium Date CONTACT_DESCI Text 50 CONTACT_DATE2 Date Medium Date CONTACT_DESC2 Text 50 This data structure contains a repeating group of the date and description of two conversations. The only advantage of designing the table like this is that it avoids the need for a relationship. But the disadvantages are many:

• This structure limits the number of conversations to two, which will create problems when more than two conversations need to be stored.

• This structure also makes it difficult to do any kind of meaningful searching using the columns, for example to locate a conversation on a specific date (here both the date columns has to be searched which will result is a clumsy SQL code). To eliminate the repeating group, the group is moved to another table, which is then related to the parent table. The primary key of the parent table (CONTACT_ID) is stored in the second table. Moving the repeating group into another table allows any number of conversations to be recorded and searched easily. The primary and foreign key relationships are defined to ensure that no conversations are recorded that do not relate to a contact. The tables contents for this is given below:

Page 6: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

CREATE TABLE CONTACTS CONTACT_ID NumberInteger Primary Key NAME Text 20 CREATE TABLE CONVERSATION CONTACT_ID Number Integer CONTACT_DATE Date Medium Date CONTACT_DESC Text 50 After creation of the tables set relationship with CONTACT_ID in these tables. Every table should have a primary key, and each set of repeating groups should appear in its own table. When these criteria are satisfied, the first normal form is satisfied. The Second Normal Form The Second Normal Form The Second Normal Form The Second Normal Form ---- Elimination of Redundant Data Elimination of Redundant Data Elimination of Redundant Data Elimination of Redundant Data Redundant data is data that is expressed multiple times unnecessarily or depends only on part of a multi-value key. In other words, when a column's value is dependent upon the value of one column in the table, but not another, it is considered redundant. For example: CREATE TABLE EMPLOYEE EMP_NO Number Long Integer NAME Text 20 F_NAME Text 20 DEPT_CODE Number Integer DESCRIPTION Text 50 This table contains redundant data, namely the department description which depends only on the DEPT_CODE and does not vary based on the value of the EMF_NO, which is the primary key of the table. So by storing the department code and description in a different table the redundancy is eliminated. CREATE TABLE EMPLOYEE EMP_NO Number Long Integer Primary key NAME Text 20 F_NAME Text 20 DEPT_CODE Number Integer CREATE TABLE DEPARTMENT DEPT_CODE Number Integer (Primary Key) DESCRIPTION Text 50 The Third Normal Form The Third Normal Form The Third Normal Form The Third Normal Form ---- Eliminate columns not dependent on the key Eliminate columns not dependent on the key Eliminate columns not dependent on the key Eliminate columns not dependent on the key The columns in each table should be a group of columns in which the data in each column contributes to the description of each row in the table. For a given row with a unique key, each column appearing in that row should contribute to the description of that row. For example in the following table, the columns NAME contribute to describing a specific contact using the primary key CONTACT'_ID. But, the COMPANY_NAME and COMPANY_LOCATION does not contribute to describing the record with a given CONTACT_ID, since it identifies an individual and not a company.

Page 7: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

CREATE TABLE CONTACTS CONTACT_ID Number Integer NAME Text 20 COMPANY_NAME Text 20 COMPANY_LOCATION Text 20 So unless the location of the company differs on an individual basis, this column in not dependent on the key value and should be removed to another table. CREATE TABLE CONTACTS CONTACT_ID Number Integer Primary Key NAME Text 20 COMPANY_ID Text 5 CREATE TABLE COMPANY COMPANY_ID Text 5 Primary Key COMPANY_NAME Text 20 COMPANY_LOCATION Text 20 When all the columns in a table describe and depend upon the primary key, the table is said to satisfy the third normal form. Fourth Normal Form Fourth Normal Form Fourth Normal Form Fourth Normal Form ---- Isolate Independent Multiple Relationships Isolate Independent Multiple Relationships Isolate Independent Multiple Relationships Isolate Independent Multiple Relationships A group of tables that satisfies the first, second and third normal forms is sufficiently well designed. However, isolating independent multiple relationships will further improve the data model when one-to-many and many-to-many relationships between tables are involved. In other words, no table should contain two or more one-to-many or many-to-many relationships that are not directly related to the key. Consider the following example: CREATE TABLE CONTACTS CONTACT_ID Number Integer Primary Key NAME Text 20 CREATE TABLE COMPANY CONTACT _ID Number Integer COMPANY_NAME Text 20 COMPANY_LOCATION Text 20 PHONE_NUMBER Text 20 Even though this is not a violation of the third normal form this data structure makes it difficult to store a phone number of a contact without a company and makes it impossible to store multiple phone numbers for the same contact without repeating the company information. The Fourth Normal Form is violated because there are two independent relationships represented in the COMPANY table: one between CONTACTS and COMPANIES and another between CONTACT and PHONE_NUMBER, which should be avoided. This can be achieved as follows: CREATE TABLE CONTACTS CONTACT_ID Number Integer Primary Key NAME Text 20 CREATE TABLE COMPANY CONTACT _ID Number Integer

Page 8: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

COMPANY_NAME Text 20 COMPANY_LOCATION Text 20 CREATE TABLE PHONE CONTACT _ID Number Integer PHONE_NUMBER Text 20 This allows companies and phone numbers to have independent, one-to-many relationships with CONTACTS table, which satisfies the fourth normal form. The Fifth Normal Form The Fifth Normal Form The Fifth Normal Form The Fifth Normal Form ---- Isolate Semantically Related Multiple Relationships Isolate Semantically Related Multiple Relationships Isolate Semantically Related Multiple Relationships Isolate Semantically Related Multiple Relationships The chances that you will ever get to use the fifth normal form are very few, because it requires semantically related multiple relationships, which are rare. Semantically related multiple relationships are two or more relationships among tables that are related closely enough so that they can be resolved into a single relationship. Fifth normal form specifies that they remain separate. Consider the chemical analysis labs, which tests products of various companies. Three tables exist, LAB, PRODUCT and COMPANY. Companies can offer one or more products, labs can test one or more products from one or more companies and a product can be tested in one or more labs and can be offered by one or more companies. Whenever a lab is equipped to test a product from any company, the lab is equipped to test the same product from all companies. If a lab is equipped to analyze a product from a given company, this can be recorded in a table with the following structure: CREATE TABLE LAB_PRODUCT_COMPANY LAB_ID Number Long Integer PRODUCT_ID Number Long Integer COMPANY_ID Number Long Integer The table contains three foreign keys expressing two relationships: the relationship between LABS and PRODUCTS and that between LABS and COMPANIES. The relationships are semantically related because they can be expressed using the same table. In other words, the relationship between PRODUCTS and COMPANIES is implied and expressed in this table. There is nothing wrong with the above data structure, but, it does not satisfy the fifth normal form and more entries are required in the table than necessary if the relationship are separated. Because a lab can test the same product for all companies who offer a given product, the following structure will be better: CREATE TABLE LAB_PRODUCT LAB_ID Number Long Integer PRODUCT_ID Number Long Integer

CREATE TABLE LAB_COMPANY LAB_ID Number Long Integer PRODUCT_ID Number Long Integer This allows the products that a given lab can test to be recorded and the companies whose products can be tested by a lab to be recorded with fewer entries. For example if lab A is newly equipped to do a spectroscopic analysis of products A, B and C offered by companies X and Y, the new structure requires five entries, 3 in the LAB_LPRODUCT

Page 9: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

table and two in LAB_COMPANY table, to express this. To achieve the same, with the original structure we will require six entries. The fifth normal form is not frequently invoked for the reason that the situation simply does not arise frequently. Principles of Denormalization Principles of Denormalization Principles of Denormalization Principles of Denormalization No major application will run in Third Normal Form. This is probably as heretical a statement as can be made in the face of modern relational technology, but it needs to be said. Perhaps, as CPUs get faster and parallel processing architecture is better exploited, this will no longer be true; more likely the size of major applications will also increase. Demand for information and analysis will probably continue to outpace the ability of machines to process it in a fully normalized fashion. Now, before cries for another inquisition begins, this needs to be explained. The issue of normalization has several components. This section does not challenge the relational model or the process of Normalization, which is an excellent and rational method of analyzing data and its fundamental relationships. This section challenges the following fallacies:

• Normalization completely rationalizes data.

• Normalization accurately maps how humans work with data

• Normalized data is the best representation of data.

• Data stored non-redundantly will be accessed faster than data stored many times.

• Normalized tables are the best way to store data.

• Referential integrity requires fully normalized tables. Normalization is simply a method to analyze elements of data and their relationships and the relational model is the theoretical superstructure that supports the process. Together, these provide a way of viewing the world of data. But they are not the only correct or useful ways to view the data. In fact, in a complex set of relationships, even the third normal form becomes insufficient rather quickly. Higher forms have been conceived to cope with these more difficult relations, although they are not used outside of academia. Theorists readily acknowledge that these also fail completely model reality. When analyzing the data of a business, normalizing the data to at least the third normal form assures that each non-key column in each table is dependent only on the whole primary key of the table. If the data relationships are complex enough, normalizing to a higher form does a fine, if not complete, job of giving you a deep understanding of data and of relations between the various elements that must be protected and sustained as the application and database are built. For a major application, however, or even a simple application where tasks do not readily map to fully normalized tables, once the analysis is complete, the design process may need to denormalize some of the tables in order to build an application that is responsive, maps to the user's tasks and will actually complete its processing in the time windows available. Denormalization is the opposite of Normalization. It is the process of increasing redundancy in the database either for convenience or to improve performance. However, proper denorrnalization takes place after a model has been fully normalized. Denormalization is usually done for convenience and to improve performance. Denormalisation of frequently performed operations or calculations can be used to improve performance. For example in accounting packages there will be the daily transaction table which contains the details of each and every transaction for every head

Page 10: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

of accounts. But usually there will be a monthly transaction summary which will only have the monthly aggregate of all the transactions under each head of account. The data contained in the monthly transaction table is completely redundant, because everything can be derived form the daily transaction table using SQL statements. But the monthly summary information is very frequently used and calculating it each and every time will slow down the application resulting in poor response times. Unfortunately, the updates to the daily transaction table are not automatically reflected in the summary table, unless database triggers are created to ensure that data integrity is maintained. So before doing a denormalisation, you should make sure that the costs of maintenance do not outweigh the benefits. It is very important to understand that the design of data structures will have a profound impact on the performance and structure of the front-end application and reports. Although it is possible to 'work around' a poor data model with a great deal of code, it is not desirable to do so. Ideally an application should start with a fully normalized data structure, which will serve as a firm foundation. However, any recommendations attempting to produce better response will have to differ from application to application. They will also differ over time as query optimization methods improve, and as more and more CPU power is pushed out to the peripheral devices in the computer system and network. Benchmarking your application on your system is the only way to truly optimize your database. To sensibly build an application you must strike a balance among three primary factors: ease of use, performance and maintainability. In a perfect world these would all be maximized. But in a world where projects have limited development time frames, machines have limited power, and ease of use essentially means additional program complexity, not favouring one factor at the expense of others is a challenge. The two integrity rules for the relational models areThe two integrity rules for the relational models areThe two integrity rules for the relational models areThe two integrity rules for the relational models are:

1. Entity Integrity 1. Entity Integrity 1. Entity Integrity 1. Entity Integrity No attribute participating in the primary key of a base relation is allowed to contain any nulls. Primary key performs the unique identification function in a relational model. Thus a null primary key value within a base relation would be like saying that there was some entity that had no known identity. An entity that cannot be identified is a contradiction in terms, hence the name entity integrity. 2. Referential Integrity 2. Referential Integrity 2. Referential Integrity 2. Referential Integrity If base relation/table includes a foreign key (FK) matching the primary key (PK) of some other base relation, then every value of FK in the first table/relation must either be equal to the value of PK in some tuple of the second table/relation or be wholly null (that is each attribute value participating in that FK value must be null). Or in other words a given foreign key value must have matching primary key value in some tuple of the referenced relation if that foreign key value is non null. Sometimes, it is necessary to permit foreign keys to accept nulls. Here it must be noted that the null are of the variety 'value does not exist' rather than 'value unknown'.

* * *

Page 11: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

MS ACCESSMS ACCESSMS ACCESSMS ACCESS Unlike other application software MS Access ask for the filename (database name) as soon as you try to create a new file. This database name will crate a database workspace in which we can create several objects such as Table, Query (View), Forms, Modules, Pages, Reports, etc. each object in this work space has its own importance and functions. The default file extension of Microsoft Access is ‘....MDB’ (MMMMicrosoft DDDDataBBBBase). Microsoft Access obeys several features of RBMS Codd rules. Here also data are stored in tables. The previous versions of DBMS like dBase, FoxPro, etc store records in flat files. For extracting records from table SQL language is required. TablesTablesTablesTables In table tab you can create tables which are used for storing records. In Access all records are kept in Tables. All other objects are used to manage, manipulate and extract records from table. You can create several Tables in a database. While creating table apply normalization techniques. Tables should be properly related. You should properly enforce referential integrity check. By enforcing this we can avoid orphan records. QueryQueryQueryQuery Queries are used to create user views, extract records based on conditions, calculating and updating values in table etc. queries are only a structure. It doesn’t contain any record. While running a query it will extract records from table. Query can be classified as Select Query, Parameter Query, Update Query, Crosstab Query, Make-table Query, Append Query, Duplicate Query, Unmatched Query, Delete Query and Union Query. FormsFormsFormsForms Forms are used for data entry operations. We create several types of forms based on the purpose we can create columnar forms (data entry), Tabular forms for viewing and analyzing records. We can design forms as well as create forms by using wizard. PagesPagesPagesPages Pages are also front end tools in access. We can create html pages and use web browsers to open database. It is quite suitable for multi user data entry environment. ReportsReportsReportsReports Creating reports we can use report tab. The Report tool of ms access is a power full and flexible one. We can categorize, group, sort and organize data in report. Multi level grouping is possible in reports. MacrosMacrosMacrosMacros These are small built in facility or programme to perform certain type of generic operations such as calculating and assigning values in forms controls, displaying messages etc. ModulesModulesModulesModules Modules are used for writing visual basic application coding. We can define functions (methods), procedures, global variables etc in module session.

Field data types available in Access (MDB)Field data types available in Access (MDB)Field data types available in Access (MDB)Field data types available in Access (MDB)

NoteNoteNoteNote The information in this topic applies only to a Microsoft Access database (.mdb).

The following list summarizes all the field data types available in Microsoft Access, their uses, and their storage sizes.

Page 12: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Text Text Text Text Use for text or combinations of text and numbers, such as addresses, or for numbers that do not require calculations, such as phone numbers, part numbers, or postal codes. Stores up to 255 characters. The FieldSizeFieldSizeFieldSizeFieldSize property controls the maximum number of characters that can be entered. Memo Use for lengthy text and numbers, such as notes or descriptions. Stores up to 65,536 characters. Number Use for data to be included in mathematical calculations, except calculations involving money (use Currency type). Stores 1, 2, 4, or 8 bytes; stores 16 bytes for Replication ID (GUID). The FieldSizeFieldSizeFieldSizeFieldSize property defines the specific Number type. Date/Time Use for dates and times. Stores 8 bytes. Currency Use for currency values and to prevent rounding off during calculations. Stores 8 bytes. AutoNumber Use for unique sequential (incrementing by 1) or random numbers that are automatically inserted when a record is added. Stores 4 bytes; stores 16 bytes for Replication ID (GUID). Yes/No Use for data that can be only one of two possible values, such as Yes/No, True/False, On/Off. Null values are not allowed. Stores 1 bit. OLE Object OLE Object OLE Object OLE Object Use for OLE objects (such as Microsoft Word documents, Microsoft Excel spreadsheets, pictures, sounds, or other binary data) that were created in other programs using the OLE protocol. Stores up to 1 gigabyte (limited by disk space). Hyperlink Use for hyperlinks. A hyperlink can be a UNC path or a URL. Stores up to 64,000 characters. Lookup Wizard Use to create a field that allows you to choose a value from another table or from a list of values using a combo box— -choosing this option in the data type list starts a wizard to define this for you. Numeric Field sizeNumeric Field sizeNumeric Field sizeNumeric Field size SettingSettingSettingSetting DescriptionDescriptionDescriptionDescription Decimal Decimal Decimal Decimal

precisionprecisionprecisionprecision Storage Storage Storage Storage sizesizesizesize

Byte Stores numbers from 0 to 255 (no fractions). None 1 byte Decimal Stores numbers from –10^38–1 through 10^38–1 (.adp)

Stores numbers from –10^28–1 through 10^28–1 (.mdb) 28 12bytes

Integer Stores numbers from –32,768 to 32,767 (no fractions). None 2 bytes Long Integer

(Default) Stores numbers from –2,147,483,648 to 2,147,483,647 (no fractions).

None 4 bytes

Single Stores numbers from –3.402823E38 to –1.401298E–45 for negative values and from 1.401298E–45 to 3.402823E38 for positive values.

7 4 bytes

Double Stores numbers from –1.79769313486231E308 to

15 8 bytes

Page 13: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

–4.94065645841247E–324 for negative values and from 4.94065645841247E–324 to 1.79769313486231E308 for positive values.

Replica-tion ID

Globally unique identifier (GUID) N/A 16 bytes

InputMaskInputMaskInputMaskInputMask

This property to make data entry easier and to control the values users can enter in a text box control. Input masks are helpful for data-entry operations such as an input mask for a Phone Number field that shows you exactly how to enter a new number: (___) ___-____.

The InputMaskInputMaskInputMaskInputMask property can contain up to three sections separated by semicolons (;).

SectionSectionSectionSection DescriptionDescriptionDescriptionDescription First Specifies the input mask itself; for example, !(999) 999-9999. For a list of

characters you can use to define the input mask, see the following table. Second Specifies whether Microsoft Access stores the literal display characters in the table

when you enter data. If you use 0 for this section, all literal display characters (for example, the parentheses in a phone number input mask) are stored with the value; if you enter 1 or leave this section blank, only characters typed into the control are stored.

Third Specifies the character that Microsoft Access displays for the space where you should type a character in the input mask. For this section, you can use any character; to display an empty string, use a space enclosed in quotation marks (" ").

When you create an input mask, you can use special characters to require that certain data be entered (for example, the area code for a phone number) and that other data be optional (such as a telephone extension). These characters specify the type of data, such as a number or character that you must enter for each character in the input mask.

You can define an input mask by using the following characters.

CharacterCharacterCharacterCharacter DescriptionDescriptionDescriptionDescription 0 Digit (0 to 9, entry required, plus [+] and minus [–] signs not allowed). 9 Digit or space (entry not required, plus and minus signs not allowed). # Digit or space (entry not required; spaces are displayed as blanks while in

Edit mode, but blanks are removed when data is saved; plus and minus signs allowed).

L Letter (A to Z, entry required). ? Letter (A to Z, entry optional). A Letter or digit (entry required). a Letter or digit (entry optional). & Any character or a space (entry required). C Any character or a space (entry optional). . , : ; - / Decimal placeholder and thousand, date, and time separators. (The actual

character used depends on the settings in the Regional Settings PropertiesRegional Settings PropertiesRegional Settings PropertiesRegional Settings Properties dialog box in Windows Control Panel).

< Causes all characters to be converted to lowercase. > Causes all characters to be converted to uppercase. ! Causes the input mask to display from right to left, rather than from left to

right. Characters typed into the mask always fill it from left to right. You can include the exclamation point anywhere in the input mask.

\ Causes the character that follows to be displayed as the literal character (for example, \A is displayed as just A).

Page 14: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

NoteNoteNoteNote Setting the InputMaskInputMaskInputMaskInputMask property to the word "Password" creates a password-entry control. Any character typed in the control is stored as the character but is displayed as an asterisk (*). You use the Password input mask to prevent displaying the typed characters on the screen. For a control, you can set this property in the control's property sheet. For a field in a table, you can set the property in table Design view (in the Field Properties section) or in Design view of the Query window (in the Field Properties property sheet ). If you move text from a field for which you've defined an input mask onto the Clipboard, the literal display characters are copied, even if you have specified that they not be saved with data. NoteNoteNoteNote Only characters that you type directly in a control or combo box are affected by the input mask. Microsoft Access ignores any input masks when you import data, run an action query, or enter characters in a control by setting the control's TextTextTextText property in Visual Basic or by using the SetValue action in a macro. When you've defined an input mask and set the FormatFormatFormatFormat property for the same field, the FormatFormatFormatFormat property takes precedence when the data is displayed. This means that even if you've saved an input mask, the input mask is ignored when data is formatted and displayed. The data in the underlying table itself isn't changed; the FormatFormatFormatFormat property affects only how the data is displayed.

ExampleExampleExampleExample

The following table shows some useful input masks and the type of values you can enter in them.

Input maskInput maskInput maskInput mask Sample valuesSample valuesSample valuesSample values (000) 000-0000 (206) 555-0248 (999) 999-9999 (206) 555-0248 ( ) 555-0248 (000) AAA-AAAA (206) 555-TELE #999 –20 2000 >L????L?000L0 GREENGR339M3 MAY R 452B7 >L0L 0L0 T2F 8M4 00000-9999 98115- 98115-3007 >L<?????????????? Maria Brendan SSN 000-00-0000 SSN 555-55-5555 >LL00000-0000 DB51392-0493

StartStartStartStart⇒⇒⇒⇒All Programs/ProgramsAll Programs/ProgramsAll Programs/ProgramsAll Programs/Programs⇒⇒⇒⇒Microsoft AccessMicrosoft AccessMicrosoft AccessMicrosoft Access

Choose Blank databaseBlank databaseBlank databaseBlank database option button (File⇒New⇒Blank Database)⇒OK

Give a Database Name⇒Create Now you can see the Database window which contains several objects as mentioned earlier.

Creating TableDouble click on the Create Table in Design View (New⇒Design

View⇒OK). In the Table Design pane type Filed Names, Select Data Type and in Field Properties pane give proper Filed Properties such as Filed Size (Width), Format, Validation Rule etc. Filed Name: - you should give a meaningful and short name for the filed based on the type of value in which you are going to type (store). Eg: - EmpNameEmpNameEmpNameEmpName for Name of employee, DateBirthDateBirthDateBirthDateBirth for Date of Birth etc. MS Access supports space in field names, but it is better to avoid space in between words in a filed name. To identify words use capital letters at the beginning of each word.

Page 15: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Field Description is meant for marking your commend. Filed size: - no of characters which can be accommodated in this filed. Format: - Whether Capital letters, Small letters, Currency format or comma separated format etc. Input mask: - See page 14 Caption: - To display a Label as filed title when we take datasheet view Default value: - a value which will appear automatically in the new records row when we

take data sheet view Validation Rule: - for adding a constraint while entering data. For example BasicPay should be grater than or equal to 4500 etc. Validation Text: - A message which will display when the validation rule is violated. Required: - Yes means data entry is compulsory, No means you can skip this filed while entering data. Allow zero length: -If Required property is ‘Yes’ this is ‘No’, if Required property is ‘No’ this is ‘Yes’. To mention whether this field contains Null value or not. Indexed: - is used to determine whether sorting is required or not. This field is also used for specifying whether duplicate values are allowed in the filed or not. Unicode compression: - whether compression enable for Hyperlink and memo fields. IME Mode: IME Mode: IME Mode: IME Mode: ---- You can specify the Kanji Conversion Mode when the focus shifts to control by setting the IMEModeIMEModeIMEModeIMEMode property. If set to No Control (default) the setting before the focus shifted to that control is used. For any other setting, the Kanji Conversion Mode setting for that control is used. For example, if the IMEModeIMEModeIMEModeIMEMode property is set to Off, the Kanji Conversion Mode is turned off, and if the IMEModIMEModIMEModIMEModeeee property is set to On, the Kanji Conversion Mode is turned on. The Kanji Conversion Mode automatically changes each time the focus shifts between controls. IME Sentence Mode: IME Sentence Mode: IME Sentence Mode: IME Sentence Mode: ---- You can use the IMESentenceModeIMESentenceModeIMESentenceModeIMESentenceMode property to specify or determine the IME Sentence Mode of fields of a table or controls of a form that switch when the focus moves

SmartTags: SmartTags: SmartTags: SmartTags: ---- Returns a SmartTagsSmartTagsSmartTagsSmartTags collection that represents the collection of smart tags that have been added to a control. Smart tag actions are processes that are programmed into smart tags that allow users to perform certain functions related to the smart tag. For example, one action for a smart tag might be to access a Web site, while another action

Page 16: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

inserts contact information from Microsoft Outlook, while yet another action displays a map and driving directions.

Input Method Editor (IME)Input Method Editor (IME)Input Method Editor (IME)Input Method Editor (IME)

The feature or some of the options described here are only available if support for Japanese, Simplified Chinese, Traditional Chinese, or Korean is enabled through Microsoft Office Language Settings.

Now create a table based on the following exercise. Don’t alterDon’t alterDon’t alterDon’t alter the default settingsthe default settingsthe default settingsthe default settings ofofofof field field field field propertiespropertiespropertiesproperties, until you are requested to do so in the exercise, other wise leave it as such.

MS Access Exercise MS Access Exercise MS Access Exercise MS Access Exercise –––– I I I I

Open Microsoft Access from Programs menu. Select ‘Blank Access Database’ radio button from the ‘Microsoft Access’ dialog box. Then click OKOKOKOK button. Now you are prompted for the Database name. Give a suitable name for your database say “Sample”. Then click Create button. This will create “SampleSampleSampleSample.MDB”MDB”MDB”MDB” database. Now from the Objects sheet tab in the ‘Database window’ titled “Sample” choose table object. Then db click on the ‘Create Table in Design viewCreate Table in Design viewCreate Table in Design viewCreate Table in Design view’ option OR click on the NewNewNewNew button and select the ‘Design‘Design‘Design‘Design View’View’View’View’ from the ‘New Table’ dialog box. By using the following information you create the Fields (Attributes) properly. Use ‘F6’ function key for switching between the ‘field property’ pan and ‘design pan’ choose proper filed property from the table given below.

Field NameField NameField NameField Name Data TypeData TypeData TypeData Type DescriptionDescriptionDescriptionDescription EmpCodeEmpCodeEmpCodeEmpCode TextTextTextText Employee code as AlphabetsEmployee code as AlphabetsEmployee code as AlphabetsEmployee code as Alphabets EmpName Text Name in capital letters, Initials

at end Sex Text M or F Designation Text DateofBirth Date/Time Caste Text BasicPay Number

Field Properties. (Choose corresponding property from the following table)

Field Field Field Field sizesizesizesize

FormatFormatFormatFormat Default Default Default Default ValueValueValueValue

Validation Validation Validation Validation RuleRuleRuleRule

RequiredRequiredRequiredRequired IndexIndexIndexIndex

5555 YesYesYesYes Yes (No Yes (No Yes (No Yes (No Duplicates)Duplicates)Duplicates)Duplicates)

25 > Yes No 1 > M M or F Yes No 20 > No No Medium

date

3 > OT SC or ST or OT or OBC

No No

Integer Between 1500 and 30000

Type appropriate ‘ValidationValidationValidationValidation Text’Text’Text’Text’ for Validation rules. Say “Type M for Male or F for Female” etc. Save the Table and Give a Name “SalarySalarySalarySalary”. Open the table and enter more than 20 records in the table. Take the design of the table. Add two more fields “DateJoin” (Date/Time), “Remarks” (Memo) and give suitable properties for them. Again reopen the table and edit the fields.

Page 17: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Sample DataSample DataSample DataSample Data (Ref 2 Tables (Ref 2 Tables (Ref 2 Tables (Ref 2 Tables for full details for full details for full details for full details)))) Emp Code

EmpName Sex Designation

E01 Krishnan Nair C M Section Officer

E02 Mohan Boss VK M Assistant

E03 John B Mathew M Asst.Professor

E04 Vijayan D M Gardener

E05 Sreekumari Amma P F Typist

E06 Viswambharan MR M Assistant

E07 Oommen Mathew M Asst.Professor

E08 Vasudevan PN M Driver

E09 Venkitachalam VH M Section Officer

E10 Neena Joseph F Asst.Professor

E11 Poulose AP M Roneo Operator

E12 Janardhanan Nair N M Gardener

E13 Raghavan PK M Peon

E14 Sathyaseelan S M Peon

E15 Rajappan E M Peon

E16 Chandrasekharan KP M Peon

E17 Sasidharan Nair KB M Roneo Operator

E18 Lonappan CP M Section Officer

E19 Thresia Ikkaraparambil F Sweeper

E20 Parthan K M Typist

E21 Ushakumari DS F Confidential Assistant

E22 Chandrika DS F Confidential Assistant

E23 Dharam Veer M Director

E24 Maya Muraleedharan R F Lecturer

E25 Abdul Vahid M Deputy Director

E26 Sulochana Devi S F Peon

E27 Lalitha KP F Lecturer

E28 Leelamma KP F Lecturer

E29 Anil Kumar C M Accounts Officer

E30 Vineetha S F Research Assistant

EmpCodeEmpCodeEmpCodeEmpCode DateBirthDateBirthDateBirthDateBirth CasteCasteCasteCaste BasicPayBasicPayBasicPayBasicPay DateJoinDateJoinDateJoinDateJoin E01 08/Jul/57 OT 9850 06/Apr/80

E02 06/May/64 OT 7000 05/Apr/87 E03 01/Mar/59 OT 18450 05/Apr/84

E04 15/Jan/70 SC 4750 22/Oct/96 E05 05/Apr/73 OT 5250 04/May/95 E06 03/Aug/68 SC 6500 03/Jan/90

E07 08/Mar/63 OT 17650 08/Nov/90 E08 29/Feb/64 ST 5250 16/Apr/85

E09 08/Jul/60 OT 9650 08/May/87 E10 07/Dec/64 OT 16450 05/Apr/89

E11 29/Apr/71 OT 5425 06/May/90 E12 31/May/72 ST 4250 11/Sep/99 E13 07/Jul/67 SC 5525 28/Mar/90

E14 19/Apr/68 SC 5345 20/Apr/92 E15 03/Aug/74 ST 5120 21/Jun/00

E16 08/May/73 OT 4870 24/Jul/01 E17 04/May/64 OT 5100 08/May/92

Page 18: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

E18 06/May/56 OT 9100 05/Jan/77 E19 08/Aug/68 OT 4500 06/Apr/87

E20 27/Jul/69 OBC 4800 08/May/92 E21 01/Jan/68 SC 5845 02/Jan/95

E22 23/May/65 ST 6250 20/Jun/87 E23 31/May/61 OT 28400 02/Jul/86 E24 08/Apr/79 OT 9450 09/Sep/03

E25 28/Apr/57 OBC 15245 27/Feb/78 E26 16/Jun/79 OBC 4650 19/Aug/04

E27 06/May/77 OBC 8900 14/Nov/03 E28 05/Jul/80 OT 8750 25/Aug/04

E29 01/Jan/60 OBC 14250 08/May/85 E30 29/Feb/76 OT 8750 15/Sep/03

MS Access Exercise MS Access Exercise MS Access Exercise MS Access Exercise ––––IIIIIIII

Create a new database “PayRollPayRollPayRollPayRoll” and design a table “DesignationDesignationDesignationDesignation” in it with the following details.

Field NameField NameField NameField Name Field TypeField TypeField TypeField Type Field SizeField SizeField SizeField Size DescriptionDescriptionDescriptionDescription

DesigCode Text 5 Primary key* Designation Text 30 *For selecting Primery key property choose the corresponding filed name and Click Edit

⇒ Primary key OR Primary Key button in toolbar OR Rt. click and choose Primary Key. Save the table as DesignationDesignationDesignationDesignation. Create one more table “Personnel” in the same database with the following details Give Proper Validation Rule, Validation Text, Format, Default Value as described in Exercise 1

Field Name Field Name Field Name Field Name Field TypeField TypeField TypeField Type Field SizeField SizeField SizeField Size DescriptionDescriptionDescriptionDescription

EmpCode Text 5 Primary Key EmpName Text 25 EmpAddress Text 200 DateBirth Date/Time DateJoin Date/ime Sex Text 1 Designation Text 5 Foreign Key Gazatted Yes/No Caste Text 3 BasicPay Number Integer Phone Text 15 Inputmask(####)-########### Remarks Memo Establishing RelationshipsEstablishing RelationshipsEstablishing RelationshipsEstablishing Relationships between tables between tables between tables between tables....

1. Close All Design/Data Sheet view of table, if any 2. Tools⇒Relationships 3. Select required tables (Hold down shift/Ctrl for multiple selections). 4. Add (only once) 5. Close Show Table Dialog box. (Rt Click on the filed list pane and choose show show show show

tabletabletabletable for the dialog box again) 6. Click and Drag Primary key (Bold) filed from Master Table

(Designation.DesigCode) to foreign key of related table(Personnel).

Page 19: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

7. See the fileds involving Relationship, DesigCode and Designation. 8. Check the Enforce Referential Integrity Check box. 9. Check the other two check boxes Cascade Update/Delete Related fields. 10. See the Relationship type: One to Many or One to One etc. 11. Create 12. Save and Close the relationship window.

Data Entry in Tables. Here Designation table is the Master table and Personnel table is the related tables. In other words you can add employees on existing designation. So primarily enter all the available designations in the Designation table.

DesigCode Designation

AD01 Director

AC02 Assistant Professor

AC03 Lecturer

AD04 Deputy Director

AD05 Accounts Officer

AD06 Section Officer

AC07 Research Assistant

AD08 Assistant

AD09 Confidential Assistant

AD10 Typist

AD11 Driver

AD12 Gardener

AD13 Roneo Operator

AD14 Peon

Page 20: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

AD15 Sweeper

AD16 Public Relation Officer

AD17 Security Officer

Enter a few records in the Personnel table. See the sample data tables for data entry. Remember type the code of designation instead of designation in the designation field. After entering 10 records save and close the table. Here entering designation code is a cumbersome process, because you should remember all designation code. So data entry error may occur. To avoid these problems build a lookup wizard (Combo box) from designation table. For that perform the following steps. Select Personnel Table and DesignDesignDesignDesign Select Designation Field In the filed properties pane select LookupLookupLookupLookup tab Display Control: - Combo box Row Source Type: - Table/Query. (The value of this filed is coming from another table or

query, ie from Designation table) Row Source: - Click on (…)(…)(…)(…) Button. Don’t Select Table name form the list. Now select the required table (here DesignationDesignationDesignationDesignation) and click ADDADDADDADD once. Then close the Show table dialog box. (Rt Click on the filed list pane and choose show table for the dialog box again) Drag required fields from field list window to the field row of query builder. Here first column DesigCode (column 1) and Second Column Designation. (2 Columns) Close Query builder window and click yes. Bound column: 1 (Column to be saved. Here type Column number of DesigCode Column). Column count: - 2 Column Width: 1;2 (1 inch for DesigCode and 2 inches for Designation) List width: - 3. (Sum of Column width) Save table. Open it and try to enter data. Now you can see a combo box which will display the DesigCode and Designation. Similar technique can be applied for Sex and Caste fileds. Here the answers are predefined. M or F and SC, ST, OT, OBC, etc. so we can create lookup by giving values, not from tables. So redesign personnel table. Select sex filed and choose lookup tab Display control: - Combo box Row Source Type: - Value List (List of values are given by user) Row Source: - M;F Bound Column: -1 Column count: 1 and retain all the default values in the rest of property attributes. Select Caste filed and designs Lookup like this Display control : Combo box Row Source Type : Value List Row Source : SC; ST; OT; OBC Save the design of your table. Add 20 records in it. Redesign the table for more meaningful structure as per the guidance. Modify the above two exercises by using your own ideas. Recreate/create some databases and design one or two tables in it.

MS Access Exercise IIIMS Access Exercise IIIMS Access Exercise IIIMS Access Exercise III Create following tables in Payroll database. Give Proper Validation Rules for Sex and Caste Fields. Give Proper Validation text also.

Page 21: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

1.1.1.1. DepartmentDepartmentDepartmentDepartment FieldFieldFieldField Data TypeData TypeData TypeData Type SizeSizeSizeSize

DeptCode Text 5 Primary Key Department Text 30 Initial Capital

2.2.2.2. DesignationDesignationDesignationDesignation FieldFieldFieldField Data TypeData TypeData TypeData Type SizeSizeSizeSize

DesigCode Text 7 Primary Key Designation Text 30 Initial Capital

3.3.3.3. PersonnelPersonnelPersonnelPersonnel FieldFieldFieldField Data TypeData TypeData TypeData Type SizeSizeSizeSize

EmpCode Text 8 Primary Key EmpName Text 25 Initial Capital

*Designation Text 7 Foreign key

*Department Text 5 Foreign key

**Sex Text 1 Upper case only

**Caste Text 3 Upper case only

DateBirth Date/Time DateJoin Date/Time BasicPay Numeric Integer

4.4.4.4. SalarySalarySalarySalary FieldFieldFieldField Data TypeData TypeData TypeData Type SizeSizeSizeSize

*Employee Text 8 Foreign Key SalDate Date/Time DA Currency Currency Decimal Place 2 HRA Currency Currency Decimal Place 2 Gross Number Single Format : Currency PF Currency Currency Decimal Place 2 NET Number Single Format : Currency

Decimal Place 2

For creating a lookup wizard first you select the required field. You can create a lookup Wizard (Combo box or List box) from a Table, Query or by typing the required values for the list. First you select the Lookup sheet tab in the Field Properties pane. Then select a suitable Display control, Say List Box or Combo Box which ever you want. Then select a Row Source Type, say Table/Query or Value List. If the value of that particular display control is coming from a table or from a query select Table/Query option. If you are typing the values select Value List. Here the values of * marked fields comes from another table. So the Row Source Type of these fields is Table/Query. But that for ** marked fields (Sex & Caste) is given by the user. So select Value list for these fields.

For Value list Row Source cell is filled by the values typed by the user separated by the semicolumn (;) symbol. For example for Sex Field, Row Source type - ValueList and Row Source Type – M;F.

For Table/Query click on the … … … … button on the right side of the Row Source cell. Then Select Suitable table from the Show Table Window and click on the AddAddAddAdd button. After adding suitable table(s) closeclosecloseclose the Show Table Dialog box. Then Click and Drag Suitable fields to the Corresponding Column shown below or select the required field name in the column by using the drop down arrow in the right of each column in the Field row. After dragging the required fields Close the Query builder window by clickng X mark and click

Page 22: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

YesYesYesYes for saving the structure. Note the column count and the no of column in which the code field lays.

Bound column is the number of code column in the builder window. If it lay in the First column bound column is 1. That column is going to save in to the hard disk.

Column count is the count of columns in the list. If you have 1 column it is 1 if you have 2 columns it is 2.

Suppose you want to display the sex field as Male/Female and want to save M/F in the hard disk. For that you type M;Male;F;FemaleM;Male;F;FemaleM;Male;F;FemaleM;Male;F;Female in the Row source and type bound column 1, Column count 2. Now the list appears as two columns like

MMMM MaleMaleMaleMale F Female

Suppose if you don’t want to display the first column select the column widths cell

and type 0;2. that means we are not providing width for first column. Limit to list –Yes- means user can’t type new values in a combo box. No- means user

can type new values. After creating the structure of these tables set proper relationships.

Tools⇒Relationships. Rt Click and choose Show tables. Add additional tables and create the following relationships properly.

Tick the checkboxes of referential integrity and create the relationship

Then type 5 Departments, 10 Designations, 20 Employees and add some Employee codes and Date only in the Salary table

DepartmentDepartmentDepartmentDepartment

EmpCodeEmpCodeEmpCodeEmpCode DepartmentDepartmentDepartmentDepartment

ADMN Administration ACF Accounts and Finance

HMAF Home Affairs EDT Education and Training SW Social Welfare

ES Economics and Statistics BD Backward Development

FCS Food and Civil Supplies IGW Irrigation and Ground Water

AGR Agriculture AHV Animal Husbandry and Veterinary TSM Tourism

ELC Electricity RVN Revenue

PW Public Works

Page 23: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Add the following codes to the previous data

PersonnelPersonnelPersonnelPersonnel SalarySalarySalarySalary (EmpCode and SalDate only)

MS Access Exercises 4 MS Access Exercises 4 MS Access Exercises 4 MS Access Exercises 4 –––– Queries Queries Queries Queries

Select QueriesSelect QueriesSelect QueriesSelect Queries

It is used to extract records from the tables, which satisfies certain conditions. Select the Query Sheet tab and click New button in the database window. From the New query window choose Design view option and click ok button. From the Show table window add required table(s). Eg. Add Personnel and Designation from the small window and close the show table dialog box. Then select the required fields from the corresponding tables and drag them to the field row of column 1, column 2 and so on.

For example drag fields EmpCode, Designation from Personnel table and field Designation from Designation table. After Dragging/Selecting all required fields from the field list windows save the query and close it. Then select your query name and click the open button. Now you can extract the corresponding fields with all data from your table.

EmpCodeEmpCodeEmpCodeEmpCode DesigDesigDesigDesig DeptDeptDeptDept E01 AD06 ADMN E02 AD08 ACF E03 AC02 EDT E04 AD12 HMAF E05 AD10 TSM E06 AD08 ACF E07 AC02 EDT E08 AD11 HMAF E09 AD06 ACF E10 AC02 EDT E11 AD13 ES E12 AD12 HMAF E13 AD14 ADMN E14 AD14 EDT E15 AD14 ACF E16 AD14 AHV E17 AD13 ADMN E18 AD06 ELC E19 AD15 ADMN E20 AD10 ACF E21 AD09 ACF E22 AD09 ADMN E23 AD01 EDT E24 AC03 EDT E25 AD04 SW E26 AD14 HMAF E27 AC03 EDT E28 AC03 EDT E29 AD05 ACF E30 AC07 EDT

EmployeEmployeEmployeEmployeeeee SalDateSalDateSalDateSalDate

E01 31/12/05

E02 31/12/05

E03 31/12/05

E04 31/12/05

E10 31/12/05

E11 31/12/05

E12 31/12/05

E13 31/12/05

E20 31/12/05

E21 31/12/05

E22 31/12/05

E23 31/12/05

E24 31/12/05

E30 31/12/05

E01 31/01/06

E03 31/01/06

E20 31/01/06

E01 28/02/06

E20 28/02/06

Page 24: Microsoft Word - MS Access Note

Now if you want to filter all employees belongs to a particular designation then build a query as in the above case. After dragging all required fields to the corresponding columns. Then select the criteria row of the Designation field from Designation table. Don’t select the Designation field of Personnel table because the designation field in the Personnel table contains the Designation code, even though it displays the designation. (We save the code). Now type the designation such as ClerkClerkClerkClerk in the concerned column of the criteria row. You can use wild card symbols such as LikeLikeLikeLike “A“A“A“A*”*”*”*” for all designation starting with A.

Field EmpCode Name Designation

Table Personnel Personnel Designation

Sort

Show

Criteria Like “A*”

or “Vijayan D”

In the above figure you can see a part of the query builder which filters all records from Personnel table with designation starting with A and or employees having Name Vijayan D.

That simply means if you want an OR combination you must type the criteria in each column in different rows. If you want an AND combination you type it in the same row of criteria.

Parameter QueryParameter QueryParameter QueryParameter Query

In the above if you want to change the conditions/criteria then you must re design the query. This is not practical. So you can use parameter query. That means in the Criteria row you can type parameters in square brackets ([ ]). For example if you want to filter all employees having basic in between 8000 and 15000 then you can design a query by selecting required fields including Basic. Then in the criteria row of basic column type Between 8000 and 15000Between 8000 and 15000Between 8000 and 15000Between 8000 and 15000. It will filter all records satisfying the condition. Instead of giving the lower limit value (8000) and upper limit value (15000) you can use parameters as Between [Enter Lower limit Value?] And [Enter Upper limit Value?].Between [Enter Lower limit Value?] And [Enter Upper limit Value?].Between [Enter Lower limit Value?] And [Enter Upper limit Value?].Between [Enter Lower limit Value?] And [Enter Upper limit Value?]. While you are opening/Running the Query you will be asked by the query for the Lower and Upper lint of values. Thus you can create a general-purpose query. You can use Mathematical operators like >, <, >=, <=, <> (Not equal to) SQL statements etc. in the query. The following query extracts the details of employee who owes the maximum basic pay. Note the SQL statement in the criteria is in parenthesis.

Field EmpCode Name Designation Basic

Table Personnel Personnel Designation Personnel

Sort

Show

Criteria (Select max (basic)

from Personnel)

or

You can use >=8000 and <=15000>=8000 and <=15000>=8000 and <=15000>=8000 and <=15000 instead of Between 8000 and 15000Between 8000 and 15000Between 8000 and 15000Between 8000 and 15000.

Use # symbol before and after the date. Eg #01/01/2002#

Between #01/01/2001# And #31/12/2001#

Page 25: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Between [Enter First Date] And [Enter Second Date] ⇒ Avoid # Symbol here.

Update QueryUpdate QueryUpdate QueryUpdate Query

Update query is used to modify data in a table. So its effect is in the table. You can’t view any biases if the corresponding messages are switched off. Suppose if you want to calculate DA, HRA etc in the salary table create a query and add Personnel and Salary tables in it. The drag DA, HRA, Gross, PF and NET fields to the builder. (Choose only derived fields in the salary table).

Then click on the Query Query Query Query menumenumenumenu in the menu bar and select Update queryUpdate queryUpdate queryUpdate query from the pull down list. Then select the Update to row of the DA column. Assume DA is 64% for all employees. Then Rt. Click on the cell and choose BuildBuildBuildBuild option from the popup menu. From the Expression Builder window Db. Click on the Table object. Select the required table(s) respectively for building the expression.

First you select the Personnel table and Db. Click on the BasicBasicBasicBasic field appeared on the right listbox. Now it is transferred to the builder region. Type * mark and 0.64 for DA Field. Ie now you got an expression like this [[[[PePePePersonnelrsonnelrsonnelrsonnel]![Basic] * 0.]![Basic] * 0.]![Basic] * 0.]![Basic] * 0.64646464 in the builder. Click OK button.

Now select HRA update to cell and build the Expression as follows

IIf([IIf([IIf([IIf([PersonnelPersonnelPersonnelPersonnel]![Basic]>20000,1000,IIf([]![Basic]>20000,1000,IIf([]![Basic]>20000,1000,IIf([]![Basic]>20000,1000,IIf([PersonnelPersonnelPersonnelPersonnel]![Basic]>10000,750,500))]![Basic]>10000,750,500))]![Basic]>10000,750,500))]![Basic]>10000,750,500)) for basic greater than 20000 hra =1000 for basic between 10001 to 20000 hra =750 and 500 for others.

Gross is [[[[PersonnelPersonnelPersonnelPersonnel]![Basic] + [Salary]![DA] + [Salary]![HRA]]![Basic] + [Salary]![DA] + [Salary]![HRA]]![Basic] + [Salary]![DA] + [Salary]![HRA]]![Basic] + [Salary]![DA] + [Salary]![HRA]. Here select fields carefully from two tables. PF is [[[[PersonnelPersonnelPersonnelPersonnel]![Basic] * 0.0833]![Basic] * 0.0833]![Basic] * 0.0833]![Basic] * 0.0833 and Net is [Salary]![Gross] [Salary]![Gross] [Salary]![Gross] [Salary]![Gross] ---- [Salary]![PF][Salary]![PF][Salary]![PF][Salary]![PF].

Save the query and close the builder window. Then open the query, read the warnings and click Yes if necessary. Then open the table sheet tab and open the Salary table. if all the fields are not calculated once again open the Query and again note the table. Continue until all the fields in your table are calculated.

MakeMakeMakeMake----Table QueryTable QueryTable QueryTable Query

Create a new query and add Personnel details table. Select required fields from

the field list window. Here you select all fields. Then take the Query ⇒ Make-Table Query from the menu bar. Now a dialog box for table name is shown. Give a new table name (say PersonnelPersonnelPersonnelPersonnel tab2 tab2 tab2 tab2) and select current database radio button for creating the table with in the current database (Payroll). (You can choose Another database radio button and type the full database name including path in the text box provided). Click OK button save and close the query. Then select the query and open it. After that open the table sheet and check whether the new table is there. Open the table and delete all records.

Then retype some other records in the newly created table for studying how to append two tables by using Append Query.

Append queryAppend queryAppend queryAppend query

Create a new query and add the newly created table Personnel tab2 and choose

all the fields in it. Then click Query ⇒ Append Query from menu bar. Then select Personnel table from the combo box for appending to that table. Then select Current database button and click ok. Check the Append to field names and the Field row field names are compatible. If it is ok save and close the query. Then run it. Open the Personnel table for seeing additional records.

You can use criteria for all the above queries.

Delete QueryDelete QueryDelete QueryDelete Query

Before creating the query select the table sheet and take the design view of Personnel table. Add one more field. Field Name: RRRReeeettttiiiirrrreeeedddd, Data Type YYYYeeeessss////NNNNoooo. Then save

Page 26: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

and take the datasheet view put check mark in some records in the retired fields for indicating that they are retired from service.

Now come back to query. Add Personnel table and select Retired field to the field.

Then click Query⇒ Delete Query. Then give criteria for that field is Yes. Now save and close the query. Open it. You are going to delete all records of retired people from Personnel table.

Crosstab QueryCrosstab QueryCrosstab QueryCrosstab Query

Suppose you want the caste wise designation wise list of employees for finding the number of employees in each caste in each designation. For that you can create a Crosstab Query. For that select the query sheet and click new button. From the New Query dialogbox select Crosstab Query WizardCrosstab Query WizardCrosstab Query WizardCrosstab Query Wizard option and click ok. From the Crosstab Query Wizard window select Personnel table and click Next >Next >Next >Next > button. Now select the Designation field from the Available fields listbox after that click >>>> symbol for selecting that field into the Selected fields listbox. (You can add maximum 3 fields in this way. Use <<<< to deselect the selected field). Againn click Next >Next >Next >Next > and choose Caste field. Then note the preview shown. If you are satisfied click Next >Next >Next >Next > again and select a suitable function from the Functions listbox. Here choose count. Select a field suitable for the action of the selected function. Here select EmpCode and click Next >Next >Next >Next > again. Give a Query name (say Desig Caste list qryDesig Caste list qryDesig Caste list qryDesig Caste list qry ). And click Finish. Then Close the query and take the design view then observe the design of the query.

JoinJoinJoinJoin PropePropePropeProperties & Duplicates Queryrties & Duplicates Queryrties & Duplicates Queryrties & Duplicates Query

While you are entering data in salary table take care to omit two or three records. That means don’t enter all the employee code available in the combo box. Then try to solve this question. Find all employees who didn’t receive their salary?

For that you add Personnel, Designation, Salary tables. Select fields Employee from Salary table, Name from Personnel table, Designation from Designation Table, Basic from Personnel table, Date, DA, HRA, Gross, PF, NET from Salary table. Save and run the query. But this is not your answer.

Now you want to filter Employees records, which are available in Personnel table and not available in Salary table. In ordinary case you cannot filter these records. For that you must edit the relation ships. For this you Rt. Click on the relation line in the Query Builder window pan. If you are properly clicked you get a popup menu having JoinJoinJoinJoin PropertiesPropertiesPropertiesProperties and DeleteDeleteDeleteDelete options. (If you get another one press Esc key/click out side the menu and again Rt. Click on the line till you get the menu). From the two menu items select Join Properties option.

From the Join Properties window select the 2nd radio button - ie. “Include all records from ‘Personnel’ and only those records from ‘Salary’ where the joined fields are equal” - and click OK button. Save the query again and open/Run it. Now you got the details of all employees in both tables. Here the Employee code of certain employees contains null value. That means they didn’t accept their salary yet. Now filter these records. For that use the following criteria.

Field Employee

Name Designation Basic DA NET

Table Salary Personnel Designation Personnel Salary Salary

Criteria Is NullIs NullIs NullIs Null

or

Again save and Run the query.

Page 27: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Suppose you want to select Records, which come in the table more than once. Eg.- List all Suppliers who supply more than one parts. Here add one more employee code such that the employee receives salary more than once (Salary of two months). For finding this we must include at least three tables as above (Personnel, Designation, Salary).

Select Query sheet and click New button. Take design view drag all fields as shown in the above table. Here there are no criteria. Save the Query and give a name Duplicates QueryDuplicates QueryDuplicates QueryDuplicates Query. Close the query.

Now again click New button in query sheet. Now select Find Duplicates Query Find Duplicates Query Find Duplicates Query Find Duplicates Query Wizard Wizard Wizard Wizard and Ok button. Then from the Find Duplicates Query Wizard window select the Queries radio button and select Duplicates Query from the list of Queries shown in the list box. Click NextNextNextNext > > > > button. Select the Employee field from the Available fields listbox (Since it is the duplicating field) and click >>>> to add it in the Duplicate-value fields list. Then click Next > Next > Next > Next > again. Now you want to select all other available fields. For that click on the >>>>>>>> symbol. Click Next > again. Give a suitable name and Finish it. Take the design view and note the SQL.

Similarly you can use unmatched Query wizard. Query Totals Query Totals Query Totals Query Totals ((((grouped by clausegrouped by clausegrouped by clausegrouped by clause)))) For extracting the department wise designation wise count of employees (count of employees in each designation in each department) design the following query.

Query⇒New⇒Design view⇒Ok. Add required table(s), Personnel, and close the show table dialogbox. Drag required fields (having grouping facility) Department, Designation and EmpCode. (Count of EmpCodeEmpCodeEmpCodeEmpCode of each desinationdesinationdesinationdesination in each DepartmentDepartmentDepartmentDepartment.) Rt Click on Query builder

pane and choose Totals ( ∑ at toolbar). Seelct function, Count, Sum, Avg etc as shown in the figure. Save and Execute query.

Similarly you can extract sum of basic pays of each designation by designining the query as shown in the figure 10.

Page 28: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Derived fieldsDerived fieldsDerived fieldsDerived fields For calculating Age, Pension year and month, years of service etc we can create derived fields. Select required fields in the design view of the query. DateBirth, DateJoin fields should be selected. Rt Click on an empty field cell and select build. Then type a label then a colon and type the formula or function properly. Eg: - Age: Round((Date()-[DateBirth])/365,0) and click ok. or EmpAge:DateDiff(“YYYY”,[DateBirth],Date()) PensionYear:::: IIF(Day([DATEBIRTH])=1 And Month([DATEBIRTH])=1, "12/" & IIF(Day([DATEBIRTH])=1 And Month([DATEBIRTH])=1, "12/" & IIF(Day([DATEBIRTH])=1 And Month([DATEBIRTH])=1, "12/" & IIF(Day([DATEBIRTH])=1 And Month([DATEBIRTH])=1, "12/" & Year([DATEBIRTH])+54, IIF(Day([DATEBIRTH])=1,Month([DATEBIRTH])Year([DATEBIRTH])+54, IIF(Day([DATEBIRTH])=1,Month([DATEBIRTH])Year([DATEBIRTH])+54, IIF(Day([DATEBIRTH])=1,Month([DATEBIRTH])Year([DATEBIRTH])+54, IIF(Day([DATEBIRTH])=1,Month([DATEBIRTH])----1 & "/" & 1 & "/" & 1 & "/" & 1 & "/" & Year([DATEBIRTH])+55, Month([DATEBIRTH]) & "/" & Year([DATEBIRTH])+55))Year([DATEBIRTH])+55, Month([DATEBIRTH]) & "/" & Year([DATEBIRTH])+55))Year([DATEBIRTH])+55, Month([DATEBIRTH]) & "/" & Year([DATEBIRTH])+55))Year([DATEBIRTH])+55, Month([DATEBIRTH]) & "/" & Year([DATEBIRTH])+55))

SERVICE:DateDiff(“yyyy”,[DateJoin],Date())

SQL Statements.SQL Statements.SQL Statements.SQL Statements.

We can design query by writing SQL statements. For extracting EmpCode, EmpName, BasicPay from personnel table we can write the following SQL statement.

Query⇒New⇒Design View⇒OK Close show table dialogbox with out adding table

View⇒SQL View Type the following

SQL statements.

SELECT EmpCodeSELECT EmpCodeSELECT EmpCodeSELECT EmpCode, EmpName,, EmpName,, EmpName,, EmpName, BasicPay FROM Personnel;BasicPay FROM Personnel;BasicPay FROM Personnel;BasicPay FROM Personnel;

OrOrOrOr

SELECT Personnel.Personnel.Personnel.Personnel.EmpCode, Personnel.Personnel.Personnel.Personnel.EmpName, Personnel.Personnel.Personnel.Personnel.BasicPay FROM PersonnelPersonnelPersonnelPersonnel;

For extracting all fields from Personnel table we can use * mark in the select clause.

SELECT* * * * FROM Personnel;;;;

You can use function in select clause. SelectSelectSelectSelect MaxMaxMaxMax (BasicPay) from Personnel; SeSeSeSellllectectectect MinMinMinMin (BasicPay) from Personnel; SSSSeeeelllleeeecccctttt * from Personnel wwwwhhhheeeerrrreeee BBBBaaaassssiiiiccccPPPPaaaayyyy>>>>====8888000000000000;

Page 29: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

SelectSelectSelectSelect * from Personnel where BasicPay=(Select MaxMaxMaxMax (BasicPay) from Personnel); SELECTSELECTSELECTSELECT P.P.P.P.EmpCode, P.P.P.P.EmpName as EmployeeNameEmployeeNameEmployeeNameEmployeeName, P.P.P.P.BasicPay FROM Personnel AS PPPP;

Delete Delete Delete Delete QueriesQueriesQueriesQueries SQL statement for deleting records from the salary table whose basicpay from Personnel table less than 1000. DELETE Salary.* FROM Personnel INNER JOIN Salary ON Personnel.EmpCode = Salary.Employee WHERE (((Personnel.BasicPay)<1000)); Delete records from personnel table whose NET from Salary table <1000. Delete Personnel.* from personnel where empcode in (Select employee Delete Personnel.* from personnel where empcode in (Select employee Delete Personnel.* from personnel where empcode in (Select employee Delete Personnel.* from personnel where empcode in (Select employee from salary where from salary where from salary where from salary where net<1000);net<1000);net<1000);net<1000); UnionUnionUnionUnion You can join results from more than one query having same fields in to a single query by union statement. For example you can display records of maximum basic pay and minimum basic pay in a single query. The SQL statements can be constructed as follows.

Query⇒New⇒Design View⇒OK Close show table dialogbox with out adding table

View⇒SQL View Type the following SQL statements. SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, Personnel.Designation, Personnel.Personnel.Designation, Personnel.Personnel.Designation, Personnel.Personnel.Designation, Personnel.DepartmentDepartmentDepartmentDepartment FROM PersonnelFROM PersonnelFROM PersonnelFROM Personnel WHERE WHERE WHERE WHERE (((Personnel.BasicPay)=(Select Max(basicPay) from personnel)))(((Personnel.BasicPay)=(Select Max(basicPay) from personnel)))(((Personnel.BasicPay)=(Select Max(basicPay) from personnel)))(((Personnel.BasicPay)=(Select Max(basicPay) from personnel))) UNION UNION UNION UNION SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, SELECT Personnel.EmpCode, Personnel.EmpName, Personnel.BasicPay, Personnel.Designation, Personnel.DepartmentPersonnel.Designation, Personnel.DepartmentPersonnel.Designation, Personnel.DepartmentPersonnel.Designation, Personnel.Department FROM PersonnelFROM PersonnelFROM PersonnelFROM Personnel WHERE WHERE WHERE WHERE (((Personnel.BasicPay)=(((Personnel.BasicPay)=(((Personnel.BasicPay)=(((Personnel.BasicPay)=(Select Min(basicPay) from personnel)));(Select Min(basicPay) from personnel)));(Select Min(basicPay) from personnel)));(Select Min(basicPay) from personnel))); FunctionsFunctionsFunctionsFunctions

DateDiff(“M”,[DateBirth],Date()) ⇒Difference of two dates in months.

DateDiff(“d”,[DateBirth],Date()) ⇒Difference of two dates in number of days.

DateAdd(“yyyy”,55,[DateBirth]) ⇒Add 55 years to date of birth

DateAdd(“M”,8,[DateBirth]) ⇒Add 8 months to date of birth

DATEDIFF(“yyyy”,[DateBirth],CVDATECVDATECVDATECVDATE(“01/01/2006”)) ⇒ Age as on 1/1/2006.

CVDate ⇒ Convert a date string to date value.

DAY(CVDATE(“15/08/1947”) ⇒ 15

MONTH(CVDATE(“15/08/1947”) ⇒ 08 for August

YEAR(CVDATE(“15/08/1947”) ⇒1947 IIF(Condition,TrueValue,FalseValue)

Eg: - IIF([BasicPay]>=8000,400,250) ⇒formula for HRA, etc Try to solve the following Questions. 1. Find all employee details whose basic greater than 10000? 2. List all employee details whose basic is in between 8000 and 15000 (use Between)? 3. Redesign the above query by using >=, <= operators? 4. List details of all peons? 5. Display details of Assistants having basic greater than 6800? 6. Extract details of all Peons along with Drivers? 7. Extract details of the employee having maximum basic? 8. Display details of employee with minimum Basic? 9. Display all employees who are not yet received their salary?

Page 30: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

10. Display all employees whose service is greater than 20 years? 11. Display all employees who have only two more years of service? 12. Display the Age of all employees along with their Date of Birth? 13. Display the Years of service, moth and year of pension of employees having age

greater than or equal to 45? 14. Display details of Assistants & Confidential Assistants whose service greater than 5

years? 15. Select Employees having either service greater than 10 years or designation is

Director or basic is greater than 10000? 16. Create Query by using criteria in the name field and note the differences. LikeLikeLikeLike

“Rm*”, Like “*ni”, Like “????”, Like “?amu”, Like “D??u”? 17. Display Employee code, Name, Designation, Department and basic of all

employees? 18. Filter all employees whose record comes more than once in salary table? 19. Find how many designations are vacant in the Personnel tables? 20. Find the Departments in which no employees are associated? 21. Create a union query to display the maximum basic pay and minimum basic pay

with in a single query?

FormsFormsFormsForms

Forms are used to enter data into the tables. It is a front-end tool. The end users are interacting with the database by the help of forms only. You can create forms from table, select queries and parameter queries. Here we want to create 4 forms. One for Department table, one for Designation, another one for Personnel and one for Salary.

For creating forms select Forms sheet tab and click New button. First select the Form Wizard option. Then select a table/Query name from the combo box: - Choose the table or query where the object’s data comes from: - shown below the dialog box. Then click ok. If you are using wizards option you have a facility to select table/query names from the Table/Queries combo box shown above the available fields - list box.

For example if you want to create a form for Personnel table follow the following steps.

1. Select Forms Sheet tab, click New button, select Form wizard option and click OK – or - db. click on the Create form by using wizard option in the window.

2. From the Tables/Queries combo box, select the Personnel table or the table you required for creating the form.

3. Now in the Available Fields listbox contains all the fields in the selected table.

4. Select the required field from the list box and click on the >>>> button to transfer the selected field to Selected Fields listbox.

Hint: - Don’t select Derived fields such as DA, PF etc for data entry forms.

You can use >> >> >> >> button for transferring all the available fields to the selected fields listbox. Also use <<<< to remove a single field from the selected fields list and << << << << for removing all fields simultaneously.

5. Click NNNNext >ext >ext >ext > button.

6. Select a layout from the available options. Say Columnar by clicking on the radio button. Hint: - Columnar is suitable for data entry forms. Tabular/Datasheet is suitable for view forms for viewing all records at a time.

7. Click NNNNext >ext >ext >ext > button.

8. Select a style from the available options. Say Standard. Hint: - Forms must legible rather than beauty.

9. Click NNNNext >ext >ext >ext > button.

Page 31: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

10. Give a name for your Form say Personnel Data Entry Form. And click Finish button.

Suppose you want to create a form by using more than on table either you create a select query by using them and create a form by using that query - or - by using form wizard option after completing step 4 again select another table by repeating from steps 2 to 4.

Designing Forms.Designing Forms.Designing Forms.Designing Forms.

You can design forms by following the steps given below.

1. Select Forms Sheet tab, click New button, select Design View option. Then select the table/Query name in the combo box “Choose the table or query where the object’s data comes from:” and click OK – or - db. click on the Create form in Design view option in the window.

2. If you are not selected a table/query name as data source the take the properties of form. For that rt. click on the left top corner of the form’s ruler line and select properties option. Note the title bar of the newly appeared window must be Form.

3. Select the DataDataDataData sheet of the properties tab control and select the require table/query name from the Record Source combo box. Just note all other options of the sheet tab.

4. Close the properties dialog box. Then note a field list is appeared in a small window. If it is absent click viewviewviewview menu and select Field List option.

5. Adjust the length and breadth of the designer sheet. For that drag from the border of the sheet.

6. Drag the required fields from the field list window to the design window.

7. Now you got a label (transparent one) and a text box (white coloured sunken one) containing the field name.

8. If you want to move the controls, select suitable control by clicking on it. Then bring the mouse pointer above border of the control. Now you got a stretched palm symbol. Click and drag the control to a suitable position. Note that the text box as well as the Label moves together.

9. If you want to move any one of the control to move a certain position bring the mouse pointer to the small black square on the right top corner of the required control. Now the mouse pointer becomes a pointing palm. Then click and drag the control.

10. Then design your form by using your commonsense, imagination power and beauty sense.

11. Save and give a name. Close the design view. Open the form and add records.

Adding additional controls in your formsAdding additional controls in your formsAdding additional controls in your formsAdding additional controls in your forms

Add Command buttons.Add Command buttons.Add Command buttons.Add Command buttons.

1. From the Toolbox select the command button icon and draw it in your form gently.

2. If the builder wizard (second icon in toolbox) is on you get a “Command Button Wizard”. From the categories list select any one category. Say Form operations.

3. From the actions list select an action. Say Open form. Then click Next > button.

4. Select the required choice. Here select a form name. (Say “Designation Data Entry From”). Then click Next > again

5. Here select a radio button say Open form and show all records. Click next>.

a. If you are selecting “Open form and specific data to display” and click Next >

b. Then select a field from first form and select a link field from the second one.

Page 32: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

c. Click < > to create a link. Then click Next> and follow the steps.

6. Select TextTextTextText radio button and type - Enter Designation – and click Next again.

7. Give a name for your command button control. Say OpnFrmCmdBtn.

8. Then click Finish, save and view the form.

9. Click on the button and note the actions.

Adding text box to show total values.Adding text box to show total values.Adding text box to show total values.Adding text box to show total values.

If you want to show the DA, Total in text boxes in Personnel data entry form in read only/locked mode follow the instructions.

1. Select the Personnel data entry form in design view.

2. Adjust the length and breadth of the forms so that it can accommodate two or three textboxes.

3. Then select the textbox tool from the toolbox and draw a textbox at the suitable position in the form.

4. Now click on the label having caption Text no: and type a caption say DA:

5. Then click on the unbound textbox and simply type =[basic]*0.32=[basic]*0.32=[basic]*0.32=[basic]*0.32

6. Similarly you can add textboxes to your form and display results in it.

Note: - These results are derived from the basic pay. So user need not enter the values. So for avoiding data entry mistakes lock/disable these fields.

7. For locking these fields select all fields by using mouse/shift key and rt. click on it select the properties option and took Data sheet tab. Chose Enabled: No, No, No, No, Locked: Yes.Yes.Yes.Yes.

8. Now save the form and open it. See the changes.

Adding events in Forms/controlsAdding events in Forms/controlsAdding events in Forms/controlsAdding events in Forms/controls

You can perform a particular set of actions when an event occurs. Examples for events are form load event, form unload event, mouse click event, keydown event, mouse move event etc.

Suppose if you want to calculate DA, HRA, Gross, PF, NET fields in the Salary form whenever you enter/modify the Basic pay. For that first create a query including Personnel, Designation and Salary tables. Add fields Employee from Salary table, Name from Personnel table, Designation from Designation table, basic from Personnel table, Date, DA, HRA, Gross, PF and NET from Salary table. Save the query, give name Salary from creation query.

Now create a form in design view by taking Salary from creation query as its data source. And arrange the fields as shown in figure in next page. In that form select textboxes DA, HRA, Gross, PF and NET, Rt. click on any one of them. Select properties option, choose Data Sheet and change Enabled to No.

Now save the form and give name Salary Data Entry Form. Now you want to calculate DA, HRA etc and wants save the values to the Salary table. That means whenever the user entered/change the basic all those fields must be calculated. For that follow the instructions given.

Page 33: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

1. Rt click on the basic text box and select the properties from the popup menu.

2. Select the Event sheet tab.

3. Select the after update event and click the builder button …

4. Select Macro Builder from the Choose builder dialog box. Give a name for your macro – say Salary Calculation Macro.

5. Select Setvalue in the first row of the Action column.

6. Press tab key in the keyboard. Now press F6 function key or click on the Action Arguments pan of the window

7. Select Item row and click on the builder button.

8. Then db click on the Forms option, db click on the Loaded forms and select the form name. Now the <Form><field list> is appeared on the middle list box.

9. Now db click on the field name, which you want to set in the item. Here we want to set DA.

Hint: - You can simply type the field name in square bracket in the Item row as shown

Item [DA]

10. Then build the Expression as in the above case.

Item Forms![Salary data entry form]![Basic] * 0.64

or simply type

Item [Basic] * 0.32

11. Then select the second row of the Action column and again select setvalue and press tab key.

12. Again select the item cell and buildbuildbuildbuild ⇒Forms![Salary data entry form]![HRA] in the cell for setting HRA filed.

13. Then build the Expression as ⇒ iif(Forms![Salary data entry form]![Basic] >= 15000,1000,iif( Forms![Salary data entry form]![Basic] >=1000,750,500))

14. Similarly set actions, item and expressions for Gross, PF and Net filed.

15. Save and close the macro.

16. Close the properties dialog box, save and open the form.

17. Type some records and see the changes after you typing the basic pay.

Page 34: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

18. After entering two or three records close the form and open the Salary table for seeing the changes.

Q.Q.Q.Q. Create a view form for seeing EmpCode, Name, Department, Designation, Dateofjoin, Dateofbirth, Age, Service, Sex, Caste and Basic.

Here you must note that you are going to create a view form. That is now data entry/Editing is needed. It is better to see more than one record at a time for certain comparisons. So create a tabular form by using a query, which is created from Personnel, Designation and Department tables OR you must design the form by using Form Wizard and select fields from the required tables. Give a name Employee details view form.

Then take the design view of your form and select all bounded/unbounded controls except labels and take the properties of them. Select the Data sheet tab and change the Locked property to Yes. Now you cannot type/change the values in the text controls.

Q.Q.Q.Q. Create an unbounded form and add some command buttons for opening another forms and running queries etc.

The form must be as shown bellow.

The first two buttons are used for opening other forms, which we have discussed earlier.

For opening a query (update query) you must select miscellaneous option from the command button wizard select Run Query from the Actions listbox. Click Next > and

Private Sub CmdSalCalQryBtn_Click()

On Error GoTo

Err_CmdSalCalQryBtn_Click

Dim stDocName As String

stDocName = "Sal Cal Qry"

DoCmd.OpenQuery stDocName,

acNormal, acEdit

Exit_CmdSalCalQryBtn_Click:

Exit Sub

Err_CmdSalCalQryBtn_Click:

MsgBox Err.Description

Resume Exit_CmdSalCalQryBtn_Click

End Sub

Page 35: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

choose text or picture radio button whichever you like. Click next > and give a button name and click Finish.

After saving the form select the properties of a command button (Design View) and then select the Event sheet tab and click on the on click [event procedure] builder button. Now you can see the VBA coding there. A sample coding for run a query is shown as below.

If you want to add option button group in the Sex field first change the data type of your Sex filed in the Personnel table. Field name: - Sex, Data type: - Number, Field Size: - Byte. Then change Male as 1 and Female as 2. Change the display control in the lookup sheet tab as text box.

Come back to forms sheet and take the design view of Employee form. Remove sex combo box from it and select the Option Group frame from the toolbox. Type Male as first value and Female in the Second Row. Then follow the instructions given by the Wizard.

Suppose you want to store the passport size photograph and remarks of employees first take the table sheet tab and take design view of the “Personnel” table. Add one more field “Photo”; Data type “OLE Object”. Then add one more field “Remarks”, Type “Hyperlink”. Save and close the table design view.

Open the forms sheet tab and create a new form (Columnar) from Personnel table. After finishing the form give a name “Employee New Form”. Then take the design view of you form.

1. Select the Photo frame and adjust the size of that frame to that of a passport size. (For that bring the mouse pointer to the bottom right corner of the frame. When it becomes a double-ended arrow drag for a suitable size.)

2. Arrange all the fields in a beautiful manner. 3. Save and close the form’s design view. 4. Select the Form view /Open the form. 5. Rt. click on the Photo Frame and choose Insert object. 6. If you have a scanned photo of the employee select the create from file option and

click the browse button and select the filename and click ok 7. Here you have no such photos. For studying we select create new radio button and

choose Microsoft Clip Gallery and click ok. a) Select a suitable picture from the clipart and insert it.

8. Now you can see only a portion of the picture in the frame. Fro adjusting the picture with in the frame’s limit take the design view of the form

9. Then take the properties of the frame and select the Format sheet tab. 10. Change the Size Mode to Stretch option. 11. Save and close the design view. 12. Open the form and check the new view.

13. For adding a hyperlink rt. click on the remarks field and choose Hyperlink⇒Edit Hyperlink… option

14. Add text in the “Text to display” text box. 15. If you want to display a screen tip on the field click on the screen tip button. 16. Select a file name by clicking on the File button and click ok

Sub FormSub FormSub FormSub Form

For seeing all the employees in a department along with department details and employee details we can use these type of forms.

a) Consider the logic for this. One department contains more than one employee. So take a Columnar view for Department form and a Tabular view for Employee details.

b) First create a columnar form from Department table. Say “Department master form” c) Then create a tabular form from Employee details. Say “Employee Sub Form” d) Now take the design view of the columnar form “Department master form”. e) Maximize the window and adjust the width and height of the form (to a full screen).

Page 36: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

f) Then select the Sub form/ Sub report tool from the tool box and choose the Use an existing form and select the tabular form “Employee Sub Form” and click Next>.

g) Select a suitable link field from the options given. Here the deptcode filed from Department table and Department field form Employee field is the linking fields. So here we select “Show Employee for each record in Department using Deptcode.

h) You can use “Define my own” radio button and select the link fields from the combo boxes (If there is more than one link fields you can use this option)

i) Click Next> and click finish button. j) Now take the form view of the master form k) Now you can see two data controls. Outer one is used to navigate through Master

form (Department) and inner one is for navigating through Employee details (Tabular form).

For better performance take the Design view of tabular form and arrange the fields suitably in a single row.

QuestionQuestionQuestionQuestion: -

1. List all employees based on their designation? 2. Display a caste wise list of the employees Discuss the steps for displaying the sex-wise list of employees.

Here sex is a field in the Personnel table. So create two forms one Columnar and one Tabular from the same table Personnel.

Columnar form contains the Sex filed only. (Create form by using Form wizard option). Then select all other required fields from the same table and create a tabular form.

Design the columnar form and drag the Sub form in it. Then choose the “Define my own” radio button and select the link field Sex from the two combo boxes Form/Report fields and Sub form/Sub report fields. Then finish, save and took the form view.

Pass form fields as query parameter.Pass form fields as query parameter.Pass form fields as query parameter.Pass form fields as query parameter.

Suppose if you want to filter employee details whose name is typed in a text box in a form. First select forms sheet and click new and select design view. (Do not select table name). Draw a text box and take the properties. Select otherotherotherother sheet tab and give a name for your text box, say Fnametxt. Close & Save the form. Now select the query tab and design a query from the Personnel table. Build the criteria for name is Like Like Like Like [Forms]![<[Forms]![<[Forms]![<[Forms]![<FormnameFormnameFormnameFormname>]![>]![>]![>]![Fnametxt].].].].

Again come back to forms sheet and take the design view of the form. Add a command button and select the Miscellaneous Category and select Action as Run Query. Select your Query name from the list; give name for your button and save the form. Then open the form and type a name in the text box. See the action. Search Forms Used to pass parameters of querySearch Forms Used to pass parameters of querySearch Forms Used to pass parameters of querySearch Forms Used to pass parameters of query

1. Forms⇔New⇔Design view⇔Ok 2. Add required text boxes from tool box (ab|ab|ab|ab|) 3. Save Form 'FrmSearchXXXX'

4. Rt. Click on textbox/Display Control ⇔Properties

5. Other⇔Name⇔Type Control Name. 'TxtEmpName' 6. Close Properties window and save 7. Close Forcm

8. Query⇔New⇔Design View⇔Ok 9. Add required table/tables. 'PersonnelDetails' 10. Drag required fileds 11. Rt. Click on criteria cell of required filed and choose build 12. Type require options (Like, Between etc) 13. Double click on 'Forms' object, double click on 'All Forms' object and choose required

form name 14. Select require control name and paste

Page 37: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

15. Close builder and save query. 'QryBasicFilter' etc. 16. Close query 17. Forms⇔New⇔Auto form Tabular⇔select query name 'QryBasicFilter'⇔Ok 18. Click Ok to bypass the parameter and Save Form. 'FrmSearchResult' etc 19. Close form and select 'FrmSearchXXXX' ⇔Design 20. Add a button from tool box 21. Select Form operations⇔Open Form⇔Next

22. Choose form name from the list 'FrmSearchResult'⇔Next 23. Choose Text option and Type 'Search' etc 24. Next ⇔ and type a button Name 'BtnSearch' 25. Finish, save and run the form Creating forms foCreating forms foCreating forms foCreating forms for salary r salary r salary r salary calculationcalculationcalculationcalculation

1. Query⇔New⇔Design View⇔Ok 2. Add PersonnelDetail and Salary Tables 3. Select 'Employee' Field (Foreign Key) from 'Salary', 'EmpName', 'BasicPay' from

'PersonnelDetails', 'SalDate', 'DA', 'HRA', 'Gross', 'PF' and 'NET' from 'Salary' Table and 'Photo' From 'PersonnelDetails' Table.

4. Save Query as 'SlaryQuery' 5. Close Query 6. Forms⇔New⇔Design View⇔OK 7. Right Click at the top left corner of the form and choose 'Properties' of the form. 8. Data⇔Record Source⇔'SalaryQuery'

9. View⇔Field List 10. Select all fields from field list window. Click on first field name (Employee), hold down

shift key and click on last field name. 11. Drag field names to the centre of the form. 12. Arrange Fields Properly. 13. Save Form and Give a Name

'SalaryCalculationFrm' 14. Rt Click on SalDate Field 15. Properties 16. Event 17. AfterUpdate (...) Clcik 18. Macro Builder 19. Give a Macro Name (SalCalMacro) 20. Action: - SetValue 21. Item: - [DA] 22. Expression: - [BasicPay]*0.64 23. Action: - SetValue 24. Item: - [HRA] 25. Expression: - IIF([BasicPay]>=6000,600,300) 26. Action: - SetValue 27. Item: - [GROSS] 28. Expression: - [BasicPay+[DA]+[HRA] 29. Action: - SetValue 30. Item: - [PF ] 31. Expression: - ([BasicPay]+[DA])*0.0833 32. Action: - SetValue 33. Item: - [NET] 34. Expression: - [GROSS]-[PF] 35. Action: - MSGBOX 36. Message: - 'Calculation Completed'. 37. Save and Close Macro 38. Save form

Employee

SalDate

DA

HRA

Gross

PF

Net

EmpName

BasicPay

Photo

Rt Click here

and choose

Properties.

Format

Size Mode: -

Page 38: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

39. Take Form View (View⇔Form View) 40. Try to Add a New Record by giving salary to an existing employee.

Designing Custom Search Forms using VBA CodingDesigning Custom Search Forms using VBA CodingDesigning Custom Search Forms using VBA CodingDesigning Custom Search Forms using VBA Coding

1. Forms⇔New⇔Design View⇔Ok 2. Add a text Box(ab|) from tool box, type Label 'Enter/Select Name to Search: 3. Rt Click Textbox and choose Properties. 4. Other tab⇔Name⇔"TxtEmpName" 5. Add a Combo box from tool box 6. Cancel the builder wizard window 7. Click on Label of Combo box and delete it. 8. Take Properties of Combo box 9. Other⇔Name⇔'CboEmpName'

10. Format⇔Visible⇔No

11. Data⇔Row Source Type⇔Table/Query

12. Row Source⇔(...)⇔Add 'PersonnelDetails' Table⇔Close Show Table dialog

13. Drag EmpName filed ⇔close Query builder window ⇔Yes

14. Add One More button as shown 15. Type Caption as '?' 16. Properties of Button⇔Other⇔Name⇔BtnNameSearchHep

17. Event⇔On Click⇔On Click⇔(...)

18. Code Builder⇔Ok 19. Type the following code inside the Private Sub BtnmpNameSearchHelp_Click() and

End Sub Private Sub BtnmpNameSearchHelp_Click()Private Sub BtnmpNameSearchHelp_Click()Private Sub BtnmpNameSearchHelp_Click()Private Sub BtnmpNameSearchHelp_Click()

CboEmpName.Visible = True CboEmpName.SetFocus TxtEmpName.Visible = False

End SubEnd SubEnd SubEnd Sub

20. Then from Object combo box at top left of code window select CboEmpName 21. Now you can see two line like Private Sub CboEmpName_BeforeUpdate(Cancel As Integer)Private Sub CboEmpName_BeforeUpdate(Cancel As Integer)Private Sub CboEmpName_BeforeUpdate(Cancel As Integer)Private Sub CboEmpName_BeforeUpdate(Cancel As Integer)

||||(Place and keep the cursor at this position)(Place and keep the cursor at this position)(Place and keep the cursor at this position)(Place and keep the cursor at this position) End SubEnd SubEnd SubEnd Sub

22. Now Select Change from the combo box at right of code window 23. Now 2 more lines like Private Sub CboEmpName_Change() and End Sub 24. The type the following code Private Sub CboEmpName_Change()Private Sub CboEmpName_Change()Private Sub CboEmpName_Change()Private Sub CboEmpName_Change()

Dim strEmpName As String strEmpName = CboEmpName....Text TxtEmpName.Visible = True TxtEmpName.SetFocus CboEmpName.Visible = False TxtEmpName = strEmpName

End SubEnd SubEnd SubEnd Sub 25. Close Visual Basic Code windows and save 26. Now select the two controls TxtEmpName and CboEmpName 27. Format⇔Size⇔Widest

28. Format⇔Size⇔Tallest

29. Take Properties of CboEmpName ⇔Format⇔Visible⇔No 30. Arrange the CboEmpName exactly above the TxtEmpName

Page 39: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

31. Save and Close Form 32. Query⇔New⇔Design view⇔Add Tables 33. Drag required fields and save the Query 'QryEmpNameSearchResult' 34. Rt. Click on criteria Cell of relevant filed and choose Build 35. Then Select Control name from Forms⇔All

Forms⇔FormName('FrmEmpNameSearch')⇔Select Filed(TxtEmpName)⇔Paste 36. After building Click ok 37. Save and close query

Create a tabular form from 'QryEmpNameSearchResult' 38. Save 'FrmEmpNameSearchResult' and close form 39. Redesign the 'FrmEmpNameSearch' and add one more button as below

40. Open 'FrmEmpNameSearchResult' form by using this button

Practical Exercise on MS Access Practical Exercise on MS Access Practical Exercise on MS Access Practical Exercise on MS Access

Open a New databaseNew databaseNew databaseNew database - InventoryInventoryInventoryInventoryControlControlControlControl Create a table to store item details of Inventory by using Design View Design View Design View Design View Define the Field Name, Data Type description and Filed Properties Name of FieldName of FieldName of FieldName of Field Data TypeData TypeData TypeData Type

DescriptionDescriptionDescriptionDescription

ItemCode Text Primary Key (Edit⇒Primary Key) ItemName Text Name in Capital Letter Unit Text Kg, Numb, Packet, Bottle OpeningStock Number Opening stock as entry date UnitPrice Number Value of one unit LastUpdate Date/time Last purchase date ReorderLevel Number Minimum quantity to purchase order Electronic Yes/No To know whether that is an electronic item PresentValue Number (Update the field through a Query – multiplying Opening

stock by Unit Price)

Field PropField PropField PropField Propertiesertiesertieserties

Name of Field Field Size

Format Default Value

Validation Rule

Required Index

ItemCode 5 Yes ItemName 25 > Yes (Duplicates

OK) Unit 6 Numb Yes UnitPrice Single LastUpdate Medium date Date() ReorderLevel Single 100 Between 100

and 5000

Electronic Yes/No No PresentValue Double

Page 40: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Save the table as ‘ItemTableItemTableItemTableItemTable’

Open the table and enter more than 20 rows of data a)a)a)a) Create a new Table ‘Suppliers’ with the following detailsCreate a new Table ‘Suppliers’ with the following detailsCreate a new Table ‘Suppliers’ with the following detailsCreate a new Table ‘Suppliers’ with the following details SupplierID Text 10 Primary Key SupplierName Text 30 ContactPerson Text 20 Address Text 50 Telephone Text 15 b)b)b)b) Create a new table ‘Office’ with the following details Create a new table ‘Office’ with the following details Create a new table ‘Office’ with the following details Create a new table ‘Office’ with the following details OfficeId Text 5 > Primary Key OfficeSection Text 25 SectionHead Text 25 c)c)c)c) Create a new table ‘Purchase’ with the following Create a new table ‘Purchase’ with the following Create a new table ‘Purchase’ with the following Create a new table ‘Purchase’ with the following filedfiledfiledfiled details details details details PurchaseId AutoNumber (Primary Key) ItemCode Text 5 > (FK from Itemtable) PurDate Date/Time Short Date PurQuantity Number Integer PurPrice Number Single Supplier Text 10 (FK from Suppliers table) d)d)d)d) Create a new table ‘Issue’ with the follCreate a new table ‘Issue’ with the follCreate a new table ‘Issue’ with the follCreate a new table ‘Issue’ with the following filed details owing filed details owing filed details owing filed details IssueId Autonumber (Primary Key) Issuedate Date/Time Itemcode Text 5 > (FK from Itemtable) Qunatity Number Office Text 5 (FK from Office table) Create relation ships, Add 20 items in itemtable, 8 offices in office table, 10 suppliers in suppliers table, 10 purchase records and 20 issue records in corresponding tables.

Create a new database ‘Airlines’ and create the following tables. Give proper filed with and properties. Value for DaysDaysDaysDays lookup (Daily;SUN;MON;TUE;WED;THU;FRI;SAT or type a value) CityType: (Metro; Urban; Semi Urban; Rural) use code to save and display full string

CompCode (PK)CompCode (PK)CompCode (PK)CompCode (PK)

CopmanyName Address

Company

FlightCode(PK)

FlightName

CompCode(FK)

Days (Lookup)

FlightDetails

CityCode(PK) CityName

CityType (Lookup)

CityDetails

FlightCode(FK)

TimeDeparture

TimeArrival

CityCode(FK)

FlightOperations

Page 41: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Create relationships, Forms and enter data in Company, CityDetails, FlightDetails and FlightOperations.

Create a new database ‘College” and create the following tables. Give proper filed with and properties. Create relationships, Forms and enter data in Department, Professor and WorkDetails. Create all forms for the above databases. MS Access Exercise MS Access Exercise MS Access Exercise MS Access Exercise Now we are going to add two more tables in the table sheet of Payroll database. � Create a new table with fields {Religioncode (Primary key), text, 1) and Religion, text, 15}. Save tha table and give name “Religion Table”

Create another table having fields Castecode(Primary key), text, 2), Caste text 20 and Religion, text, 1 – Lookup Wizard from table “Religion Table”. Save the table and give a name “Caste table” Give some Records as above

Now design the Personnel table and select the caste field.

1. Click the Insert⇒Rows menu. Type “Religion” as field name in the newly created row. Field type Text size 1111 (Lookup wizard from table “Religion table”)

2. Redesign the caste field (text, 2, Lookup wizard from “caste table”). 3. Save and open the Personnel table. Delete all the values of caste filedDelete all the values of caste filedDelete all the values of caste filedDelete all the values of caste filed. 4. Close and save the table. 5. Click the Tools⇒Relationships menu. 6. Rt click on the window and select Show tables window. 7. Add Religion table and Caste table. 8. Make proper relation ships as follows.

a. [Rligion table]![RRRReeeelllliiiiggggiiiioooonnnnccccooooddddeeee]��[Caste table]![Religion] b. [Caste table]![CCCCaaaasssstttteeeeccccooooddddeeee]��[Personnel]![Caste]

CasteCasteCasteCaste CodeCodeCodeCode

CasteCasteCasteCaste ReligionReligionReligionReligion

Br Bramin H

Ez Ezhava H

Ku Kurava H

Lc Latin X

Mr Marthoma X

Na Nair H

Nd Nadar H

Or Orthodox X

Pu Pulaya H

Rc Roman X

Sh Shya M

Su Sunni M

Sy Syrian X

Th Thiya H

DeptCode (PK) DeptName

Department

ProfCode(PK) ProfName

ProfAddress

ProfSex (Lookup)

Professors

ProfCode(FK)

Department(FK)

TotalHours

WorkDetails

1

ReligionCodeReligionCodeReligionCodeReligionCode ReligionReligionReligionReligion

B Buddhist

H Hindu

M Muslim

X Christian

α

Page 42: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

9. Save and close it. 10. Open the “Personnel” table and select values for Religion and Caste fields 11. Now you can create a Select Query by adding Personnel, Religion table, Caste table. 12. Select Empcode, name, sex, basic from Personnel table, caste from caste table and

religion from religion table. 13. Save the query, give a name and open/Run it. Here you note that it is very difficult to select a caste for a religion. Suppose if you want to add the details of an employee. While you are entering the Religion -say H –filter all the castes which under Hindu Religion 14. First you design a form for Personnel details. Say Employee Master form. 15. Then add a combo box from the toolbox as shown in the form below. Cancel the

builder window (Unbounded). 16. Give a name to your combo box say CstRgnCmbCstRgnCmbCstRgnCmbCstRgnCmboooo.

17. After that create a parameter query from caste table. 18. Add castecode, caste and religion from the table. 19. In the criteria cell of Religion build the parameter as [Forms]![Employee Master

form]![Religion]. Here we filter the caste based on the value of Religion combo box in the “Employee Master form” form.

20. Save the query and give a name “Religion Filter qry”. 21. Close it and select the Forms sheet tab 22. Then select the newly added unbounded combo box and take the properties. 23. Choose the data sheet tab and select the following as below 24. Row Source type : Table/Query 25. Row Source : (Build) add Query - Religion Filter qry - to the builder

window, Select CasteCode to First column and Religion to the second column.

26. Save the builder window. 27. Bound column : 1 (Code column) 28. Then select Format Sheet tab 29. Column count : 2 30. Column widths : 31. Visible : No 32. After that select the religion combo and choose the event sheet. 33. Select On lost focus⇒ select [Event Procedure][Event Procedure][Event Procedure][Event Procedure] from combo box and click … … … … button. 34. Type the following as below.

PriPriPriPrivate Sub Religion_LostFocus()vate Sub Religion_LostFocus()vate Sub Religion_LostFocus()vate Sub Religion_LostFocus() CstRgnCmbo.Visible = True CstRgnCmbo.SetFocus

Page 43: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

CstRgnCmbo.RowSource = "SELECT [Religion Filter qry].[CasteCode], [Religion Filter qry].[Caste] FROM [Religion Filter qry];"

DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 End SubEnd SubEnd SubEnd Sub

35. Close the vba window. 36. Again select the CstRgnCmbo combobox again 37. Select properties and choose Event sheet tab. 38. Select the On lost focus event and choose [Event Procedure] and build

Private Sub CstRgnCmbo_LostFocus()Private Sub CstRgnCmbo_LostFocus()Private Sub CstRgnCmbo_LostFocus()Private Sub CstRgnCmbo_LostFocus() Dim tp As String tp = CstRgnCmbo.Text Caste.SetFocus Caste.Text = tp CstRgnCmbo.Visible = False

End SubEnd SubEnd SubEnd Sub 39. Close the vba window. 40. Now save the form and view the records. Note: - You can write code in the Change/Lost focus event of “Religion” combo box for filtering the values in “Caste” combo box directly instead of using suppurate combo box “CstRgnCmbo”. It can be as follows.

Private Sub Religion_Change()Private Sub Religion_Change()Private Sub Religion_Change()Private Sub Religion_Change() Dim tp As String tp = Religion.Text Caste.SetFocus Caste.RowSource = "SELECT [Caste table].[CasteCode], [Caste table].[Caste],[caste table].[religion] FROM [Caste table] where [Caste table].[religion]='" & tp & "';" DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

End SubEnd SubEnd SubEnd Sub Explanation of syntaxesExplanation of syntaxesExplanation of syntaxesExplanation of syntaxes

DoCmd.DoMenuItemDoCmd.DoMenuItemDoCmd.DoMenuItemDoCmd.DoMenuItem menubar, menuname, command[, subcommand][, version]

menubar Use the intrinsic constant acFormBar for the menu bar in Form view. Menuname You can use one of the following intrinsic constants:

acFileacFileacFileacFile acEditMenuacEditMenuacEditMenuacEditMenu acRecordsMenuacRecordsMenuacRecordsMenuacRecordsMenu

You can use acRecordsMenu only for the Form view menu bar in Microsoft Access version 2.0 and Microsoft Access 95 databases.

For other menus, use the number of the menu in the Menu Name argument list, as shown in the Macro window in previous versions of Microsoft Access (count down the list, starting from 0).

command You can use one of the following intrinsic constants:

acNew, acSaveForm, acSaveFormAs, acSaveRecord, acUndo, acCut, acNew, acSaveForm, acSaveFormAs, acSaveRecord, acUndo, acCut, acNew, acSaveForm, acSaveFormAs, acSaveRecord, acUndo, acCut, acNew, acSaveForm, acSaveFormAs, acSaveRecord, acUndo, acCut, acCopy, acPaste, acDelete, acSelectRecord, acSelectAllRecords, acCopy, acPaste, acDelete, acSelectRecord, acSelectAllRecords, acCopy, acPaste, acDelete, acSelectRecord, acSelectAllRecords, acCopy, acPaste, acDelete, acSelectRecord, acSelectAllRecords, acObject, acRefreshacObject, acRefreshacObject, acRefreshacObject, acRefresh

For other commands, use the number of the command in the Command argument list, as shown in the Macro window in previous versions of Microsoft Access (count down the list, starting from 0).

subcommand You can use one of the following intrinsic constants: acObjectVerb, acObjectUpdateacObjectVerb, acObjectUpdateacObjectVerb, acObjectUpdateacObjectVerb, acObjectUpdate

Page 44: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

The acObjectVerb constant represents the first command on the submenu of the Object command on the Edit menu. The type of object determines the first command on the submenu. For example, this command is Edit for a Paintbrush object that can be edited.

version Use the intrinsic constant aaaacMenuVer70cMenuVer70cMenuVer70cMenuVer70 for code written for Microsoft Access 95 databases, the intrinsic constant acMenuVer20acMenuVer20acMenuVer20acMenuVer20 for code written for Microsoft Access version 2.0 databases

Instead of using the combo box you can use a sub form.

1. Create a columnar form for Personnel table. 2. Create a tabular form for “caste table” table. 3. Design Employee form and draw the sub as follows

4. Caste form is on the right side of the Employee form. 5. When the builder wizard appears select the caste tabular form from the list of

forms. Click Next >. 6. Select Define my own radio button. 7. Choose the Religion field from the form/report combo and the same from the

subform/subreport combo. 8. Click Next> and finish the wizard. 9. After saving you can see the form view.

Parameter query as the backParameter query as the backParameter query as the backParameter query as the back born (Data source) of a form. born (Data source) of a form. born (Data source) of a form. born (Data source) of a form.

1. Create a query from Employee and Designation table as follows.

Field EmpCode Name Designation Basic

Table Personnel Personnel Designation Personnel

Sort

Show

Criteria [Enter a Designation? ]

or

2. Save the query as “Filtr Frm Crtng Qry” 3. Then design a tabulartabulartabulartabular form from the “Filtr Frm Crtng Qry”. 4. Save, give name “Designation fltr frmDesignation fltr frmDesignation fltr frmDesignation fltr frm” and take the form view. Instead of using run time parameter you can use a parameter form from which you can select the designation. 1. For that first design an unbounded form. 2. Add a combo box from the toolbox and rename it as “DesigcboDesigcboDesigcboDesigcbo”. 3. Select the option button “I want the combo box to look up the values in a table or

query.” And click Next> 4. Select the designation table and click Next> 5. Select the designation field from the list and click Next> 6. Note the preview and click Next> again and finish it.

Page 45: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

7. Save the Form and give a name “Parameter frm”. 8. Add a text box and give name as “txtdpdesigtxtdpdesigtxtdpdesigtxtdpdesig”. 9. Select the Format sheet tab and change the Back Style : Transparent 10. Change the Special Effect : Flat. 11. Change the Fore color : {select the colour of your form (12632256).} for making the

font invisible 12. Select the combo box again and take the event sheet. And change the On Change

event to [Event Procedure]. Then click the builder button. 13. Type the following code . Private Sub Desigcbo_Change()Private Sub Desigcbo_Change()Private Sub Desigcbo_Change()Private Sub Desigcbo_Change()

Dim tp As String tp = Desigcbo.Text txtdpdesig.SetFocus txtdpdesig.Text = tp Desigcbo.SetFocus

End SubEnd SubEnd SubEnd Sub 14. Save and close the form say “Parameter frm” 15. Then redesign the query “Filtr Frm Crtng Qry” as follows

Field EmpCode Name Designation Basic

Table Personnel Personnel Designation Personnel

Criteria Forms![Parameter frm]![txtdpdesig]

16. Then select the form Parameter frm and add command button on it. 17. Choose Form operations from the categories and select Open form from the actions

list respectively 18. Click next and choose the “Designation fltr frm” and follow the instructions. 19. Save the “Parameter frm” and open it. 20. Select a designation from the combo box. 21. While we are changing/selecting a designation in the combo box it is transferred to

the Textbox. But we can’t notice it owing to the same colour of text and form. 22. When you click the command button it will open the form Designation fltr frm. But the

form is derived from the parameter query Filtr Frm Crtng Qry. It requires a parameter designation, which comes from the (Parameter frm)’s textbox.

MS Access Exercise 7MS Access Exercise 7MS Access Exercise 7MS Access Exercise 7 ModuleModuleModuleModule Select the module sheet tab and create a new module. Type the following code in it. Option Compare DatabaseOption Compare DatabaseOption Compare DatabaseOption Compare Database Public Function SalCals(ByRef Basic As Integer, ByRef per As Single, ByRef rtn As Single) As Single

‘MsgBox Basic & vbCrLf & per ‘for checking values rtn = Basic * per ‘MsgBox rtn ‘for checking result

End Function Save the module and give name as “SalCal” Then open the form sheet tab and create a form as shown below from Personnel table.

Page 46: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Here we add two textboxes named “DATXT” and “PFTXT” respectively. Then add one more Command button named “CalBtn”, caption Calc. Select the click event of the button choose the [Event procedure], and type the following code.

Option Compare DatabaseOption Compare DatabaseOption Compare DatabaseOption Compare Database

Public rtn As Single Private Sub CalBtn_Click()Private Sub CalBtn_Click()Private Sub CalBtn_Click()Private Sub CalBtn_Click()

Call SalCal.SalCals([Basic], 0.33, rtn) DAtxt.SetFocus DAtxt.Text = rtn Call SalCal.SalCals([Basic], 0.0833, rtn) PFtxt.SetFocus PFtxt.Text = rtn

End SubEnd SubEnd SubEnd Sub

Save and run the form. Click on the button for seeing the result. Similarly you can use modules for calling sub procedures/Functions. More VBA Coding sampleMore VBA Coding sampleMore VBA Coding sampleMore VBA Coding sample Dim db As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub Command26_Click()Private Sub Command26_Click()Private Sub Command26_Click()Private Sub Command26_Click()

On Error GoTo Err_Val Dim sSQL As String Dim txtval As String txttest.SetFocus txtval = txttest.Text ''''For extracting a detailsFor extracting a detailsFor extracting a detailsFor extracting a details ''''for stringfor stringfor stringfor string sSQL = "Select * from Personnel where Personnel.empcode='" & txtval & "'" 'for numeric field'for numeric field'for numeric field'for numeric field 'sSQL = "Select * from 'sSQL = "Select * from 'sSQL = "Select * from 'sSQL = "Select * from PersonnelPersonnelPersonnelPersonnel where where where where PersonnelPersonnelPersonnelPersonnel.basic=" & iVal .basic=" & iVal .basic=" & iVal .basic=" & iVal 'for date value'for date value'for date value'for date value 'sSQL = "Select * from 'sSQL = "Select * from 'sSQL = "Select * from 'sSQL = "Select * from PersonnelPersonnelPersonnelPersonnel where where where where PersonnelPersonnelPersonnelPersonnel.dateofbirth=#" & dateVal & "#".dateofbirth=#" & dateVal & "#".dateofbirth=#" & dateVal & "#".dateofbirth=#" & dateVal & "#" db.Provider = "Microsoft.jet.oledb.4.0" db.Open "C:\My Documents\payroll.mdb", admin 'rs.Open "'rs.Open "'rs.Open "'rs.Open "PersonnelPersonnelPersonnelPersonnel", db, adOpenKeyset, adLockOptimistic", db, adOpenKeyset, adLockOptimistic", db, adOpenKeyset, adLockOptimistic", db, adOpenKeyset, adLockOptimistic rs.Open sSQL, db, adOpenKeyset, adLockOptimistic

Do While Not rs.EOF MsgBox rs.Fields(0) ' ' ' ' Set this value to aSet this value to aSet this value to aSet this value to a filed/textbox in to your form filed/textbox in to your form filed/textbox in to your form filed/textbox in to your form rs.MoveNext Loop

db.Close

Page 47: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Exit SubExit SubExit SubExit Sub

Err_Val:Err_Val:Err_Val:Err_Val: If db.State = adStateOpen Then

db.Close End if 'Type Proper error messages.'Type Proper error messages.'Type Proper error messages.'Type Proper error messages.

End SubEnd SubEnd SubEnd Sub Dim txtval1 As Date, txtval2 As DateDim txtval1 As Date, txtval2 As DateDim txtval1 As Date, txtval2 As DateDim txtval1 As Date, txtval2 As Date txtDate1.SetFocustxtDate1.SetFocustxtDate1.SetFocustxtDate1.SetFocus txtval1 = CVDate(txtDate1.Text)txtval1 = CVDate(txtDate1.Text)txtval1 = CVDate(txtDate1.Text)txtval1 = CVDate(txtDate1.Text) TXTDaTXTDaTXTDaTXTDate2.SetFocuste2.SetFocuste2.SetFocuste2.SetFocus txtval2 = CVDate(TXTDate2.Text)txtval2 = CVDate(TXTDate2.Text)txtval2 = CVDate(TXTDate2.Text)txtval2 = CVDate(TXTDate2.Text)

sSQL = “Select Empcode,Name,Basic from sSQL = “Select Empcode,Name,Basic from sSQL = “Select Empcode,Name,Basic from sSQL = “Select Empcode,Name,Basic from PersonnelPersonnelPersonnelPersonnel”””” sSQL = "Select * from sSQL = "Select * from sSQL = "Select * from sSQL = "Select * from PersonnelPersonnelPersonnelPersonnel where where where where PersonnelPersonnelPersonnelPersonnel.DateofBirth between #" & txtval1 & "# .DateofBirth between #" & txtval1 & "# .DateofBirth between #" & txtval1 & "# .DateofBirth between #" & txtval1 & "#

and #" & txtval2 & "#"and #" & txtval2 & "#"and #" & txtval2 & "#"and #" & txtval2 & "#" sSQL =”Select Salary.sSQL =”Select Salary.sSQL =”Select Salary.sSQL =”Select Salary.Personnel, , , , PersonnelPersonnelPersonnelPersonnel....Name,,,,PersoPersoPersoPersonnelnnelnnelnnel....Basic,Salary.,Salary.,Salary.,Salary.Da from from from from

PersonnelPersonnelPersonnelPersonnel,Salary where ,Salary where ,Salary where ,Salary where PersonnelPersonnelPersonnelPersonnel.Basic >= " & iVal.Basic >= " & iVal.Basic >= " & iVal.Basic >= " & iVal

Calulating DA, PF etc by using code.Calulating DA, PF etc by using code.Calulating DA, PF etc by using code.Calulating DA, PF etc by using code.

Add a command button named “CmdBtnCalcCmdBtnCalcCmdBtnCalcCmdBtnCalc” in your form and write the following code in the click event of it.

Private Sub CmdBtnCalc_Click()

Dim iBasic As Integer Dim varVal As Variant [Basic].SetFocus iBasic = Val([Basic].Text) If iBasic >= 10000 Then varVal = iBasic * (32 / 100) ElseIf iBasic >= 5000 Then varVal = iBasic * (40 / 100)

Else varVal = iBasic * (50 / 100) End If [DA].SetFocus [DA].Text = varVal

If (iBasic + [DA]) >= 6500 Then varVal = 720 Else varVal = Round((iBasic + [DA]) * (12 / 100), 0) End If [PF].SetFocus [PF].Text = varVal

End Sub

Creating Query by QueryDefCreating Query by QueryDefCreating Query by QueryDefCreating Query by QueryDef '''' Defines a database and querydef object Defines a database and querydef object Defines a database and querydef object Defines a database and querydef object

Dim dbsdbsdbsdbs As Database, qdfqdfqdfqdf As QueryDef Dim strSQLstrSQLstrSQLstrSQL As String

Page 48: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

' Set current database to dbs. Set dbsdbsdbsdbs = CurrentDb ' Refresh all Query Definitions in your current database. dbs.QueryDefs.Refresh ' Before creating a Query you must check weather the query exists or not. If it ' exists Delete it first. Here we are going to create a ‘SampleQuery’. Check for ' that –‘SampleQuery’ query exists then delete it.

For Each qdfqdfqdfqdf In dbsdbsdbsdbs.QueryDefs If qdfqdfqdfqdf.Name = "SampleQuery" Then dbs.QueryDefs.Delete qdf.Name End If Next qdf ' Create SQL string to select employees joined on a date which is entered in a ' textbox named ‘TxtQryDateOfJoin’ in the current form

strSQL = "SELECT * FROM Personnel WHERE “ & _ " (((Personnel.Dateofjoin)=#" & TxtQryDateOfJoin & "#));"

' Create new QueryDef object. Set qdf = dbs.CreateQueryDef("SampleQuery", strSQL) ' Open query in Datasheet view. DoCmd.OpenQuery qdf.Name Set dbs = Nothing

NB: - if Error occurs include the library form the Tools Tools Tools Tools ⇒⇒⇒⇒ References… References… References… References… in the VBA code window and choose “Microsoft DAO 3.6 Object LibraryMicrosoft DAO 3.6 Object LibraryMicrosoft DAO 3.6 Object LibraryMicrosoft DAO 3.6 Object Library”.

Creating Table by TableDefCreating Table by TableDefCreating Table by TableDefCreating Table by TableDef

Dim dbsNew As Database Dim tdfNew As TableDef Dim prpLoop As Property ' you can create table in current database or in another database. Use any one of ' the following Syntax ' Set dbsNew = CurrentDb Set dbsNew = OpenDatabase("Sample.mdb") ' Create a new TableDef object. Set tdfNew = dbsNew.CreateTableDef("Contacts")

With tdfNewWith tdfNewWith tdfNewWith tdfNew

' Create fields and append them to the new TableDef Object. ' This must be done before appending the

Page 49: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

' TableDef object to the TableDefs collection of the database. .Fields.Append .CreateField("FirstName", dbText) .Fields.Append .CreateField("LastName", dbText) .Fields.Append .CreateField("Phone", dbText) .Fields.Append .CreateField("Notes", dbMemo) ' Append the new TableDef object to the database. dbsNew.TableDefs.Append tdfNew

End WithEnd WithEnd WithEnd With

' If you want to delete new TableDef object then use the following syntax ' dbsNew.TableDefs.Delete "Contacts"dbsNew.TableDefs.Delete "Contacts"dbsNew.TableDefs.Delete "Contacts"dbsNew.TableDefs.Delete "Contacts" dbsNew.Close

Searching Records By Using Loops.Searching Records By Using Loops.Searching Records By Using Loops.Searching Records By Using Loops.

For.. [ Step n ] …. Next [ Var ]For.. [ Step n ] …. Next [ Var ]For.. [ Step n ] …. Next [ Var ]For.. [ Step n ] …. Next [ Var ] Dim db As New ADODB.Connection Dim rs As New Recordset Dim TotRec As Long Dim i As Long db.Provider = "Microsoft.jet.oledb.4.0" db.Open "Access1.mdb" rs.ActiveConnection = db rs.Open "Personnel", , adOpenKeyset, adLockOptimistic rs.MoveLast TotRec = rs.AbsolutePosition rs.MoveFirst For i = 1 To TotRec Step 1 Debug.Print rs.Fields(1) rs.MoveNext Next

Do While…. LoopDo While…. LoopDo While…. LoopDo While…. Loop

Dim db As New ADODB.Connection Dim rs As New Recordset db.Provider = "Microsoft.jet.oledb.4.0" db.Open "Access1.mdb" rs.ActiveConnection = db ' rs.Open "Personnel", , adOpenKeyset, adLockOptimistic Set rs = db.Execute("Select * from Personnel") Do While Not rs.EOF Debug.Print rs.Fields(1) rs.MoveNext

Page 50: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Loop Do Until…. LoopDo Until…. LoopDo Until…. LoopDo Until…. Loop

Dim db As New ADODB.Connection Dim rs As New Recordset Dim TotRec As Long Dim i As Long db.Provider = "Microsoft.jet.oledb.4.0" db.Open "Access1.mdb" rs.ActiveConnection = db rs.Open "Personnel", , adOpenKeyset, adLockOptimistic rs.MoveLast TotRec = rs.AbsolutePosition rs.MoveFirst Do Until rs.EOF Debug.Print rs.Fields(1) rs.MoveNext Loop

Looping StatementsLooping StatementsLooping StatementsLooping Statements

Looping statements are used for iteration. Suppose if you want to execute a particular set of code repeatedly we can use looping statements. The important looping statements in VB are

1. ForForForFor counter ==== startvalue ToToToTo endvalue [StepStepStepStep stepvalue] [statements] [Exit ForExit ForExit ForExit For] [statements] NexNexNexNextttt [counter]

2. ForForForFor EachEachEachEach element InInInIn group [statements] [Exit ForExit ForExit ForExit For] [statements] NextNextNextNext [element]

Select Case.…Case is…. Case else Executes one of several groups of statements, depending on the value of an expression. SyntaxSyntaxSyntaxSyntax

Select CaseSelect CaseSelect CaseSelect Case testexpression [CaseCaseCaseCase expressionlist-n [statements-n]] ... [Case ElseCase ElseCase ElseCase Else [elsestatements]]

End SelectEnd SelectEnd SelectEnd Select For changing the colour fo a textbox named TxtChoiceFor changing the colour fo a textbox named TxtChoiceFor changing the colour fo a textbox named TxtChoiceFor changing the colour fo a textbox named TxtChoice Private Sub CmdBtnCgClr_Click()

Dim choice As Variant TxtChoice.SetFocus choice = TxtChoice.Text Select Case choice Case 1, "R", "r" TxtChoice.BackColor = vbRed

Page 51: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Case 2, "G", "g" TxtChoice.BackColor = vbGreen Case 3 TxtChoice.BackColor = vbBlue Case 4 TxtChoice.BackColor = vbMagenta Case 5 TxtChoice.BackColor = vbBlack Case 6, "a" To "f", "A" To "F" TxtChoice.BackColor = vbYellow Case Is >= 7, 0 TxtChoice.BackColor = vbWhite Case Else TxtChoice.BackColor = vbCyan End Select

End Sub

IF Control statementIF Control statementIF Control statementIF Control statement

Conditionally executes a group of statements, depending on the value of an expression. If <condition> then Statement1 Statement 2 Statement n End If If <Condition> Then Statements Else Statements End if If <Condition> then Statements Elseif <Condition> then Statements Elseif <Condition> then Statements Else Statements End If If <Condition> then If <condition> then Statements Else Statements End if Else If <Condition> then Statements

Page 52: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Elseif <Condition> then Statements Else Statements End if End if and so on……

Looping StatementsLooping StatementsLooping StatementsLooping Statements

Looping statements are used for iteration. Suppose if you want to execute a particular set of code repeatedly we can use looping statements. The important looping statements in VB are

3. ForForForFor counter ==== startvalue ToToToTo endvalue [StepStepStepStep stepvalue] [statements] [Exit ForExit ForExit ForExit For] [statements] NextNextNextNext [counter]

4. ForForForFor EachEachEachEach element InInInIn group [statements] [Exit ForExit ForExit ForExit For] [statements] NextNextNextNext [element]

Automate Repetitive Tasks in Microsoft Access Put Macros and Visual Basic for Applications to Work in Your Forms When you set up a database, You'll want it to be as easy to use as possible, especially when it comes to repetitive tasks like data entry. With Microsoft Access, it's easy to automate tasks like changing values in one field when the value in another changes or printing reports by creating macros or writing Visual Basic. a) Create a Macro to Change a Field's Value Create a Macro to Change a Field's Value Create a Macro to Change a Field's Value Create a Macro to Change a Field's Value When you find yourself repeating the same tasks, such as change (update) the value in DA very time you change the value in Basic Pay. Your action, changing the Basic Pay, causes an event to occur (in macro language, an AfterUpdate event). By creating a macro, you can tell Microsoft Access which action you want it to take when this event occurs. Creating a macro is easy with the Macro Builder. Open the form in Design view by clicking the Database Window button, clicking the Forms tab, clicking the Salary form, and then clicking Design. Click the Basic Pay box, click the Properties button, and then click the Event tab. In the After Update property box, click the Build button, and then double-click Macro Builder to create a new macro. Click the action that you want the macro to perform here (SetValue). Then type the name of the control you want to change in the item box. (DA) Type the expression (=[basic pay]*16/100) in the expression box

Page 53: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

Click the Save button to save the macro whenever the Basic Pay changes. Respond to other common events You can create macros that tell Microsoft Access what to do when a user opens a form (the Open event), moves from one record to another (the Current event), or clicks a specific button (the Click event), among other things. What other actions can a macro perform? A macro can display a message to the user (the MsgBox action), perform a Microsoft Access menu command (the DoMenultem action), or simulate typing on the keyboard (the SendKeys action), among other actions. For details on any macro action you see in the Macro window, click the action and press Fl. Want a macro to perform a series of actions in response to a single event? Select each action you want to perform in a separate row of the Macro window. Microsoft Access performs the actions row by row. b) To create a macro to perform a ETo create a macro to perform a ETo create a macro to perform a ETo create a macro to perform a Export a table to Excel and a Messagexport a table to Excel and a Messagexport a table to Excel and a Messagexport a table to Excel and a Message Select Macro Sheet Tab and Press New i) First Action Item In the Action Column select TransferSpreadSheet In the action argument

Select Tranfer type as Export Select Spreadtype as Microsoft Excel97

Select Table name as Salary Select File name as SalaryExcel ii) Second Macro Action In the Action Column select MsgBox In the action argument

Message box : Type the message you required “

Close the macro with a name and run the macro for the Actions. c) Add a Add a Add a Add a Command Button That Prints a ReportCommand Button That Prints a ReportCommand Button That Prints a ReportCommand Button That Prints a Report Do you frequently print a report after updating your database? Add a button to your form that automatically prints the report. Creating buttons that perform actions is easy with the Command Button Wizard. If you haven't opened the Salary form in Design view, do so. In the toolbox, click the Command Button tool, and if the Control Wizards tool isn't selected, click it, too. Click where you want to put the button, and then follow the wizard's instructions. Action Categories: Select Report Operations Actions: Select Print Report and tell the wizard what you want the button to do Save the form. Open the form and press the button and see what the command button do. Note: Use the Command Button Wizard to create buttons that perform many other actions Buttons can automatically open other forms, move between records, and add or delete records, among other things. For details, look up command buttons, creating in the Microsoft Access online index.

Page 54: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

ReportsReportsReportsReports

A report is an effective way to present your data in a printed format. Because you have control over the size and appearance of everything on a report, you can display the information the way you want to see it.

As in the case of a form you can create a report from a table, select query or a parameter query. You can preview the report from the report sheet tab or adding command buttons in the form for report operations.

In a report you can add different sorting, grouping/sub grouping levels. You can take summary options of different numeric fields.

Create a report for seeing the designation wise list of employees.

1. In the Reports sheet click new button and select report wizard option. 2. Select the Personnel table in the combo box below and click ok 3. Select fields require for creating the report as in the case of form. a) If you want to add fields from more than one Table/Query select the required

table/Query from the combo box shown above - only after selecting the required fields of the current table/query.

4. Click Next> and select a filed name by which you group the data. Here we use “Designation” field. (You can use Department, Caste, Religion, and Sex etc for grouping). If you want to display Department wise Designation wise list add two grouping levels. First level Department and second Designation and so on.

5. Click next and choose a key field name for sorting say basic. Then click on the button labeled A/Z with an arrow on the right for selecting the sort order. AZ for ascending and ZA for descending.

6. Select a secondary key field -say Name - if more than employee with same basics. 7. Select a sort order and so on 8. Click Summary option button and check (click) the corresponding for taking sum,

average, maximum etc. 9. Select a layout of your report - say block. Check other options like landscape/portrait

etc if you required. 10. Select a style from the next step – say formal 11. Give report name and finish it. 12. In this report you can see only the designation code. How can you bring the

designation here? 13. For that you select the designation field from the designation table while you are

creating the report in wizard. Another way for that is to create a query from Personnel table and designation table and add required fields. Create a report from that query.

14. Take the design view of your report and check the Report/Page header, Designation header, details and corresponding footers. Arrange them properly.

Reports in design viewReports in design viewReports in design viewReports in design view

1. Reports⇒Create Reports in Design View⇒Design 2. Right click at top left corner of report as shown in figure(Black Spot) and choose

Properties

3. Record Source⇒Select Query/Table (Personnel Table) 4. Drag all fields from field list window (View⇒Field List) the center of Detail session 5. Arrange them properly at detail session for columnar report. For tabular report

select all Labels and cut (Edit⇒Cut). a) Click on Page Header session and Paste (Ctrl+V) b) Properly arrange the Labels in the Page header session in a single line. c) Arrange display controls in the Detail session properly as shown in figure. d) View⇒Report Header/Footer

Page 55: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

e) Add a Label from Tool box (Aa) at the Report Header session and type a suitable Caption for your Report.

f) Add a Text box (ab|) at Page Footer session. g) Delete the Label portion of it. h) For Page number type, ="Page " & [Page] & "="Page " & [Page] & "="Page " & [Page] & "="Page " & [Page] & " of " & [Pages]of " & [Pages]of " & [Pages]of " & [Pages]

i) Add One more textbox at Report Footer session j) Delete its label part k) For finding the sum of basic pays of all employees type,,,, ="Sum of Basic ="Sum of Basic ="Sum of Basic ="Sum of Basic

Pays= " & Sum([BasicPay])Pays= " & Sum([BasicPay])Pays= " & Sum([BasicPay])Pays= " & Sum([BasicPay])

Save Report and preview. AAAAddddding Grouping Levels in report design viewding Grouping Levels in report design viewding Grouping Levels in report design viewding Grouping Levels in report design view For creating designation wise list of employees first create a query from Personnel and Designation table. Add Designation from Designation table along with the fields from personnel. Save the query. Design report and assign the query as Record source.

1. View⇒Sorting and Grouping 2. Select Designation in the Filed/Expression 3. Select sort order, Ascending 4. Group header⇒Yes and Group Footer⇒Yes 5. Now you can see a group header Designation Header and Group Footer, Designation

Footer in the Report. 6. Drag the Designation Display control from Detail session to the Designation header. 7. Format it for Bold, Font Colour etc. 8. Delete Designation Label from Page Header Session 9. if you want to take count or sum of basic pay etc add text box at Designation Footer

session.

Page 56: Microsoft Word - MS Access Note

Database Management System For Private Circulation only

10. the type expression in the text box as =Sum([BasicPay]=Sum([BasicPay]=Sum([BasicPay]=Sum([BasicPay])))) or =count([EmpCode])=count([EmpCode])=count([EmpCode])=count([EmpCode]) etc 11. For adding serial numbers for detailed records in each designation we can perform the

following option 12. Add a textbox at a suitable place. Delete the label of it.

13. Type =1 in the textbox 14. place it at the left of EmpCode field at the Detail session 15. right click on the textbox and choose properties 16. Data⇒Control Source⇒ =1 17. Running Sum⇒Over Group 18. save and preview the result 19. After seeing the report, redesign it 20. select the properties of the serial number textbox 21. change the Running sum property to Over all 22. Save and preview the report again.