0
Hotel Database M
anagement
System
Minor Project
Chrichtian A. Neal May 15, 2013
CERTIFICATE
This is to certify that this a bona fide record to the project work done satifactorily at Uttar Pradesh by Chrichtian A. Neal (BSc IT01542010-2013027) of the BSCIT10 program.
This report or the similar report on this topic has not been submitted for any other examination and does not form part of any othe course
undergone by the candidate.
Date: May 15, 2013
Signature of Project Guide:________________________________
Satish Singh Nishant K Rai
ABSTRACT
With the rapid changing of today’s worlds in technological advancements and
information ‘over charge’ (surplus), it is yet to draw a definite conclusion that there are no opposing forces to the inevitable change. Information and Communication
Technology (interchangeably used as IT) with a referenced grip on MIS has bridge the gap between people and information, but it is more interesting how information is derived at to making decisions affecting every aspect of our individual lives.
An investigative survey was done amongst some urban hotels with in the city to
captivate, to an extent, the acceptance of the change afforded by Information Technology in a day-to-day handling of resource raw data by which decisions are made and
businesses thrive. For the setting, it was noticed that as much as information (as a result of organized data) plays a leading role in the businesses’ lives, just but a few would consider the finds. On a larger scale, hotels were not managing data well or not at all, and proposing a more efficient way of data management (considering the cost to the high advantage) was such a constraint to hotel managers.
At a reasonable timing a hotel was able to see the need for such a change, allow a case study to improve it already partially manual booking and cancellation process and semi-electronic billing system. This project proves a basis to elaborate that the more concise, centralize, and organized data becomes, so will the output (information) be. It was discovered in analyzing the developed system to the former that efficiency, timing, redundancy elimination, productivity, feasibility, and cost reduction were prime in its objectives.
Based on this project, a closer look at the perception and the resource factor to improving the overall goal to drive people and entities toward managing data which plays a critical role in the decision they make, which improves or impedes productivity but focusing on deriving an inexpressive module for the sole purpose of managing small and medium (income generating) hotels facilities.
ACKNOLEWDGEMENT
I would like to extend special thanks and gratitude to the Human Resource Manager of The Cape Hotel, Mr. Victor J. Whitfield, for his valuable time afforded me in preparing the outcome of this project.
Another big ‘thank you’ to my office (and entire staff) for allowing be the peace I needed on Earth to complete this project. Had it not been for their understand and less unlimited job requests, I wouldn’t have been able to come to a reasonable finish.
TABLE OF CONTENT
1. Introduction ... 1
1.1 Background ... 1
1.2 Objectives... 1
1.3 Purpose, Scope, and Applicability ... 2
1.3.1 Purpose ... 2 1.3.2 Scope ... 2 1.3.3 Applicability ... 2 1.4 Achievements ... 2 1.5 Organization of Report... 3 2. Survey of Technologies ... 4
3. Requirements and Analysis ... 8
3.1 Problem Definition: ... 8
3.2 System Analysis: ... 8
3.2.1 Cape Hotel system at the moment runs as follows: ... 10
3.2.2 Problems faced with system at Cape Hotel ... 10
3.3 Planning and Scheduling ... 11
3.4 Software and Hardware Requirements:... 12
3.4.1 Computer ... 12
3.4.2 Printer ... 12
3.4.3 Software Requirement: ... 12
3.5 Preliminary Product Description ... 13
3.5.1 End users requirement ... 13
3.5.2 Hotel information ... 13
3.6 Conceptual Models: ... 15
3.6.1 System flowchart: ... 16
4. System Design ... 17
4.1 Data Design ... 17
4.1.1 Integrity and Constraints ... 17
4.1.2 Normalization of entities ... 18
4.1.3 Entity Relationship Diagram (ER Diagram) ... 21
4.1.4 Functional Dependencies ... 22
4.2 Basic Modules: ... 23
4.2.1 Form prototype ... 23
4.3 User Interface Design: ... 31
4.3.1 Main menu ... 32
4.3.2 Entity Relationship Diagram (ERD) ... 38
4.4 Security Issues: ... 43
4.4.1 User Identification... 43
4.4.2 Network Access ... 43
4.4.3 Recovery ... 43
4.4.4 Malware and Intrusion ... 43
5. Implementation and Testing ... 44
5.1 Coding: ... 44
5.1.1 Forms: ... 44
5.1.3 Form_Customer ... 48 5.1.4 Form_Menu ... 48 5.1.5 Form_Report ... 50 5.1.6 Form_Room Available ... 52 5.1.7 Queries: ... 52 5.2 Switchboard: ... 54 5.2.1 Switchboard codes: ... 55 5.3 Testing Approach ... 59
5.4 Modifications and Improvements: ... 61
6. Results and Discussion ... 62
6.1 Test Reports: ... 62
6.2 User Documentation: ... 63
7. Conclusion ... 73
7.1 Limitations of the System: ... 73
7.2 Future Scope of the Project ... 74
REFERENCES ... 75
i
Term Definition
Data handling the process of ensuring that research data is stored, archived or disposed in a safe and secure manner during and after the conclusion of a research project. This includes the development of policies and procedures to manage data handled electronically as well as through non-electronic means
Front desk (receptionist) an employee that performs the duties of receiving guests (booking), visitors, and answer phone calls.
QuickBooks is a line of business accounting software developed and marketed by Intuit.
Penthouse is the apartment or room located at the top floor of a building usually expensive for very high executive.
Switchboard is tool kit used by programmers which allows program with the help of MS Office-embedded Visual Basic (VB) tools to create a Graphical User Interface (GUI) to include command buttons to drive the SAS session.
ABBREVIATIONS
The following project-specific and general technical abbreviations are used:
AIX Advanced Interactive eXecutive CUI Character User Interface
FD Functional Dependency GUI Graphical User Interface
HR Human Resource
IBM International Business Machine Corporation IEC International Electrotechnical Commission ICT Information and Communication Technology ISO International Organization for Standards MS Microsoft
MSXML Microsoft eXtensible Markup Language ODBS Open Database Connectivity
OLTP On-Line Transaction Processing OS Operating System
PC Personal Computer RAC Real Application Clusters
RDMS (RDBMS) Rational Database Management System SAS Statistical Analysis System
SDLC Software Development Life Circle SOE Standard Operating Environment SP3 Service Pack (version 3)
SQL Structural Query Language
TPC-C Transaction Processing Performance Council T-SQL Transact- Structural Query Language
VBA (VB)Visual Basic Application VSC Vision Control System
1
This project provided a stimulus recipe of an investigative summary researching the productivity afforded by employing the use of technology in helping make the most out of our day to day situations.
I goes further to dissect the SDLC in putting a solution to the problem found with the intended to alleviating the fear relating to cost that incur trying to take this worthy venture.
The rest of the chapters will elaborate more details findings and methods taken to resolve the problem found.
1.1 Background
This project document was done for The Cape Hotel after a feasibility done amongst 6 hotels with the urge to use ICT a productivity tool. A number of these hotel shares, interesting, similar fate for the fear of welcoming a system to improve the accuracy of decision made as a result of proper data storage and date manipulation. One would deduce the fear being budgetary constraints, human resource drawback, amongst other. In view of these facts, a turn-about phase after noticing some of the mentioned negative perception on what ICT has to offer these hotels, a system that incorporates very low and medium income generators (hotels) was focused upon.
1.2 Objectives
This guide seeks to create a database management system which will ease the burden on the management of The Cape Hotel in making hotel reservations, maintaining guests’ records, check rooms availability per dates, and bill customers as per afforded services in a timely fashion, and gradually wipe-out a manual excel spreadsheet ‘insert, merge and highlight’ reservation system.
The project will also work out the modality regarding the cost efficiency factor to drive more hotel management see the need and the greater advantages there are in welcoming technology play a key part in handling all of their today’s information from scratch to finish.
2
1.3 Purpose, Scope, and Applicability
1.3.1 Purpose
This paper serves to provide a model for the developing and implementation a user-friendly (GUI) and easy to use, without much provision of support, RDMS system for a small and medium hotel managements to meet its overall hotel management needs.
1.3.2 Scope
This paper might find itself useful by following the sequence of procedures which are applicable in the modeling of other similar RDBMS systems (to suite users’ need) for the purpose of data handling. It ceases functionality when considering enormous work circle of integrated heterogeneous hotel systems.
1.3.3 Applicability
This paper implementation, that which is the outcome, would be used at the front-desk, other serves terminals and for administrative use at Cape Hotel, and is also applicable to other similar small and medium size hotel facilities. Further development of this project is opened to more research for improvements for scalable entities.
1.4 Achievements
A significant achievement has been gained as a result of a fully on-hands participation and implementation of this project. More notable the importance of the SDLC played a strategic role in road mapping difficulties to a more manageable piece of achievability. The strain and stressed faced by programmers and the limitation of time factor which impedes high efficiency of application was understood, and the question to why
technological ‘problems’ would not cease to exists was answered by the need for further improvement (updates and patches).
3
The project in itself is a hallmark which encourages deterred low income hotel system would embrace a more meaningful data system tool for collation, analysis, and decision based productivity. The financial constraint factor has been eradicated to a far and better more agreeable level of a success story.
1.5 Organization of Report
This project provided a stimulus recipe of an investigative summary researching the productivity afforded by employing the use of technology in helping make the most out of our day to day situations.
I goes further to dissect the SDLC in putting a solution to the problem found with the intended to alleviating the fear relating to cost that incur trying to take this worthy venture.
The rest of the chapters will elaborate more details findings and methods taken to resolve the problem found.
4
2. Survey of Technologies
It is increasingly vertiginous to database application developers when it comes to developing and implementing database applications as there are numbers of platforms, languages, frameworks and other technicalities (as may be specified by user) to choose from. Many database developers might find it tedious making a selection as per their own needs or needs of client when putting many factors into play. Here are some database platforms and their developers:
MS Access Microsoft Corporation
MS SQL ISO/IME
Oracle Oracle Corporation
Informix IBM
Sybase Berkeley, California
TeraData
DB2 IBM
MySQL MySQL AB (subsidiary of Oracle Corporation)
PostGreSQL PostgreSQL Global Development Group
Basically, the choice of database developers should be prone to questions like: who is the user, what is the size of data (or organization) to be stored and, what kind of business activities in line with available requirements, reliability, stability, maintenance issues, which OS platform would the application be running on, how much is budgeted by the user for such initiative, whether the need for an increase in the scope of the system will emerge soon, and many others.
When only looking at inputting of data for information purpose, reference information, or an alternative backup for data storage instead of saving such information in a file format, then a selection of any of the above mention RDBMS platform (with distributive system support) would do just good if considerations are not given to issues that concerns latency, slowness of I/O, locking/blocking, and so on.
However, when the need arises for a database to play a more critical role (OLTP) in a business-critical system, and the need to incorporate features such as no-down-time, high availability, clustering, reliability, point-in-time recovery, scalability (for both
5
with extreme high speed and low latency (HPC), then such case will probably need an RDBMS with enterprise solution features, which will incur high cost.
Table 1: Database platform comparison
HA Clustering Features High performance/low latency/In memory DB Scalability/ Performance Replication MS SQL Cluster provides HA failover but no load balancing
since it only supports Active/Passive mode (instance wise), there is no scalability at the instance level. There has to replacement of the whole cluster (or pair by pair), if the existing hardware has been throttled
has log shipping and database mirroring for warm/standby DB solutions (active/passive, r/w and read-only), and it supports transactional replication with the granularity at the article/object level (per table)
Oracle RAC is the best for HA clustering and load balancing and scalability
provides TimesTen in-memory database
if the existing hardware cannot keep up with the performance requirement, A simple adding of a beefier box to the cluster and gradually replace all other nodes, which protect our existing investment better.
One of the best ways for database cloning and one of the best DR solutions (using RMAN)
Informix
Sybase ASE 15 Cluster achieves the same thing as Oracle RAC
provides ASE in memory database
Sybase has the best replication solution, which out performs Oracle's Data guard
TeraData is a
networked/distributed DB platform since birth
DB2 works very well with IBM’s pSeries/Power server running AIX HACMP(High Availability Cluster Multiprocessing), and Veritas VCS/Sun Cluster
MS Access (see table 2) MySQL Cluster claimed higher
TPC-C performance benchmarks than Oracle RAC
cluster uses an in-memory storage engine
cluster also supports adding nodes to the cluster with all nodes being active, but it is a share nothing cluster. More nodes mean more copies of databases, more storage and more network traffic for data replication among all nodes in the cluster.
provides shared nothing cluster, which basically is synchronous replication among all active nodes. And its asynchronous replication also supports at the transaction and object level
PostGreSQL SQLite or eXtremeDB
6
Table 2: Microsoft Access analysis
Access Advantage Disadvantage
Concurrent Users
Access was designed to operate on a network. Microsoft says that the latest version will support 255 concurrent users, however in practice it is
recommended a comfortable limit of 15 to 20 simultaneous users.
it is a more practical choice to select Access when the database will be used by only 15 to 20 simultaneous users. If more than 20 users try to gain access to the database, performance and response time may begin to suffer
Multiple Windows Operating Systems
Whenever various Windows operating systems like Windows 98, Windows ME, Windows 2000, Windows XP, or Windows Vista are used to access the same database, the database may experience corruption issues. It is recommended that all Access users are operating with the identical operating system.
Novice User – Design and Development
One can use Microsoft Access for Rapid Application Development thus keeping costs down. Its object oriented model means it can build attractive, functional and easy to use applications in double-quick time.
A new user to software development may find that they are a bit overwhelmed when using MS Access. In order to maximize the potential of Access, a thorough understanding of relational database design along with VBA coding is highly recommended. As with any software development tool, the ease of screen use, database performance, automation of data input, and report quality relies on the skill level and experience of the developer
Sensitive Data Needs/Security
If sensitive data needs are required like storing health and medical records, financial information, academic records or employment data, for example, it will require more extensive database security than Access can offer
Internet Access (2000 and later version) has close web links so online data access is made easier. With a shift towards e-commerce, Access’s web integration could prove very useful, if not now, then sometime in the near future.
Microsoft Access does have a few limitations. Access was not designed to be used with applications that are web based since its forms and reports are only functional in a Windows environment and are not compatible with an internet browser like Internet Explorer. The Access Jet database that is used by Microsoft Access is a file based system and does not contain the server features that are available in SQL Server, Oracle or other ODBC compliant databases. Access databases are more suited for web based solutions when the number of users is small or when the users are just viewing data rather than editing or deleting
OS Access Database has that familiar Windows ‘look and feel’. MS Access is one of the best-selling desktop databases of all time. As such the future support is ensured, and with Microsoft’s backing it should be around for some time.
Unfortunately, Microsoft Access is not designed to operate on Apple Macintosh computers. Since Access is commonly used in many businesses that use PC’s, Microsoft does not have any future plans to expand the database to be functional on a Mac
Cost The key advantage of Access Database is it comes packaged with Microsoft Office Professional - already be part of the SOE.
Benefits Flexibility is the key with Access. Knowing that not everyone is skilled at making databases, Microsoft created basic templates that a user can go and use immediately. However, a database can be built from scratch or the templates can be tweaked as needed to fit needs. Rather than inputting each record every time a project is started, Access holds thousands of records for revisit whenever needed, making it a time-saver, too. This is great because not only is the information there, but it can be used alongside other Microsoft programs such as Word. Simply create a mail merge with thousands of letters and join it together with the Access database. All contacts will be pulled from Access and dumped into each letter separately. Interaction between MS Outlook is possible too: Import contacts from MS Outlook contact book into Access or export contact information in Access and save it as a contact in Outlook.
Scalability Access has an upgrade path. So, if performance starts to suffer from an ever increasing number of users or records, it can be upsized to SQL Server.
7
Based on the survey conducted and the options provided by available platforms to undertake this project, the first pick was a backend SQL database running multiple T-SQL statements with a user-friendly frontend VB, but with constraint of time and compelling handiness as much as possible with not much disfavor to those necessary inputs as provided by the need of the client (The Cape Hotel), MS Access was deemed suitable for the implementation of the project.
8
3. Requirements and Analysis
3.1 Problem Definition:
The Cape hotel has two systems for storing and gathering information upon reservation and other requests. Due to ambiguity and cumbersomeness of their systems in use, they desire a more robust system to alleviate the complexity of working with a manual and half electronic automated system for the production of desirable results. The system will store details about guest, make booking of available rooms, price calculation and make billing report.
3.2 System Analysis:
A meeting with the HR manager (Victor Whitfield) of the Cape Hotel to find out the inner working of his system was scheduled. To get more information about his current systems and procedures, questions asked where:
Question: What system do you use for managing your hotel regarding room reservation and billing and the related?
Victor: We have an Excel spreadsheet with all the booking. We print it and manually
shade with a highlighter to book room/dates and monitor.
Question: So, there isn’t an automated system for doing what you’ve just explained? Victor: We do have the Omega system but we don’t use it for that purpose. We use it for
acquiring bills from the other terminals for grand totaling.
Question: Why are you not using a system you’ve purchased to do the work in a more simplified manner?
Victor: I meet the system here, and no one actually said anything about how efficiently
the system must be handled. I was told that only the billing aspect of the software was in use before my incumbency.
Question: How are booking done?
Victor: We most times get booking by emails, and at times phone calls. As per the date in
9
and based on the information available we inform guests on available types of rooms, pricing, and if not, then the future available dates of vacant rooms.
Question: How are booking cancellation done?
Victor: The merged Excel cells are unmerged upon cancellation, and the already printed
sheets are remerged with white-off.
Question: It seems a bit of a headache but considering what you’ve just explained, have you ever experienced a time where complications or humanly errors with booking or cancelation occured?
Victor: Very often. At times if cancellation is done on the spreadsheet by the receptionist
and not followed up to be changed in the excel sheet. We do over-book or misinform guest with no vacant rooms. The most difficult task is tracing dates of all future available rooms.
Question: How do you create invoices or bills for guests?
Victor: We tabulate all bills from other service points, sum from excel spreadsheet total
days, and use our QuickBooks system to print out invoices.
Question: As the HR manager, what is your own level of proficiency with computers and peripherals and that of other staff at front-desk and terminals?
Victor: I am an advanced computer user, and the rest of the front-desk staff are all
computer basics for the minimal.
Question: What are the computer devices and accessories you have here?
Victor: As you can see, this office has two desktop PCs (HR and Finance Managers) and
these HP printers are inter-networked between my computer and the finance manager. The front-desk has a desktop PC and a printer. And the restaurant has a desktop PC for entering data via the Omega.
Question: What operating systems are you using on your computer? Victor: We have Windows XP on our computers.
Question: What do you have in your budget for the new system to be implemented, if I should want to know?
Victor: I can’t say much but I can assure you that we run under a $5,000.00USD budget
10
Question: So, you’ll be moving in a new building by June. How long will the process of moving out take?
Victor: Two weeks definite.
3.2.1 Cape Hotel system at the moment runs as follows:
- Reservations are done via email or phone call to the front-desk and the details are entered either into a manual chart and later updated into the excel spreadsheet. - Cancellations are made by whiting out the colored-merged cell and unmerging
merged cell in the spreadsheet.
- Room preparation instructions for the room to be made ready daily are hand written with the information gained from the chart.
- Customer bills are calculated from multiple sources.
3.2.2 Problems faced with system at Cape Hotel
- Searching for available rooms can be time consuming. - Rooms could be booked twice.
- Issuing of the days instruction is prone to mistake (eg: room cleaning). - Changes are hand correct and follow up to be updated which is also prone to
mistake by forgetfulness.
11
3.3 Planning and Scheduling
Table 3: Simulated Gnatt chart
ID Task Procedures Duration wk1 wk2 wk3 wk4 wk5 Wk6 Wk7 Wk8 Wk9 Wk10 1 Begin project
2 Survey 1 - 6 3days
3 Phase1 –Forms dev. 2days
4 Phase2 –Table creation 4days
5 Phase3 –Coding/link entities 8days
6 Phase4 –Creating validation 2days
7 Phase5 –integrating forms 1day
8 Phase6 –Testing validation 6days
9 Phase7 –Debugging errors 14days
10 Phase8 –Creating queries 3days
11 Phase9- Testing validation 6days
12 Phase10-Modifying queries 2days
13 Phase11-Debug SQL statements 5days
14 Phase12-Creating Report design 1day
15 Phase13-coding (SQL & VB) 8days
16 Phase14-overall integration 5days
17 Phase15-overall debugging 4days
18 Phase16-modification (CUI/GUI) 1day
19 Phase17 Integrated Testing 5days
20 Phase18: Modification to suite spec 4days
21 Phase19: Testing and debugging 5days
12
3.4 Software and Hardware Requirements:
Hardware Requirement: (minimum)3.4.1 Computer
500 MHz processor or more
512 MB RAM
Drive CD-ROM or DVD drive
300 MB of available hard-disk space.
Display 1024x576 or higher resolution monitor
Graphics hardware acceleration requires a DirectX 9.0c graphics card with 64 MB or more video memory.
3.4.2 Printer
Any Deskjet or LaserJet printer would do (the HP LJ1008 already in place
would work perfectly)
3.4.3 Software Requirement:
Microsoft Windows XP SP3 (32bits)
Microsoft Access 2003/2007/2010
Microsoft .NET Framework 3.5
MSXML 6.0
13
3.5 Preliminary Product Description
The new hotel reservation system should be able to meet the following requirements:
keep the records of the guests and the room booked to them
the system should be able to ease the cancellation of bookings made earlier
guest should be able to know the availability of the rooms on a particular date.
the record of food and services availed to the customer should be kept.
the system should be able to generate the bill for a customer who wants to checkout.
3.5.1 End users requirement
reduction in paperwork and other resources needed
production of reports and lists
easy to use
faster means of booking and cancellation
store records on all customer orderly for easy access
produce accurate bills
single clicking in system rather than double clicking
This MS Access hotel database management system would require user with a minimum knowledge of computer basic in Microsoft Office Suite. Front-desk, restaurant, and business (accounts) offices are the three (3) interactive users of the system.
User will decrypt database upon program startup and then be able to make data entry, information inquiry or report printing. The entire system is menu driven and provides easy-to-use functionality.
3.5.2 Hotel information
Guests are billed by per person on pay-per night basis (24 hours)
There are 5 types of rooms available and 2 conference rooms.
The hotel has two sections with 3 floors including penthouse suites.
All rooms have a safe box for valuables, phone line, TV, but Internet access, satellite TV, game console, and Crib (available in family suites only) has to been requested due to additional cost.
14
1 penthouse suite (room #200) 7 junior suites (room #191 - #197) 10 double suites (room #170 - #180) 15 family suite (room #151 - #165) 42 single suites (room #101 - #142) 2 conference rooms (room #11 & #22)
Table 4: Pricing chart:
R
oo
m
s Single Family $150.00 $350.00 Meal options Breakfast $15.00
Double $300.00 Full meal $30.00
Junior $275.00
Penthouse $700.00 Other options
Satellite TV $10.00/night
Conference Executive $50.00/hr Gaming console $7.00/night
Junior $30.00/hr Internet $5.00/night
Crib $10.00/night
Service staff $10.00/hr
15
3.6 Conceptual Models:
The system with act a mediatory role between guest request and front-desk (receptionist) in the process of providing rational information based on stored data.
Guests will be afforded provision to make booking(s) and based on availability of request they will also be able to make booking, and on a later date due to reasons best known to guest also be able to request cancellation of booking make.
The front-desk is left with the rest of the task, to query for information to make wise decision based on the request of guest. Booking will be done if provisions are met. Cancellation will be made if guest finds it unnecessary to buy the services, and checking-in of new guest and checkchecking-ing-out of guest after expiration of stay will be done by the front-desk.
The internal process provides booking, check-in, and check-out information to front-desk based on guests’ request or inquiry.
16
3.6.1 System flowchart:
Figure 1: ER diagrams
17
4. System Design
4.1 Data Design
4.1.1 Integrity and Constraints
The system is going to be menu driven will backend data into a database inform of tables. See table below:
Table 5: Data Dictionary
Field Name Data type
CustomerName Text Address Text PostCode Text TelephoneNo Text BookingID AutoNumber Arrival Date/Time Checkout Date/Time RoomNo Number PricePerNight Currency
RoomType Drop Down menu
Crib Yes/No SatelliteTV Yes/No GamesConsole Yes/No InternetAccess Yes/No Breakfast Yes/No FullMeals Yes/No
PaymentMethod Drop Down menu CreditcardNo Test
CreditCardExpdate Date/Time
These are attributes identified for the implementation of the system table structure, but first we will have to normalize this structure for efficiency and redundant alleviation; yet setting a defined relationship with normalized entities.
Field Name Data type
CustomerName Text
Address Text
PostCode Text TelephoneNo Text
18 BookingID AutoNumber
Arrival Date/Time Checkout Date/Time RoomType Drop Down
menu CribRequired Yes/No SatelliteTV Yes/No GamesConsole Yes/No InternetAccess Yes/No Breakfast Yes/No FullMeals Yes/No PaymentMethodID AutoNumber PaymentMethod Drop Down
menu CreditcardNo Test CreditCardExpdate Date/Time RoomNumber Number RoomType Text PricePerNight Currency
4.1.2 Normalization of entities
Additional attributes were derived to make the tables more meaningful which includes the smallest of its attributes, for example the address attribute is broken down in address line 1, address line 2, and Town.
Table 6: Customer
Field Name Data Type Field Size/Key
CustomerID Auto Number Primary Key
FirstName Text 50
Lastname Text 50
AddressLine1 Text 50
AddressLine2 Text 50
Town Text 50
PostCode Text [input mask] (10)
Telephone Text [input mask] (10)
CreditCardNumber Number Foreign Key
PaymentMethod Text 50
Booking Table
Payment Method Table
CreditCard Table
19
Table 7: Booking
Field Name Data Type Field Size/Key
BookingID Auto Number Primary Key
Arrival Date/Time (short date) NA
Checkout Date/Time (short date) NA
CustomerID Number Foreign Key
RoomNumber Number Foreign Key
CribRequired(nights) Number NA
SatelliteTVRequired (nights) Number NA
GamesConsoleRequired(nights) Number NA InternetRequired(nights) Number NA HoursRequire Number NA StaffRequired Number NA BreakfastRequired Number NA FullMealsRequired Number NA
PaymentMethod Text Foreign Key
Table 8: Credit card
Field Name Data Type Field Size/Key
CreditCardNumber Text Primary Key (25)
ExpiryDate Text Short date (6)
CardHolderName Text 50
Table 9: Rooms
Field Name Data Type Field Size/Key
RoomNumber Number Primary Key
RoomType Text [combo box] ["Single";"Double";"Junior";"Family";"Pen thouse";"Conference"
PricePerNight Currency NA
CribAvailible Yes/No [check box] NA
SatelliteAvailible Yes/No [check box] NA
GamesConsoleAvailible Yes/No [check box] NA
InternetAvailible Yes/No [check box] NA
Table 10: Payment Method
Field Name Data Type Field Size/Key
PaymentMethodID Auto Number Primary Key (25)
20
Table 11: Validation
Table Field Name Validation rule Validation text
Booking Arrival Not Between #01/06/12#
And #15/06/12# *
“Hotel is close until relocation is over”
* The HR manager did talk about the hotel closure for relocation the first 2 weeks in June 2012
Table 12: Input (using input masks)
Table Field Name Validation rule Place holder
Customer PostCode >LL00\ 0LL;;_ _
Customer Telephone \(9999)”999999;;_ _
Table 13: Queries
Table Criteria Fields & table to include Reports
produced
Rooms Reserved PARAMETERS [Please enter arrival date] DateTime, [Please enter checkout date] DateTime;
SELECT Booking.Room, Booking.Arrival,
Booking.Checkout FROM Booking WHERE ((Booking.Arrival) Between [Please enter arrival date] And [Please enter checkout date]-1)) Or ((([Checkout]-1) Between [Please enter arrival date] And [Please enter checkout date])) Or
((Booking.Arrival)<[Please enter arrival date]) And (([Checkout]-1)>[Please enter checkout date]-1));
Booking No Checks room availability (uses Rooms Reserved Query SELECT Rooms.RoomNum FROM Rooms LEFT JOIN [Rooms Reserved] ON Rooms.RoomNum=[Rooms Reserved].Room WHERE
((([Rooms Reserved].Room) Is Null));
Rooms table & Rooms Reserved query
No
Rooms Available and Room type
None (combines Rooms
Available query and Rooms table
Rooms table and Rooms Available
No Invoice details for a
report
of Staff, Breakfast, Set Meals, Arrival, Checkout
Booking, Rooms
Credit Card Number, FirstName, Surname, Address line 1, Address line 2, Town, Postcode, Telephone Number, Booking ID,
21
Customer Number, Room Num, PricePerNight, Crib, Satellite TV, Games console and game hire, Internet Access, , Number of hours needed, Number
Which rooms need cleaning or preparing for new guest
Arrival=Date() Bookings, Rooms
Room type, Arrival, RoomNum
Yes
Which rooms need cleaning for guest departure
Checkout=Date() Bookings, Rooms, Room
type, checkout, Room Num
Yes
Daily Room Clean Bookings, Rooms
RoomNum, Room Type, Arrival, Checkout
Yes
Rooms Query (shows the features available in the room
RoomNum [Enter Room Number]
Rooms
RoomNum,Type,Intenret,Cot, meals,
Breakfasts, games console, satalite
4.1.3 Entity Relationship Diagram (ER Diagram)
Rooms RoomNumber RoomType PricePerNight CribAvailable SataliteTVAvailable GamesAvailalable InternetAvaliable Booking BookingID Arrival Checkout CustomerID RoomNumber CribRequired SatelliteRequired GamesRequired InternetRequired HoursRequired ServiceStaffRequired FullMeals Breakfast PaymentMethod Customer CustomerID FirstName SurName AddressLine1 AddressLine2 Town PostCode Telephone CreditCardNumber PaymentMethodID CreditCard CreditCardNumber Expiry Date CardHolderName PaymentMethod PaymentMethodID PaymentMethod Legend Primary Key Foreign Key
22
4.1.4 Functional Dependencies
The Entity Relationship diagram above depicts the following:
1. that In all tables attribute values are atomic, each with their own primary key necessarily making it into first normal form(1NF)
2. all tables have no partial dependency and in that a relationship was created between tables employing foreign keys to put them in the second normal form (2NF), yet with a transitive dependency amongst the Customer, Booking, and Payment Method tables.
3. There is a transitive dependency between PaymentMethod and booking tabled , so they are NOT in 3NF.
4. All tables are also in BCNF because all FDs contain only primary key (which is of course superkey) corresponding to their respective relation.
23
4.2 Basic Modules:
4.2.1 Form prototype
Database structure main menu Hotel Logo Check room availability Add new customer record Exit button Add credit card information Booking/ reservation Reports: -daily cleaning -rooms for cleaning -invoices, etc Booking Form24 4.2.1.1 Startup main menu
Hotel Logo
Reports Exit
Check Room Availability
Command buttons
View/ Add Customer Records
View/ Add Credit Card Records View/ Add Booking
25 4.2.1.2 Check Room Availability Form
Room Availability
List box (From the rooms and room type query – displays the
rooms and types/ according to date entered in query)
For caption/ title bar
System scrollbar
26 4.2.1.3 View/ Add Customer Record Form
Customer Details First Name Last Name Address Line 1 Address Line 2 Town/City Postcode Telephone Payment Method Credit Card Type
Add Customer Go to Booking
ID:
To Add a new customer, click 'Add Customer' Button. To delete a customer, press the button with the rubbish bin on. To Navigate the Customer Records, use the arrows to cycle through.
Instructions (label) – visible on screen
Navigation buttons (to flip between records)
Delete button (Deletes current customer record)
Creates new Booking (add new record)
Combo box (shows credit card numbers)using lookup wizard Combo box (shows payment method : “Cash” or “Credit card”). It also enables the credit card combo button if payment method = “creditcard”
27 4.2.1.4 View/ Add Credit Card Record Form
4.2.1.5 View/ Add Booking Form Delete current record
Credit Card Entry Form
To Add a new Credit Card, click 'Add Credit Card' Button. To delete a Credit Card, press the button with the rubbish bin on. To Navigate the Credit Cards, use the arrows to cycle through.
Card Number Expiry Date Card Holders Name
Add Credit card Navigation bottom Onscreen instructions Add new credit card record button Instructions (label) – visible on screen Booking Form Arrival Checkout Room Customer ID
No. of NightsCrib Required No. of Satellite Required No. of Game Required
mm/dd/yyyy mm/dd/yyyy 101 24 0 Room Availability
To Create a new Booking, click on the 'New Booking' Button below. To Delete the current Booking, click the rubbish bin button. To navigate the bookings, click the arrows to cycle through the bookings 0 0 Features Available in Rooms Command button to run Room availability form
28
Notes on Booking form:
1. Room: Drop down combo box (Lookup wizard) showing the Room Number, Room type and Price Per Night (from the Rooms table).
2. Customer ID: Drop down or combo box (Lookup wizard) showing the Customer ID, First Name, Last Name and Postcode (from the Customer table). This enables the user to easily see which customer they are using. (the other details are hidden once the Customer number is selected).
3. Payment Method: Drop down combo box (Lookup wizard) allows the payment type “Cash” or “CreditCard” to be entered in the payment method table.
29
Most of the data entries fields have help text (controlTip Text), so that when the user hovers the pointer over an icon/button, a brief description is displayed as tip.
4.2.1.6 Invoice Design
Table 14: Query to get the Report Query
Description
Criteria Fields & table to include Reports
produced
Invoice RoomNumber =
[Enter Room Number]
Checkout = date()
SELECT Booking.Arrival, Booking.Checkout, Rooms.RoomNum, Rooms.RoomType, Rooms.PricePerNight, Booking!Checkout- Booking!Arrival AS NoOfNights, [NoOfNights]*Rooms!PricePerNight AS AccomodationCost,Booking![SataliteRequired(ni ghts)]*10 AS SatelliteTV, Booking![GamesRequired(nights)]*7 AS GamesConsole, Booking![InternetRequired(nights)]*5 AS Internet, Booking![CribRequired(nights)]*10 AS Crib, Booking!FullMeals*30 AS FullMeal, Booking!Breakfast*15 AS Breakfast, [AccomodationCost]+[SatelliteTV]+[GamesConsol e]+[Internet]+[Crib]+[FullMeal]+[Breakfast]*0 .07 AS TotalVAT FROM Rooms INNER JOIN Booking ON Rooms.RoomNum = Booking.Room
WHERE (((Booking.Checkout)=Date()) AND ((Rooms.RoomNum)=[Enter Room Number]));
Yes
4.2.1.7 Design of the report form
Customer Invoice
Hotel Logo
Arrival: mm/dd/yyyy Checkout: mm/dd/yyyy
Room:
Room No : xx Room Type: xxxx
Room Price /night : xx No. of nights stayed : xx
Accommodation cost: xx Services upon request:
Satellite TV : xxxx GameConsole: xxxx Internet : xxxx
30 4.2.1.8 Queries Reports
Query Layout
Daily Room Cleaning Columnar (sorted ascended by room date) Rooms to Prepare for Guests
arriving
Columnar (sorted ascended by room date)
Rooms to Prepare for Guests leaving
31
4.3 User Interface Design:
The design provides use a group of buttons driven by event handlers to ease transactions within the system. The database is mapped to the desktop of the user(s) computer. It requires a user’s name and password (as provided by the database administrator – which can be created in the ‘Users and permission’ tab of MS Access) to decrypt the database for interaction.
When user name and password is authenticated, and second screen requesting database password with prompt user:
Upon authentication with then the main menu is displayed. See on next page:
User name and password authentication window
32
4.3.1 Main menu
33 4.3.1.1 Room availability form
The criteria set for the provision of this form would require the arrival and checkout dates of guest to determine consistency in avoiding over-booking.
Parameter prompt input boxes:
Arrival date checkout date
Certifying the input criteria above would render the available rooms as shown below:
Command buttons: linking different forms
Quit button: Exit with saving
34
The rooms
displayed is based on the dates Input as in this case 12/03/12 and 13/04/12)
35 4.3.1.2 Customer form 4.3.1.3 CreditCard form Booking form Customer ID number Onscreen instructions Shortcut button back to Booking form Navigate between records buttons
Add new record button Delete existing record
button
Onscreen instructions
Navigate button to view existing details Add new credit card
detail button Deleted credit card button
Command button to check availability of rooms (see Room
36 4.3.1.4 Features available in room table
User is prompted to input room in question to proving a list of available features. Feature could also be added from same table upon request.
Combo box to select payment method: ‘Cash’ or ‘Creditcard’
Command button resets displayed details to allow new input data. It store new input when clicked
Command button to delete already stored data in database relating to booking. Let’s call it cancelation
Room 170 available features:
Room 170 was validated for query
37 4.3.1.5 Report forms
Command button for various forms
38
4.3.2 Entity Relationship Diagram (ERD)
39
Total cost for nights stayed
Breakdown cost for other services Total (accommodation + services) Grand total 7% GST total
40 Room type and number Guest check out date Guest check in date
41 Date of arrival Room type Room number
43
4.4 Security Issues:
4.4.1 User Identification
This project runs very minimal on high-level security provision based on the scope of operation of the client and its operational size.
The database is password encrypted and decryption is done when a valid password is entered.
4.4.2 Network Access
Same password policy applies to network used except the source database is shared with the attribute ‘$’ making it invincible to network user. The database source is subsequently mapped to specific users’ desktops.
4.4.3 Recovery
An automatic backup will be schedule for a daily differential backup to an external hard disk or network disk.
4.4.4 Malware and Intrusion
A recommendation for a robust antivirus and spyware application will be deployed. Example Kaspresky 2011, and or Microsoft Security Essential.
44
5. Implementation and Testing
Due to the highly unstructured nature of the project, it was indeed difficult to run smoothly with the implementation phase. The debugging and test of codes which practically took most of the time estimated ran ‘top-down’.
5.1 Coding:
Here included are queries (SQL statement) and coding (VB) implementing workability in the database:
5.1.1 Forms:
Form_Booking
Option Compare Database
Private Sub Command22_Click() On Error GoTo Err_Command22_Click
'declaring modular variables
Dim stDocName As String Dim stLinkCriteria As String
'wizard decleared: button that opens a Rooms Available form
stDocName = "Rooms Available"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command22_Click: Exit Sub Err_Command22_Click: MsgBox Err.Description Resume Exit_Command22_Click End Sub
Private Sub Command26_Click() On Error GoTo Err_Command26_Click
45
stDocName = "Rooms Query"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command26_Click: Exit Sub Err_Command26_Click: MsgBox Err.Description Resume Exit_Command26_Click End Sub
Private Sub Delete_Record_Click() On Error GoTo Err_Delete_Record_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Delete_Record_Click: Exit Sub Err_Delete_Record_Click: MsgBox Err.Description Resume Exit_Delete_Record_Click End Sub
Private Sub Command32_Click() On Error GoTo Err_Command32_Click
DoCmd.GoToRecord , , acNewRec Exit_Command32_Click: Exit Sub Err_Command32_Click: MsgBox Err.Description Resume Exit_Command32_Click End Sub
Private Sub Command33_Click() On Error GoTo Err_Command33_Click
DoCmd.GoToRecord , , acNext Exit_Command33_Click: Exit Sub Err_Command33_Click: MsgBox Err.Description Resume Exit_Command33_Click End Sub
Private Sub Command34_Click() On Error GoTo Err_Command34_Click
46 DoCmd.GoToRecord , , acPrevious Exit_Command34_Click: Exit Sub Err_Command34_Click: MsgBox Err.Description Resume Exit_Command34_Click End Sub
Private Sub Command45_Click() On Error GoTo Err_Command45_Click
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "Menu"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command45_Click: Exit Sub Err_Command45_Click: MsgBox Err.Description Resume Exit_Command45_Click End Sub
Private Sub Command52_Click() On Error GoTo Err_Command52_Click
'to reset all inputs on the form
Dim ctlC As Control
For Each ctlC In Me.Controls
If ctlC.ControlType = acTextBox _
Or ctlC.ControlType = acComboBox Then ctlC = Null Next ctlC DoCmd.RunCommand acCmdRefresh Exit_Command52_Click: Exit Sub Err_Command52_Click: MsgBox Err.Description Resume Exit_Command52_Click End Sub
47
5.1.2 Form_CreditCard
Private Sub Command7_Click() On Error GoTo Err_Command7_Click
DoCmd.GoToRecord , , acNewRec Exit_Command7_Click: Exit Sub Err_Command7_Click: MsgBox Err.Description Resume Exit_Command7_Click End Sub
Private Sub Command8_Click() On Error GoTo Err_Command8_Click
DoCmd.GoToRecord , , acNewRec Exit_Command8_Click: Exit Sub Err_Command8_Click: MsgBox Err.Description Resume Exit_Command8_Click End Sub
Private Sub Command9_Click() On Error GoTo Err_Command9_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Command9_Click: Exit Sub Err_Command9_Click: MsgBox Err.Description Resume Exit_Command9_Click End Sub
Private Sub Command10_Click() On Error GoTo Err_Command10_Click
DoCmd.GoToRecord , , acPrevious
Exit_Command10_Click: Exit Sub
Err_Command10_Click:
48
Resume Exit_Command10_Click
End Sub
Private Sub Command11_Click() On Error GoTo Err_Command11_Click
DoCmd.GoToRecord , , acNext Exit_Command11_Click: Exit Sub Err_Command11_Click: MsgBox Err.Description Resume Exit_Command11_Click End Sub
5.1.3 Form_Customer
Private Sub AddressLine2_BeforeUpdate(Cancel As Integer)
End Sub
Private Sub Combo29_BeforeUpdate(Cancel As Integer)
'to enable and disable payment method combo method
If Combo29.Value = "Cash" Then Combo24.Enabled = False
Else: Combo24.Enabled = True
End If
End Sub
5.1.4 Form_Menu
Private Sub Command1_Click() On Error GoTo Err_Command1_Click
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "Rooms Availabe"
DoCmd.OpenForm stDocName, , , stLinkCriteria
49 Exit Sub Err_Command1_Click: MsgBox Err.Description Resume Exit_Command1_Click End Sub
Private Sub Command5_Click() On Error GoTo Err_Command5_Click
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "Customer"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command5_Click: Exit Sub Err_Command5_Click: MsgBox Err.Description Resume Exit_Command5_Click End Sub
Private Sub Command7_Click() On Error GoTo Err_Command7_Click
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "CreditCard"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command7_Click: Exit Sub Err_Command7_Click: MsgBox Err.Description Resume Exit_Command7_Click End Sub
Private Sub Command11_Click() On Error GoTo Err_Command11_Click
DoCmd.Quit Exit_Command11_Click: Exit Sub Err_Command11_Click: MsgBox Err.Description Resume Exit_Command11_Click End Sub
Private Sub Command13_Click() On Error GoTo Err_Command13_Click
50
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "Reports"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command13_Click: Exit Sub Err_Command13_Click: MsgBox Err.Description Resume Exit_Command13_Click End Sub
Private Sub Command14_Click() On Error GoTo Err_Command14_Click
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "Booking"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command14_Click: Exit Sub Err_Command14_Click: MsgBox Err.Description Resume Exit_Command14_Click End Sub
5.1.5 Form_Report
Private Sub Command0_Click() On Error GoTo Err_Command0_Click
Dim stDocName As String
stDocName = "Daily Room Cleaning" DoCmd.OpenReport stDocName, acPreview
Exit_Command0_Click: Exit Sub Err_Command0_Click: MsgBox Err.Description Resume Exit_Command0_Click End Sub
51
On Error GoTo Err_Command2_Click
Dim stDocName As String
stDocName = "Rooms to Prepear for guests arriving" DoCmd.OpenReport stDocName, acPreview
Exit_Command2_Click: Exit Sub Err_Command2_Click: MsgBox Err.Description Resume Exit_Command2_Click End Sub
Private Sub Command4_Click() On Error GoTo Err_Command4_Click
Dim stDocName As String
stDocName = "Rooms to Prepear for guests leaving" DoCmd.OpenReport stDocName, acPreview
Exit_Command4_Click: Exit Sub Err_Command4_Click: MsgBox Err.Description Resume Exit_Command4_Click End Sub
Private Sub Command6_Click() On Error GoTo Err_Command6_Click
Dim stDocName As String Dim stLinkCriteria As String
stDocName = "Menu"
DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command6_Click: Exit Sub Err_Command6_Click: MsgBox Err.Description Resume Exit_Command6_Click End Sub
Private Sub Command6_Exit(Cancel As Integer)
End Sub
Private Sub Command9_Click() On Error GoTo Err_Command9_Click
52
stDocName = "Invoice"
DoCmd.OpenReport stDocName, acPreview
Exit_Command9_Click: Exit Sub Err_Command9_Click: MsgBox Err.Description Resume Exit_Command9_Click End Sub
5.1.6 Form_Room Available
Private Sub Command3_Click() On Error GoTo Err_Command3_Click
DoCmd.Close Exit_Command3_Click: Exit Sub Err_Command3_Click: MsgBox Err.Description Resume Exit_Command3_Click End Sub
5.1.7 Queries:
Query Creteria SQL Code
Booking SELECT Booking.[Booking ID], Booking.Arrival, Booking.Checkout, Booking.RoomNum, Booking.CustomerID, Booking.[CribRequired(nights)], Booking.[SataliteRequired(nights)], Booking.[GamesRequired(nights)], Booking.[InternetRequired(nights)], Booking.HoursRequired, Booking.ServiceStaffRequired FROM Booking; Daily room cleaning
Date() SELECT Booking.Arrival, Booking.Checkout,
Booking.RoomNum, Rooms.RoomType
FROM Rooms INNER JOIN Booking ON Rooms.RoomNum = Booking.[RoomNum]
53
Rooms to clean when guest leaves
Date() SELECT Rooms.RoomNum, Rooms.RoomType,
Booking.Checkout
FROM Rooms INNER JOIN Booking ON Rooms.RoomNum = Booking.[RoomNum]
WHERE (((Booking.Checkout)=Date()));
Rooms to clean upon guest arrival
Date() SELECT Booking.Arrival, Booking.RoomNum,
Rooms.RoomType
FROM Rooms INNER JOIN Booking ON Rooms.RoomNum = Booking.[RoomNum]
WHERE (((Booking.Arrival)=Date()));
Invoice Date(),[Enter the Room number]
SELECT Booking.Arrival, Booking.Checkout, Rooms.RoomNum, Rooms.RoomType, Rooms.PricePerNight, Booking!Checkout-Booking!Arrival AS NoOfNights, [NoOfNights]*Rooms!PricePerNight AS AccomodationCost, Booking![SataliteRequired(nights)]*10 AS SatelliteTV, [Booking]![GamesRequired(nights)]*7 AS GamesConsole, Booking![InternetRequired(nights)]*5 AS Internet, [Booking]![CribRequired(nights)]*10 AS Crib, Booking!FullMeals*30 AS FullMeal,
[Booking]![Breakfast]*15 AS Breakfast,
[AccomodationCost]+[SatelliteTV]+[GamesConsole]+ [Internet]+[Crib]+[FullMeal]+[Breakfast]*0.07 AS TotalVAT
FROM Rooms INNER JOIN Booking ON Rooms.RoomNum = Booking.[RoomNum]
WHERE (((Booking.Checkout)=Date()) AND ((Rooms.RoomNum)=[Enter the Room number]));
Room available
Is Null SELECT Rooms.RoomNum
FROM Rooms LEFT JOIN [Rooms Reserved] ON Rooms.RoomNum = [Rooms Reserved].[RoomNum] WHERE ((([Rooms Reserved].RoomNum) Is Null));
Room available and room type
SELECT [Rooms Available].RoomNum, Rooms.RoomType FROM [Rooms Available] INNER JOIN Rooms ON [Rooms Available].RoomNum=Rooms.RoomNum;
Room Query [Enter the Room
number]
SELECT Rooms.RoomNum, Rooms.RoomType, Rooms.PricePerNight, Rooms.CribAvailable, Rooms.SataliteTVAvailable,
Rooms.GamesConsoleAvailable, Rooms.InternetAvailable FROM Rooms
WHERE (((Rooms.RoomNum)=[Enter Room Number]));
Rooms reserved
Between [Please enter arrival date] And [Please enter checkout date]-1, Between [Please enter arrival date] And [Please enter checkout date], <[Please enter arrival date], >[Please enter checkout date]-1
PARAMETERS [Please enter arrival date] DateTime, [Please enter checkout date] DateTime;
SELECT Booking.[RoomNum], Booking.Arrival, Booking.Checkout
FROM Booking
WHERE (((Booking.Arrival) Between [Please enter arrival date] And [Please enter checkout date]-1)) Or ((([Checkout]-1) Between [Please enter arrival date] And [Please enter checkout date])) Or (((Booking.Arrival)<[Please enter arrival date]) And (([Checkout]-1)>[Please enter checkout date]-1));
54
5.2 Switchboard:
This programmer user kit which allows program with the help of MS Office-embedded Visual Basic (VB) tools to create a Graphical User Interface (GUI) to include command buttons to drive the SAS session, connect to project directories, documents, forms, on-line help, etc. It, in short, reduces work and saves time by allowing flow of information within projects.
A basic advantage of using a switchboard in your project is that it groups similar tasks, which will give users a more organized and user-friendly interface. Depending on how much information is needed to present on the switchboard, there are several ways to group the tasks.
A switchboard not only provides programmers with handy-tools, and henceforth greatly improving efficiency, reducing workload of employees; but it also provides the project-related team with an information delivery kit, thus efficiently monitoring and delivering information amongst the team.
55
5.2.1 Switchboard codes:
Private Sub Form_Open(Cancel As Integer)
' Minimize the database window and initialize the form.
' Move to the switchboard page that is marked as the default. Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' " Me.FilterOn = True
End Sub
Private Sub Form_Current()
' Update the caption and fill in the list of options.
Me.Caption = Nz(Me![ItemText], "") FillOptions
End Sub
Private Sub FillOptions()
' Fill in the options for this switchboard page. ' The number of buttons on the form.
Const conNumButtons = 8
Dim con As Object Dim rs As Object Dim stSql As String Dim intOption As Integer
' Set the focus to the first button on the form, ' and then hide all of the buttons on the form
' but the first. You can't hide the field with the focus.
Me![Option1].SetFocus
For intOption = 2 To conNumButtons
Me("Option" & intOption).Visible = False Me("OptionLabel" & intOption).Visible = False Next intOption
' Open the table of Switchboard Items, and find ' the first item for this Switchboard Page.
Set con = Application.CurrentProject.Connection stSql = "SELECT * FROM [Switchboard Items]"
stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
stSql = stSql & " ORDER BY [ItemNumber];" Set rs = CreateObject("ADODB.Recordset") rs.Open stSql, con, 1 ' 1 = adOpenKeyset
' If there are no options for this Switchboard Page,
' display a message. Otherwise, fill the page with the items.
If (rs.EOF) Then
Me![OptionLabel1].Caption = "There are no items for this switchboard page"
56
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText] rs.MoveNext
Wend End If
' Close the recordset and the database.
rs.Close
Set rs = Nothing Set con = Nothing
End Sub
Private Function HandleButtonClick(intBtn As Integer)
' This function is called when a button is clicked. ' intBtn indicates which button was clicked.
' Constants for the commands that can be executed.
Const conCmdGotoSwitchboard = 1 Const conCmdOpenFormAdd = 2 Const conCmdOpenFormBrowse = 3 Const conCmdOpenReport = 4 Const conCmdCustomizeSwitchboard = 5 Const conCmdExitApplication = 6 Const conCmdRunMacro = 7 Const conCmdRunCode = 8 Const conCmdOpenPage = 9
' An error that is special cased.
Const conErrDoCmdCancelled = 2501
Dim con As Object Dim rs As Object Dim stSql As String
On Error GoTo HandleButtonClick_Err
' Find the item in the Switchboard Items table ' that corresponds to the button that was clicked.
Set con = Application.CurrentProject.Connection Set rs = CreateObject("ADODB.Recordset")
stSql = "SELECT * FROM [Switchboard Items] "
stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
rs.Open stSql, con, 1 ' 1 = adOpenKeyset
' If no item matches, report the error and exit the function.
If (rs.EOF) Then
MsgBox "There was an error reading the Switchboard Items table."
rs.Close
Set rs = Nothing Set con = Nothing Exit Function End If
57
Select Case rs![Command]
' Go to another switchboard.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rs![Argument]
' Open a form in Add mode.
Case conCmdOpenFormAdd
DoCmd.OpenForm rs![Argument], , , , acAdd
' Open a form.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rs![Argument]
' Open a report.
Case conCmdOpenReport
DoCmd.OpenReport rs![Argument], acPreview
' Customize the Switchboard.
Case conCmdCustomizeSwitchboard
' Handle the case where the Switchboard Manager ' is not installed (e.g. Minimal Install).
On Error Resume Next
Application.Run "ACWZMAIN.sbm_Entry"
If (Err <> 0) Then MsgBox "Command not available." On Error GoTo 0
' Update the form.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' " Me.Caption = Nz(Me![ItemText], "")
FillOptions
' Exit the application.
Case conCmdExitApplication CloseCurrentDatabase ' Run a macro. Case conCmdRunMacro DoCmd.RunMacro rs![Argument] ' Run code. Case conCmdRunCode Application.Run rs![Argument]
' Open a Data Access Page
Case conCmdOpenPage
DoCmd.OpenDataAccessPage rs![Argument]
' Any other command is unrecognized.
Case Else
MsgBox "Unknown option."
End Select
' Close the recordset and the database.
58
HandleButtonClick_Exit: On Error Resume Next Set rs = Nothing Set con = Nothing Exit Function
HandleButtonClick_Err:
' If the action was cancelled by the user for ' some reason, don't display an error message. ' Instead, resume on the next line.
If (Err = conErrDoCmdCancelled) Then Resume Next
Else
MsgBox "There was an error executing the command.", vbCritical Resume HandleButtonClick_Exit
End If