Sei sulla pagina 1di 142

COMPUTER AIDED DESIGN OF

LOW VOLUME ROADS

A DISSERTATION
Submitted in partial fulfillment of the
requirements for the award of the degree
of
MASTER OF TECHNOLOGY
in
CIVIL ENGINEERING
(With Specialization in Computer Aided Design)

By
GAJENDRA KUMAR VARSIINEY

DEPARTMENT OF CIVIL ENGINEERING


INDIAN INSTITUTE OF TECHNOLOGY ROORKEE
ROORKEE 247 667 (INDIA)
JUNE, 2007
CANDIDATE'S DECLARATION

I hereby declare that the work which is being presented in the dissertation entitled
"COMPUTER AIDED DESIGN OF LOW VOLUME ROADS" in partial fulfillment
of the requirement for the award of the degree of Master of Technology in Civil
Engineering with specialization in Computer Aided Design, submitted in the Department
of Civil Engineering, Indian Institute of Technology, Roorkee is an authentic record of my
own work carried out for a period of twe lve months from July 2006 to June 2007 under the
supervision of Dr. Praveen Kumar, Associate Professor, Department of Civil Engineering,
Indian Institute of Technology, Roorkee.

The matter embodied in this dissertation has not been submitted by me for the
award of any other degree or diploma.

Place: Roorkee

Date: 2 2 6 --o7 (GAJENDRA KUMAR VARSHNEY)

CERTIFICATE

This is to certify that the above statement made by the candidate is correct to the
best of my knowledge.

Dr. PRAVEEN KUMAR


Associate Professor
Transportation Engineering Section
Department of Civil Engineering
Indian Institute of Technology, Roorkee
Roorkee-247667 (India)
ACKNOWLEDGEMENT

I express my deep sense of gratitude and sincere thanks to Dr. Praveen Kumar,
Associate Professor, Department of Civil Engineering, Indian Institute of Technology
Roorkee, Roorkee for his expert guidance, keen interest and continuous encouragement
enabling me to bring my dissertation into present form.

I am grateful to my parents, friends and other well wishes, who form an important
part of my life, for their vicarious support and enthusiastic help, without which this work
might not have been in its present form.

Place: Roorkee
6 0.j.,,ctna

Date: 2 2 —0 -0 7 (GAJENDRA KUMAR VARSHNEY)

ii
ABSTRACT

Transport infrastructure plays a key role in the economic growth and development
of the country. Export, import, industry, agriculture, defense, social services, general
administration, maintenance of law and order, exploitation of resource, mobility of persons
and goods etc. are some of the many areas of activity which are very closely linked to the
availability of adequate transportation system. Among the available modes of
transportation, the transport by road is the most versatile one.

In India, any road carries less than 450 vehicles per day, called low volume road.
Low volume roads are categorized under tertiary road system, which consists of other
district roads (ODR) and village roads (VR). India has an essentially rural-oriented
economy with 74 per cent of its population living in its villages scattered all over the
country. Low volume road is not only the key component of rural development in India; it
is also recognized as an effective poverty reduction programme.

In the Low Volume Roads, a lot of data have to be analyzed to get optimum design
of pavement, overlay and other tasks. Hence a software package was required to be
developed to reduce the amount of work, by giving an option to the planner to use the
computer, which has been tried here in this dissertation work. The software developed in
this dissertation work can be used to perform following tasks of Low Volume Roads:

> Cost Comparison between Flexible and Rigid Pavement


> Pavement Design

• Flexible Pavement

• Rigid Pavement

> Overlay Design

• Benkelman Beam Method

• CBR Method

> Geometric Design — Super Elevation

> Rate Analysis

> Cost Estimation

iii
CONTENTS

CANDIDATE'S DECLARATION
ACKNOWLEDGEMENT ii
ABSTRACT iii
CONTENS iv
LIST OF FIGURES vii
LIST OF TABLES viii
1. INTRODUCTION 1
1.1. General 1
1.2. Need of study 1
1.3. Objective of study 2
1.4. Thesis structure 3
2. LITERATURE REVIEW 5
2.1. Definitions 5
2.1.1 Low volume roads 5
2.1.2. All weather and fair weather roads 6
2.1.3. Paved and unpaved Roads 6
2.2. Studies Carried Out Abroad 7
2.2.1. General 7
2.2.2. Design 8
2.3. Studies Carried out in India 9
2.3.1. General 9
2.3.2. Pradhan Mantri Gram Sadak Yojana 10
2.3.3. Programme objective 12
2.3.4. Features of the PMGSY 12
3. DESIGN ASPECTS OF LOW VOLUME ROADS 14
3.1. Pavement Design 14
3.1.1. Introduction 14
3.1.2. Design parameters 15
3.1.3. Pavements components 15

iv
3.2. Design of Flexible Pavement 19
3.2.1 Pavement thickness 20
3.2.2. Surfacing 20
3.3. Design of Concrete Pavement 20
3.3.1. Wheel load 21
3.3.2. Tyre pressure 21
3.3.3. Design life 21
3.3.4. Sub grade strength 22
3.3.5. Sub base 22
3.3.6. Concrete strength 22
3.3.7. Critical stresses 22
3.4. Overlay Design 26
3.5. Benkelman Beam Deflection Technique for Overlay Design 26
3.5.1. Procedure for deflection survey 26
3.5.2. Pavement condition survey 26
3.5.3. Deflection measurements 27
3.5.4. Vehicle damage factor 34
3.5.5. Overlay thickness design curve 35
3.6. CBR Method for Overlay Design 36
4. THE SOFTWARE PACKAGE 37
4.1. About Software 37
4.1.1. Salient features of the software 37
4.1.2. Working of the Software 38
4.2. Description of Menu options 38
4.2.1. Cost comparison 39
4.2.2. Pavement design 40
4.2.3. Overlay design 40
4.2.4. Project preparation 41
4.2.5. Geometric design 42
4.3. Conversion of Curves and Tables in to Mathematical Form 43
4.4. Advantage of the Software 49
4.5. Source Code of the Software 49
5. APPLICATION AND VERIFICATION OF THE SOFTWARE 50
5.1. General 50
5.2. Pavement Design 50
5.2.1. Flexible pavement design 50
5.2.2. Rigid pavement design 51
5.3. Overlay Design 52
5.3.1. Overlay design by Benkelman beam method 52
5.3.2. Overlay design by CBR method 55
5.4. Super Elevation Design 57
6. CONCLUSIONS AND RECOMMENDATIONS 58
6.1. Conclusions 58
6.2. Recommendations 59
REFERENCE 60
APPENDIX (SOURCE CODE OF THE SOFTWARE) 63

vi
LIST OF FIGURES

Fig No. Title Page No.

3.1. Moisture correction factor for sandy/gravelly soil subgrade for low rainfall
areas (Annual rainfall 1300 mm) 29

3.2. Moisture correction factor for sandy/gravelly soil subgrade for high rainfall
areas (Annual rainfall > 1300 mm) 30

3.3. Moisture correction factor for clayey subgrade for low plasticity (PI<15) for
low rainfall areas (Annual rainfall 1300 mm) 30

3.4. Moisture correction factor for clayey subgrade for low plasticity (PI<15) for
high rainfall areas (Annual rainfall > 1300 mm) 30

3.5. Moisture correction factor for clayey subgrade for low plasticity (PI>15) for
low rainfall areas (Annual rainfall 1300 mm) 31

3.6. Moisture correction factor for clayey subgrade for low plasticity (PI>15) for
high rainfall areas (Annual rainfall > 1300 mm) 31

3.7. Overlay Thickness Design Curve 35

4.1. Form Showing Startup Position 39

4.2. Form Showing Menu options 39

4.3. Form Showing Cost Compare Results 40

4.4. Analysis of Rates Form 41

4.5. Cost Estimate Form 42

4.6. Super Elevation Form 42

5.1. Form showing graphical view for overlay design by CBR method 56

vii
LIST OF TABLES

Table No. Title Page No.

3.1. Guidelines on surfacing for rural roads 21

3.2. Approximate K Value Corresponding to CBR Values 22

3.3. Values of co-efficient 'C' based on Bradbury's Chart 24

3.4. Recommended Temperature Differentials for Concrete Slabs 25

3.5. Criteria for Classification of Pavement Sections 27

3.6. Distribution Factor of Commercial Traffic over the Carriageway 34

3.7. Indicative VDF values 34

4.1. Description of the software 38

4.2. Equations for k Value Corresponding to CBR Values 43

4.3. Equations for Values of co-efficient 'C' based on Bradbury's Chart 43

4.4 Equations for moisture correction factor 44

4.5 Equations for overlay thickness 45

4.6 Equations for overlay thickness 45

4.7 Equations for overlay thickness 46

4.8 Equations for overlay thickness 47

4.9 Equations for overlay thickness 48

5.1 Design Results for Flexible Pavement 51

viii
5.2 Design Results for Rigid Pavement 52

5.3 Deflection values at typical section 53

5.4 Design Results for overlay by Benkelman Beam method 55

5.5 Design Results for overlay by CBR method for existing 56

5.6 Design Results for overlay by CBR method for widening 57

ix
CHAPTER 1
INTRODUCION

1.1. GENERAL

Transport infrastructure plays a key role in the economic growth and development
of the country. Export, import, industry, agriculture, defense, social services, general
administration, maintenance of law and order, exploitation of resource, mobility of persons
and goods etc. are some of the many areas of activity which are very closely linked to the
availability of adequate transportation system. Among the available modes of
transportation, the transport by road is the most versatile one. This mode has maximum
flexibility for travel with reference to the route, direction, time and speed of travel. The
road network serves as a feeder system for other modes of transportation and as well
provides independent facility for road travel by networks of roads throughout the country.

Low-volume roads, farm-to-market access roads, roads connecting communities,


and roads for logging or mining are significant parts of any transportation system. They are
necessary to serve the public in rural areas, to improve the flow of goods and services, to
help promote development, public health and education, as well as to aid in land and
resource management. [5]

In India, any road carries less than 450 vehicles per day, called low volume road.
Low volume roads are categorized under tertiary road system, which consists of other
district roads (ODR) and village roads (VR). India has an essentially rural-oriented
economy with 74 per cent of its population living in its villages scattered all over the
country. Low volume road is not only the key component of rural development in India; it
is also recognized as an effective poverty reduction programme. The absence of roads in
rural areas leads to stagnation of socio-economic conditions of the villages. [22]

1.2. NEED OF STUDY

Improvement of quality of life in its villages is one of the toughest challenges for
Indian government. It involves alleviation of poverty, generation of employment,
improving literacy and modernization of agriculture. A basic road network in rural areas is

1
considered absolutely essential for this objective and is major concern of the government.
For the agriculture-based economy of the 'country, rural roads play a major role by
facilitating the supply of inputs for agriculture, crop diversification, and marketing of
agricultural products.

For Low volume roads, two types of pavements are used, Flexible pavement and
rigid pavement. Generally flexible pavement is used in India. Flexible pavement is
designed based on CBR method which described in IRC: SP: 20-2002 and rigid pavement
is designed based on IRC: SP: 62-2004. For design of pavement, both methods required so
many calculations.

For successful maintenance of pavements it is essential that they have adequate


stability to withstand the design traffic under prevailing climatic and subgrade conditions.
If the pavements have to support increased wheel load and load repetitions, they rapidly
undergo the distress and no amount of routine and periodic maintenance can help them.
Due to unexpected economic developments in the given region, the loading conditions may
become severe and the alternative would be either to divert the traffic on some adjacent
routes or to strengthen the existing pavements. Strengthening may be done by providing
additional thickness of the pavement of adequate thickness in one or more layers over
existing pavement, which is called overlay.

In modern age of sophisticated technology, a computer has become the most


powerful tool for the data analysis and design. Now-a-days, the scenario of the Computer
Aided Design (CAD) is in drastic veer in the field of the computer application. So, there
has been a long felt need to develop a user friendly computer package for design of
pavement, overlay design, rate analysis and cost estimations. It can make these processes
more efficient, less time consuming, more accurate and easier.

1.3. OBJECTIVE OF STUDY

The objectives of study are:

A. Review of studies on Low Volume Roads

2
B. Develop a software for design of low volume roads which includes following
modules:
a) Cost Comparison between Flexible and Rigid Pavement
b) Pavement Design
i. Flexible Pavement
ii. Rigid Pavement
c) Overlay Design
i. Benkelman Beam Method
ii. CBR Method
d) Geometric Design — Super Elevation
e) Rate Analysis
f) Cost Estimation

1.4. THESIS STRUCTURE

The composition of the thesis in the following chapters has been so kept that it
presents a logical and sequential profile of this dissertation.

Chapter 1 describes the introductory notes on low volume roads, design and computer
application for design of low volume roads. It also illustrates identification of problem, and
objectives and thesis structure.

Chapter 2 deals with the literature review. This chapter presents review of research studies
related to low volume roads. The work has been done in India for low volume roads. This
chapter also describes the Pradhan Mantri Gram Sadak Yojana.

Chapter 3 deals with the design aspects for low volume roads. Analysis and design
methods of flexible and rigid pavements, overlay design by different methods and super
elevation design etc.

Chapter 4 deals with the details application steps of the software. It is developed in visual
basic. This chapter also contains the detailed steps for conversion of graphs and tables in
equations which is required for developing the software.

3
Chapter 5 deals with the validation for different modules like pavement design, overlay
design and geometric design of software which is developed in chapter 4, with the help of
Detailed Project Report for Nawabgang block of Bareilly district of UP state.

Chapter 6 deals with conclusions and recommendations. The first part illustrates the
points concluded after the development and validation of software for low volume roads
and second part shows that what should be the future need related to low volume roads
with the work completed in this dissertation.

4
CHAPTER 2

LITERATURE REVIEW

2.1. DEFINITIONS

2.1.1. Low Volume Roads [4, 22, 321

Low Volume Roads provide the primary links to the highway transportation
system. They provide links from homes and farms to markets and for raw materials from
forests and mines to mills, and they provide public access to essential health, education,
civic, and outdoor recreational facilities. The Low Volume Road link between raw
materials and markets is critical to economies locally and nationally in all countries around
the world.

In developed counties, at the high end, Low Volume Roads may be two-lane
asphalt paved roads with up to 2,000 vehicles per day. A widely recognized Low Volume
Road definition sets the upper limit at 400 vehicles per day. Many Low Volume Roads
around the world consist of a single lane with gravel or even native surfacing. In some
remote areas of the world, Low Volume Roads follow travel routes many centuries old. In
developing areas, Low Volume Roads may be the first steps up from human and animal
pack trails, or they may be all-new roads opening new territory. Even in developed areas,
low traffic volumes at the ends of the transportation network may warrant roads with low
conventional design standards. [4]

In India any road, there is less than 150 people per square-mile, and the road carries
less than 450 vehicles per day, called low volume road. Low volume roads are categorized
under tertiary road system, which consists of other district roads (ODR) and village roads
(VR). Low-volume roads, farm-to-market access roads, roads connecting communities,
and roads for logging or mining are significant parts of any transportation system.

• Other district roads (ODRs): These are roads serving the rural areas of
production and providing them with outlet to market centres, block development
centre, taluka/tehsil headquarters or main roads.

5
• Village roads (VRs): These are roads connecting villages and group of villages
with each other or to the market centres and with the nearest road of a higher
category.

2.1.2. All Weather and Fair Weather Roads [22]

In regard to the interruptions at the cross drainage structures that may be tolerated
and the type of pavement surfacing related to rainfall, rural roads are grouped into 'All
Weather Roads' and 'Fair Weather Roads' defined as under:

• All weather roads: At cross drainage structures, the duration of overflow or


interruptions at one stretch does not exceed 12 hours for ODRs and 24 hours for
VRs in hilly terrain and 3 days in case of roads in plain. The total period of
interruption during the year should not exceed 10 days for ODRs and 15 days for
VRs. The pavement should consist of metalling (WBM) or higher type where
rainfall is more than 150 cm/year and should at least be of material better than local
soil, such as moorum, gravel, kankar, laterite etc. where the rainfall is less than 150
cm/year.

• Fair weather roads: Roads not satisfying the minimum requirements specified
above for all-weather roads. These roads should be taken to be in stage of
development to be improved subsequently for conversion into all weather type.

2.1.3. Paved and Unpaved Roads [22]

Unpaved or unsealed roads vary from 'clay' roads which can only serve dry season
light traffic to heavy duty crushed rock industrial roads which can serve heavy traffic.
Typically, such roads are used for providing rural access, carrying an average of 20 to 100
vehicles per day. The base course of such roads is made from local materials e.g. natural
gravel and generally using well-tried traditional methods of construction. In sustained wet
weather, the unsealed roads may develop deficiencies such as rutting and potholing. On the
other hand, in dry seasons, such unsealed roads can become dusty and develop
corrugations. Paved or sealed roads are those which are rendered water proof and dust-
proof by a surfacing or base-cum-surfacing of bituminous materials or cement concrete.

6
2.2. STUDIES CARRIED OUT ABROAD

2.2.1. General [4, 29]

LVRs provide the primary links to the highway transportation system. They provide
link from homes and farms to markets and for raw materials from forests and mines to
mill, and they provide public access to essential health, education, civic, and outdoor
recreational facilities. The LVR link between raw materials and markets is critical to
economies locally and nationally in all countries around the world.

At the high end, LVRs may be two-lane asphalt paved roads with up to 2,000 vehicles
per day. A widely recognized LVR definition sets the upper limit at 400 vehicles per day.
Some differentiate urban LVRs from farm-to-market rural LVRs. Many LVRs around the
world consist of a single lane with gravel or even native surfacing. In some remote areas of
the world, LVRs follow travel routes many centuries old. In developing areas, LVRs may
be the first steps up from human and animal pack trails, or they may be all-new roads
opening new territory.

Even in developed areas, low traffic volumes at the ends of the transportation network
may warrant roads with low conventional design standards. LVRs often just evolved, and
engineering was an afterthought. Traditionally, LVRs have not provided the volume of
business, funding, or glamour to attract and support a specialized field of engineering.
When involved with LVRs, engineers used the best information available. They extended
their experience and training in higher-standard roads, pavements, or structures to LVR
situations, even though they may have recognized the standards as excessive. The
Committee on Low-Volume Roads was established to fill this technology gap, to provide a
forum for exploring and exchanging experiences on engineering appropriate to LVRs.
Interest in LVRs spans the full range of transportation engineering—planning, route
investigation, geometric design, pavements, structures, construction, operations,
maintenance, safety, and so forth. It is essential to adopt the rather nonspecific definition
for LVRs to include rather than exclude people in this forum, while recognizing that the
actual engineering standards may vary significantly even within the range of LVRs. Hence,
developing liaisons with people with expertise in other specific areas of technology is
essential.

7
The fewer the road users, the less funding is available for road maintenance and
restoration, much less engineering. Consequently, LVRs around the world typically need
reconstruction and improvement. Many factors in addition to funding further complicate
LVR engineering:

• Whereas they carry only 20 percent of the traffic, LVRs include 80 percent of the
transportation system mileage.
• Although traffic volumes may be low, vehicle loads may be high.
• Traditional high-volume highway engineering standards may not be appropriate.
• The highest-volume, highest-rate-of-return proposals receive priority for limited
research funding.
• LVRs often mix unconventional traffic (e.g., farm machinery, bicycles, and
oxcarts) with highway passenger cars, buses, and trucks.
• Few data concerning LVR performance, cost, use, and so forth are available.

These challenges provide a wealth of opportunities for enhancing LVR engineering.

2.2.2. Design [4, 29]

Conventional highway geometric design relates increasing standards to increasing


speed, volume of traffic, and user comfort and convenience. LVR design focuses on
sufficient access; speed, volume, comfort, and convenience do not usually control.
Unfortunately, sufficient and flexible design standards have not been widely agreed on for
lower-speed, often single-lane, and even gravel-surfaced LVRs. Some initiatives are under
way, including the American Society of Civil Engineers and Federal Highway
Administration local low-volume roads and streets guide and the ongoing American
Association of State Highway and Transportation Officials project. Certainly other LVR
standards are used or are being developed in other countries, but they have not been
incorporated into U.S. practice. There is some concern about increased tort liability from
reduced design standards for LVRs.

LVRs provide additional design challenges, such as adequate width for large trucks
turning on narrow roads, sharp curves, single-lane roads, pavement markings, and bridge
and guardrail standards.

8
2.3. STUDIES CARRIED OUT IN INDIA

2.3.1. General

Rural roads are the tertiary road system in total road network which provides
accessibility for the rural habitations to market and other facility centres. In India, during
the last five decades, rural roads are being planned and programmed in the context of
overall rural development, and tried to provide all-weather connectivity with some level of
achievement. The long term road development plans for the country provided policy
guidelines and priorities for rural roads, while the funds for rural roads were allocated in
the Five Year Plans. [21]

Rural Roads have been a neglected sector. The focus given to it through the
PMGSY is now enabling the canalization of R&D efforts to this sector. Use of cement
concrete, modified bitumen, fly ash as well as soil stabilization techniques and other new
methodologies, including Waste Plastic are all be pursued. [20]

Recently, during the last five years Government of India has undertaken a
dedicated programme known as Pradhan Mantra Gram Sadak Yojana (PMGSY)' to
provide rural connectivity to all habitations under the Ministry of Rural Development.
More recently, Bharat Nirman, a time bound business plan adopted to provided rural
infrastructure during 2005-09, rural roads have been taken as one of the components and
blended with PMGSY programme. It targeted to provide connectivity to all habitations
having population of 1000 and above (500 and above in hilly, desert and tribal areas) by
2009 and also aimed to upgrade the existing rural roads for overall network development,
which is a more objective approach.[21]

To achieve the targets of Bharat Nirman, 1,46,185 km length of rural roads is


proposed to be constructed to benefit 66,802 unconnected eligible habitations in the
country. It is also proposed to upgrade nearly 1.94 lakh km length of the existing rural
roads which are identified as the through routes of the core network. The total investment
on rural connectivity under Bharat Nirman has been estimated at Rs. 48,000 crore during
2005-2009. Since 11th Five Year Plan (2007-2011) goes beyond the targeted period of
Bharat Nirman, assessment of physical targets and upgradation requirements, have been
estimated based on the experiences of PMGSY. [21]

9
Kumar Anant [17] has done analytical study on effect of regional variation on cost
of rural roads under PMGSY, with an attempt to pin point the local factors (such as soil
subgrade quality, site clearance, construction of Retaining Wall, Cross Drainage,
availability of material etc.), which affects the total cost of rural road construction. A
software also had been developed for cost comparison of rural road construction under
pmgsy.

Jami T.V.Ramakanth [18] have used GIS Software (GeoMedia Professional 5.1)
for village area development through prepare thematic map and collect information of
block area. It was used for optimal rural road network planning of Vizianagaram District of
Andhra Pradesh.

Sahoo Umesh Chandra [15] has developed to get the optimum network for rural
road connectivity under PMGSY. This software is very useful particularly for large
networks. It also provides drainage design. Lal M K [mk] has also developed a software
for design of rural roads under PMGSY. It can use for preparation of database for core
network identification, preparation of proposal for pavement layers, preparation of
summary sheet of the proposals.

Saxena Anukul [28] has proposed the planning model for upgradation
(strengthening, widening and providing alternate route) of rural roads based on PMGSY
program. The model has validated for the Pilana block of the Baghpat district in Uttar
Pradesh. For verifying model, a database (village and road information System) was
also developed. Core Network upgradation was done and final map was prepared showing
the number of roads needs streghtening and widening. Final alternate route was
also worked out.

2.3.2. Pradhan Mantri Gram Sadak Yojana [22, 31]

India has an essentially rural-oriented economy with 74 per cent of its population
living in its villages and has been systematically planning to provide all its villages and
habitations with an all-weather road access. At the commencement of PMGSY, it was
estimated that about 330,000 out of its 825,000 villages and habitations were without any
all-weather road access. Some States like Punjab and Haryana report full or relatively high

10
levels of connectivity. A majority of the poorly connected rural communities lies in ten
States (Arunachal Pradesh, Assam, Bihar, Chattisgarh, Jharkhand, Madhya Pradesh,
Orissa, Rajasthan, Uttar Pradesh and West Bengal).

Construction of rural roads brings multifaceted benefits to the hitherto deprived rural
areas and is seen as an effective poverty reduction strategy. The economic benefits of rural
roads include increase in agricultural production, changes in cropping pattern, better prices
for agriculture produce, reduction in transportation cost, creation of new employment
opportunities in farm and off-farm sectors, lower prices for essential commodities for rural
consumers, better climate for setting up cottage and agro-Industries, increase in production
of dairy products, etc. The impact of new link on social life of rural population is reflected
in the form of better medical care, more attendance in school/colleges, better availability of
public services, higher levels of social interaction etc. Rural roads also change life patterns.
Improved connectivity will make daily communication to urban work places easier,
reducing migration, increasing rural employment and improving family life. Rural
connectivity enables increased penetration of better quality consumer items and durables,
thus improving quality of life.

Notwithstanding the efforts made, over the years, at the State and Central levels,
through different programme, about 40% of the habitations in the country are still not
connected by All-weather roads. It is well known that even where connectivity has been
provided, the roads constructed are of such quality (due to poor construction or-
maintenance) that they cannot always be categorized as All-weather roads.

With a view to redressing the situation, Government of India launched the Pradhan
Mantri Gram Sadak Yojana on 25th December, 2000 to provide all-weather access to
unconnected habitations. The Pradhan Mantri Gram Sadak Yojana (PMGSY) is a 100%
centrally sponsored Scheme. 50% of the cess on High Speed Diesel (HSD) is earmarked
for this programme. About 1,60,000 habitations are expected to be covered under this
programme, with an anticipated investment of Rs. 60,000 crore. This programme is
entirely funded by the Government of India. The Central Government formulates the
policy guidelines and facilitates the making of good quality roads through insistence on
planning, clearance of road works; better methods of execution, time bound

11
implementation, and quality control. The planning and execution of road works is carried
out by the States.

2.3.3. Programme Objectives [22, 31]

The primary objective of the PMGSY is to provide connectivity, by way of an all-


weather road (with necessary culverts and cross-drainage structures, which is operable
throughout the year), to the eligible unconnected habitations in the rural areas, in such a
way that all unconnected habitations with a population of 1000 persons and above are
covered in three years (2000-2003) and all unconnected habitations with a population of
500 persons and above by the end of the tenth plan period (2007). In respect of the hill
States (North-East, Sikkim, Himachal Pradesh, Jammu & Kashmir, Uttaranchal) and the
desert areas (as identified in the Desert Development Programme) as well as the Tribal
(Schedule V) areas, the objective would be to connect habitations with a population of 250
persons and above.

The PMGSY will permit the upgradation (to prescribed standards) of the existing
roads in those Districts where all the eligible habitations of the designated population size
have been provided all-weather road connectivity. However, it must be noted that
upgradation is not central to the programme and cannot exceed 20% of the State's
allocation as long as eligible unconnected habitations in the State still exist. In upgradation
works, priority should be given to through routes of the rural core network, which carry
more traffic.

2.3.4. Features of the PMGSY [22, 31]

The Ministry of Rural Development (MoRD) has been entrusted with the task of
organizing the programme. Some of the noteworthy features of the programme are:

• Full central funding, with 50% of the cess on High Speed Diesel being earmarked
for this programme.
• Preparation of master plans and core network for rural roads for all the Districts and
Blocks, identifying the unconnected habitations and proposing the most cost -
effective routes for the purpose.

12
• Design and specifications as contained in the Rural Roads Manual (RRM, IRC SP:
20), published by the Indian Road Congress (IRC).
• Appointment of programme implementing agencies, by all States typically Public
Works Departments (PWDs) or Rural Engineering Organizations (REOs).
• Appointment of a dedicated State level agency in all states with over all
responsibility for rural road planning, programme execution and management.
• Use of competitive tendering by the implementing agencies of all works on basis of
a Standard Bidding Document (SBD).
• Execution of the works within a period of 9-12 months.
• A defects liability and maintenance period of 5 years specified in the contracts for
the roads constructed under the programme, with funds for maintenance being
provided by the states.
• A 3 tier Quality management system.

13
CHAPTER 3

DESIGN ASPECTS OF LOW VOLUME ROADS

3.1 PAVEMENT DESIGN

3.1.1. Introduction 19]

The road structure may be divided into four major components, viz., land, earthwork,
pavement and cross drainage works. The pavement constitutes nearly one-third to one-half
of the total cost of the road. Therefore, very careful consideration should be there for the
choice of the type of pavement and its design The factors which govern the selection of the
type of the pavement are:

(a) Initial (construction) cost


(b) Availability of good materials locally
(c) Cost of maintenance or rehabilitation during service
(d) Technology of construction required and its availability

The options available for low volume roads are:

(a) Flexiblepavement

(b) Cement concrete pavement

In case of rural roads, in view of the stage development strategy and the initial cost
advantage, the flexible pavement may be the appropriate choice. However, in special cases, in
short sections or in some rural road projects where the ground conditions and material
availability may pose restriction for use of flexible pavement, the other options like roller
compacted concrete, block pavements and composite pavements may be cost effective.
Generally the choice of pavement will be further guided by several other factors, such as

(a) Rainfall and temperature


(b) Type and strength of soil along the alignment
(c) Availability of good aggregates

14
(d) Availability of industrial wastes (like, fly ash, slag, etc.) in the proximity

The importance of pavement design, even for rural roads, cannot be overemphasized
While it appears that rural roads will not have traffic intensity or axle loads as compared to
higher categories of road, even small number of commercial vehicles (or tractor-trolley) with
heavy axle loads or iron-tyred animal drawn cart may cause heavy damage to an under
designed pavement. It is due to this single most important reason that a considerable length
of rural roads built every year using resources of different rural development programmes
failed prematurely.

Any design using conventional, marginal or waste material must follow standard
procedure based on material property, traffic and design life. There are many associated
factors like rainfall, ground water table, etc. which are also to be taken into account for
evolving durable pavement design. In all designs, economy in the initial cost as well as in life
cycle cost are crucial and very important. These aspects assume extra emphasis in case of rural
roads.

3.1.2. Design Parameters [9]

(A) General: The principal criterion for determining the thickness of a flexible
pavement with a thin bituminous surfacing is the vertical compressive strain on top of
the subgrade imposed by a standard axle load of magnitude 8.17 kN (8170 kg).
Excessive vertical subgrade strain causes permanent deformation in the subgrade,
which is manifested in the form of rutting on the pavement surface. The maximum
rutting that can be accepted in village roads may be taken as 50 mm before
rehabilitation work is needed. Analytical evaluation of performance of other district
roads and village roads on the basis of the vertical subgrade strain criterion has
indicated that the design curves as per IRC: 37 are generally valid for the design traffic
from 0.1 million standard axles (msa) to 2 msa. However, for design of rural roads, the
design charts have to be simple and convenient for the grass-root level agencies.. Road
Note 29 of TRL, IRC: 37 and experience in India suggests that the charts may be for
the traffic in the range up to 450 CVPD. Since subgrade CBR may be as high as 20
per cent, design curves are also prepared for subgrade CBR up to 20 per cent. The
minimum recommended pavement thickness is 150 mm even when design chart gives

15
lower thickness. For rigid and semi-rigid pavements tensile stress is taken as the
design criteria to prevent fracture of the concrete layer within the design period.
In. case of concrete block pavements, vertical subgrade strain is the critical
criterion to limit rut depth due to traffic loading.

(B) Traffic: For the purpose of structural design, only the number of commercial
vehicles of laden weight 3 tonnes or more should be considered. To obtain a realistic
estimate of design traffic, due consideration should be given to the existing traffic and
its rate of growth. In case of new construction, anticipated traffic,
possible changes in the road network and land use of the area served as well as the
probable growth of traffic over design life are to be carefully accounted for. If
adequate data is not available, an average value of 6 per cent may be adopted for
traffic growth rate.

(C) Design life: Design life is usually defined as the number of years until the first
major reconstruction is anticipated. For unsurfaced roads, aggregates are displaced
on either side of the wheel path and frequent blading is necessary to maintain a good
riding surface. For unsealed/unsurfaced roads aggregates are often lost due to traffic
action as well as erosion by rains, and the pavements become thinner with time.
Material lost must be replenished periodically to maintain the rideability. It is
necessary that sufficient thickness is provided to prevent rutting failure during the
design life due to high vertical subgrade pressure. It is considered appropriate that roads
in rural areas should be designed for a design life of 10 years. The thin bituminous
surfacing that is commonly provided on the low volume roads has a life of about 5
years.

(D) Computation of design traffic: The design traffic is considered in terms of the
future traffic to be carried during the design life of the road. Its computation
involves estimates of the initial volume of commercial vehicles per day, traffic
growth rate and design life in years. In case of rural roads the commercial
vehicles will be trucks (small and big), buses and tractor-trolley. The traffic for the
design life is computed as:

P (l+r)

16
Where

A= Number of commercial vehicles per day for design

P = Number of commercial vehicles per day at last count

r = Annual growth rate of commercial traffic

n = Number of years between the last count and the year of completion of
construction

x = design life in years

Since the width of rural roads will be single lane, design traffic should be
based on total number of commercial vehicles per day in both directions. Bullock
carts with iron rims are still in use in different parts of the country and the total weight
including the pay load of a bullock cart may range from 1.0 tonne to 1.5 tonnes. Though the
designed pavement as a whole will be safe from shear failure, the iron rims damage the top
layer of the pavement because of high concentration of stress. Thus the wearing course must
be made up of good quality aggregates with aggregate impact value not exceeding 30 per
cent to reduce degradation of the aggregates by crushing

3.1.3. Pavements Components [9]

(A) Subgrade: In rural roads, the top 30 cm of the cutting or embankment at the formation
level shall be considered as subgrade. The subgrade, whether in cut or fill, should be well
compacted to utilize its inherent strength and prevent permanent deformation because of
additional compaction by traffic. A minimum of 100 per cent of Standard Proctor
compaction should be attained in the top 30 cm of the subgrade. For clayey soil, the
minimum compaction for subgrade should be 95 per cent of Standard Proctor compaction
and the compaction should be done at moisture content 2 per cent in excess of the optimum
value. For embankments, the soil below 30 cm of subgrade shall be compacted to
minimum 97 per cent of Standard Proctor compaction [IS: 2720 (Part 7)-1980]. For
pavement design, the subgrade strength should be determined in terms of CBR at the most

17
critical moisture conditions likely to occur. The CBR test should be conducted on
remoulded samples prepared at optimum moisture content and dry density corresponding
to Standard Proctor compaction [(IS:2720 (Part 7)-1980] and soaked in water for four days
prior to testing. If the annual rainfall is of the order of 500 mm or less and the water table
is too deep, soaking for four days may not be necessary.

One or two CBR tests should be done per kilometer depending on the variation of
soil type. If there is no variation in soil type, mean CBR value should be adopted for the
design of pavements. In case of existing roads requiring strengthening, the soil should be
moulded at the existing moisture content and field density, and soaked for four days prior
to testing for CBR.

Where the CBR of the subgrade is less than 2 per cent a capping layer of 100 mm
thickness of material with a minimum CBR of 10 per cent is to be provided in addition to
the sub-base required for CBR of 2 per cent. If the subgrade CBR is more than 15 per cent,
there is no need to provide a sub-base. WBM base can be laid directly over the subgrade
after providing a drainage layer (inverted choke).

(B) Sub-base: Sub-base is a layer of selected material placed on the subgrade compacted to 98
per cent of the IS heavy compaction. Generally it consists of locally availablq relatively low
strength inexpensive material. The principal function of the sub-base is to distribute the
stresses over a wide area of the subgrade imposed by traffic and to ensure that no subgrade
material intrude into the base course and vise versa. There are a large number of locally
available aggregates and industrial waste materials that can be utilized for sub-bases of
pavements.

The sub-base material should have minimum soaked CBR of 15 per cent. Material
component of sub-base passing 425 micron IS sieve when tested in accordance with [IS:
2720 (Part 5)-1985] should have liquid limit and plasticity index not more than 25 and 6
respectively. These requirements should be enforced to achieve desired quality.

When the subgrade is silty or clayey soil and the annual rainfall of the area is more
than 1000 mm, a drainage layer of 100 mm over the entire formation width should be

18
provided conforming to the gradation. This layer will form a part of the designed thickness
of sub-base.

(C) Base: The base course materials should be of good quality so as to withstand high
stress concentrations which develop immediately under the wearing surface. Since
bituminous surfacing consists only of a thin wearing course, the upper surface of the base
must be sufficiently smooth and true to profile to provide a good riding surface. The different
types of base course which are commonly Used are:

(a) Water Bound Macadam (WBM)


(b) Crusher-Run Macadam
(c) Dry Lean Concrete
(d) Soft Aggregate Base Course
(e) Lime-Fly Ash Concrete

Thickness deduced from the design charts are appropriate to pavements with unbound
granular bases which comprise of conventional WBM or any other equivalent granular
construction. For cement treated or stabilized materials, thorough laboratory investigations
are necessary and the pavement design can be done using analytical method. In some
situations where good quality aggregates are not available, cement treated low grade
aggregates or soils may also be used. Appropriate agency may be approached for laboratory
investigations and design.

It is recommended that normally no material with CBR value less than 100 per cent
should be used in base courses. Since base course will be affected by water, their strength should
be determined in soaked condition. Where a substantial part of the base material consists of
particles larger than 20 mm size, the CBR test will not be applicable and their strength will
have to be estimated from experience. WBM of adequate thickness over a properly designed
sub-base will be assumed to satisfy the CBR requirements of 100 per cent. The design of
base courses of different types are given in subsequent Sections.

(D) Pavement surface: Pavement can be with a sealed or unsealed surface. The unsealed
surface means a granular surface where percolation of water into the pavement layers is

19
possible, whereas in sealed surface it is prevented by appropriate surfacing layer. Details of
the design or choice of surfacing are given in Section 3.4.2.

3.2. DESIGN OF FLEXIBLE PAVEMENT [9]

3.2.1. Pavement Thickness: The thickness of pavement is designed on the basis of projected
number of commercial vehicles for the design life using the current commercial vehicles per
day and its growth rate. Further, it requires the subgrade strength value in terms of CBR. It
is expected that rural road will not have more than 450 CVPD in any case. The design
chart may be referred to obtain the total pavement crust thickness (granular crust thickness)
required over the subgrade for the design life of the pavement. Based on the strength of granular
materials that are used, the total design thickness is divided into base and sub-base
thicknesses. However, any other higher type of bituminous layer can be part of the designed
thickness, with the exception of thin bituminous surfacing (PMC, MSS, etc.). In case of rural
roads, with low volume of traffic, structural layer of bituminous mix need not be provided,
generally except in very special cases where the traffic volume is so high that the design
suggests it.

3.2.2. Surfacing: A gravel road or WBM layer can serve adequately as a surfacing
depending on traffic volume. However, it is to be clearly understood that granular materials
(like, soil-gravel mixture) will be lost gradually by traffic action and thickness will be reduced.
Therefore, for gravel roads extra thickness should be provided. Further, for similar reasons,
only WBM Grade-III should be used as a surfacing course for an unsealed WBM road. Other
granular surfacing, like, Moorum, Kankar, etc. will have to be bladed as and when required to
provide smooth riding surface.

The bituminous wearing course will generally consist of premix carpet with seal coat or
two coat surface dressing laid over WBM base course or other type of bases. Bituminous
wearing course must be made up of good quality aggregates with aggregate impact value not
exceeding 30 per cent in order to reduce degradation of the aggregates by crushing Use of
bituminous emulsion for such work may give good surfacing because of processing of material
at ambient temperature. Maintaining the right mixing temperature of the hot mix is not easy
when the dampness of aggregates stacked at the sites varies. Based on the total motorized
traffic and rainfall, an appropriate surface course can be chosen from Table 3.1.

20
Table 3.1. Guidelines on surfacing for rural roads

Thin Bituminous Bituminous Bituminous


1500+ Surfacing Surfacing Surfacing
(2-Coat S.D.) (PMC + Seal Coat) (PMC + Seal Coat)
Annual Rainfall (mm)

Single Coat Thin Bituminous Bituminous


1000-1500 Surface Dressing Surfacing Surfacing
(2-Coat S.D.) (PMC + Seal Coat)
Unsealed Surface Single Coat Thin Bituminous
500-1000 (Gravel Road) Surface Dressing Surfacing
(2-Coat S.D.)
Unsealed Surface Unsealed Surface Thin Bituminous
0-500 (Gravel Road) (Gravel Road) Surfacing
(2-Coat S.D.)

0-50 50-150 150+
Motorized Traffic (Except 2-Wheeler) per Day
Note: S.D. = Surfacing Dressing

PMC = Premix Carpet

3.3. DESIGN OF CONCRETE PAVEMENT [10]

The Guidelines contained in IRC: 58-2002 are essentially intended for high volume
heavily trafficked highways. They are likely to result in uneconomical designs for the low
volume Rural Roads. The Rigid Pavements Committee of the IRC has recently finalized
the guidelines for the design and construction of concrete pavements for Rural Roads
(IRC: SP: 62-2004). Though they are yet to be published, they can be used for the PMGSY
programme. Keeping this in view, the essential features of the design guidelines are given
below.

3.3.1. Wheel Load: The legal axle load in India being 102 kN, the pavement may be
designed for a wheel load of Si kN. However, for link roads serving isolated villages
where the traffic consists of agricultural tractors and trailers and light commercial vehicles
only, a design wheel of 30 kN may be considered.

3.3.2. Tyre Pressure: The tyre pressure may be taken as 0.7 MPa where a wheel load 51
kN is considered and 0.5 MPa where a wheel load of 30 kN is considered.

3.3.3. Design Life: Concrete pavements designed as per these guidelines are expected to
have a life of at least 20 years.

21
3.3.4. Subgrade Strength: The approximate value of the Modulus of Subgrade reaction, k,
may be obtained from its soaked CBR value as per the Table 3.2.

Table 3.2 Approximate K Value Corresponding to CBR Values

Soaked CBR % 2 3 4 5 7 10 15 20 50
k Value Nimm2/mm x10-3 21 28 35 42 48 55 62 69 140

3.3.5. Sub-Base: A sub-base of 75mm thick of Water Bound Macadam (Grade III: 53-
22 4mm size aggregates), Wet Mix Macadam, gravel, murram, soil-cement or soil-lime is
recommended. Where loaded heavy trucks are expected, this thickness may be increased to
150mm. The surface may be primed with bituminous primers to render it smooth. Where
the sub-base is provided, the effective k value may be taken as 20% more than the k value
of the sub-grade. A plastic sheet of 125 microns thickness shell be provided over the sub-
base to act as a separation layer between the sub-base and concrete slab.

3.3.6. Concrete Strength: Since concrete pavements fail due to bending stresses, it is
necessary that their design based on the flexural strength of concrete. Where there are no
facilities for determining the flexural strength, the mix design may be carried out using the
compressive strength values and the following relationship:

f f = 0.7-rfc,

Where, f f = flexural strength, N/mm2

f, = characteristic compressive cube strength, N/mm2

The minimum 28-day compressive strength of concrete shall be 25 MPa, which gives a
flexural strength of 3.0 MPa. For Low Volume Roads, it is suggested that the 90-day
strength be used for design instead of the 28-day strength as the traffic develops only after
the lapse of a period of time. The 90 days flexural strength may be taken as 1.20 times of
28-day flexural strength.

3.3.7. Critical Stresses: The slab may be checked for:

22
(a) A combination of edge load and temperature stress

(b) Corner load

Edge load stress: it can be calculated from the Westergaard's Formula:

1+logio b —0.4048)
sle = 0.529—(1+0.54,u)(4logio —
112

Where, sle = edge load stress in MPa

P = design wheel load, N

h = pavement slab thickness, mm

m = Poisson's ratio, may be taken as 0.15

E = Modulus of elasticity of concrete, MPa which may be taken as 3.0x104 MPa

k = Modulus of subgrade reaction, N/rnm3x10-3

1= radius of relative stiffness, mm

Eh'

12(1— // 2 )k

b = radius of equivalent distribution of pressure

a
= a for — 1.724
h

= 1/1.6a2 +h2 — 0.675h for < 1.724

And a = radius of load contact assumed circular, mm

1/ 2
P'
= — where p is tyre pressure
Pa" i

23
Corner load stress

3P (a-5\12
s/c = 1
112

Where, slc = load stress in the corner region, MPa

Temperature stress

EaAtC
ste=
2

Where, ste = temperature stress in the edge region,

At = maximum temperature differential during day between top and bottom of the slab,

a = Coefficient of thermal expansion of concrete,

C = Bradbury's coefficient, which can be ascertained directly from Bradbury's chart


against values of L/1 and W/1

L = slab length or spacing between consecutive contraction joints

W = slab width

1= radius of relative stiffness

Values of the coefficient C based on the curves given in Bradbury's chart, are given
in Table 3.3

Table 3.3 Values of co-efficient 'C' based on Bradbury's Chart

111 and W/I C


1 0.000
2 0.040
3 0.175
4 0.440

24
5 0.720
6 0.920

7 1.030
8 1.075
9 1.080
10 1.075
11 1.050

12 and above 1.000

Temperature differential between the top and bottom of concrete pavements causes
the concrete slab to warp, giving rise to stresses. The temperature differential is a function
of solar radiation received by the pavement surface at the location, losses due to wind
velocity, etc., and thermal diffusivity of concrete, and is thus affected by geographical
features of the pavement location. As far as possible, values of actually anticipated
temperature differentials at the location of pavement should be adopted for pavement
design. For this purpose guidance may be had from Table 3.4.

Table 3.4 Recommended Temperature Differentials for Concrete Slabs

Temperature Differential, t')


C in Slabs of Thickness
Zone States
250
150 mm 200 mm
mm
Punjab, U.P., Uttarakh and, Haryana, Gurarat
I 12.5 13.1 14.3
and North M. P., excluding hilly regions.

Bihar, Jharkand, West Bengal, Assam and


II Eastern Orrissa excluding hilly regions and 15.6 16.4 16.6
coastal areas.
Maharashtra, Karnataka, South M.P.,
Chattasgarh, Andhra Pradesh, Western Orissa,
III 17.3 19.0 20.3
and North Tamil Nadu excluding hilly regions
and coastal areas.
Kerala and South Tamil Nadu excluding hilly
IV 15.0 16.4 17.6
regions and coastal areas.
V Coastal areas bounded by hills. 14.6 15.8 16.2
VI Costal areas unbounded by hills. 15.5 17.0 19.0

25
3.4. OVERLAY DESIGN

For successful maintenance of pavements it is essential that they have adequate


stability to withstand the design traffic under prevailing climatic and subgrade conditions.
If the pavements have to support increased wheel load and load repetitions, they rapidly
undergo the distress and no amount of routine and periodic maintenance can help them.
Due to unexpected economic developments in the given region, the loading conditions may
become severe and the alternative would be either to divert the traffic on some adjacent
routes or to strengthen the existing pavements. Strengthening may be done by providing
additional thickness of the pavement of adequate thickness in one or more layers over
existing pavement, which is called overlay.

The method of overlay design is given below:

> Benkelman beam deflection technique


> CBR method

3.5. BENKELMAN BEAM DEFLECTION TECHNIQUE FOR OVERLAY DESIGN

3.5.1. Procedure for Deflection Survey [8]

The deflection survey essentially consists of two operations:

(i) Condition survey for collecting the basic information of the road
structure and based on this, the demarcation of the road into sections of
more or less equal performance; and

(ii) Actual deflection measurements.

3.5.2. Pavement Condition Survey [8]

This phase of operation which precedes the actual deflection measurement,


consists primarily of visual observations supplemented by simple measurements
for rut-depth using a 3 meter straight edge. Based on these, the road length shall
be classified into sections of equal performance in accordance with the criteria
given in Table 3.5 [9].

26
TABLE: 3.5. Criteria for Classification of Pavement Sections.

Classification Pavement condition

GOOD No cracking, rutting less than 10mm

FAIR No cracking or cracking confined to single crack in the wheel

track with rutting between 10mm and 20mm.

POOR Extensive cracking and/or rutting greater than 20mm. Sections


with cracking exceeding 20 percent shall be treated as failed

3.5.3 Deflection Measurements [8]

In each road section of uniform performance, minimum of ten points are


marked at equal distance in each lane of traffic for making the deflection
observations in the outer wheel path. The interval between the points should not
be more than 50m. On roads having more than one lane, the points marked at
adjacent lanes should be staggered. In the transverse direction, the measurement
points should be 60 cm from the pavement edge if the lane width is less than 3.5
m and 90 cm when the lane width is more than 3.5m. For divided four lane
highway the measurement points should be 1.5 m from the pavement edge.

For measuring pavement deflection the C.G.R.A procedure which described in


IRC: 81-1997 is adopted. A standard truck having a rear axle weighing 8170 kg
fitted with dual tyre inflated to a pressure of 5.60 kg/cm2 is used for loading the
pavement. During actual tests, the total load and the tyre pressure are maintained
within a tolerance of ±1 percent and 1 5 percent respectively. The deflection data
so obtained are corrected for temperature and soil condition at the time of
experiment [9].

(A) Correction for temperature variations

Deflections measured by the benkelman Beam are influenced by the pavement


temperature. For design purposes, therefore, all deflection values should be related

27
to a common temperature. Measurements made when the pavement temperature is
different than standard temperature would need to be corrected.

The stiffness of bituminous layers changes with temperature of the binder


and consequently the surface deflections of a given pavement will vary
depending on the temperature of the constituent bituminous layers. For purposes of
design, therefore, it is necessary that the measured deflections to be corrected to a
common standard temperature. For areas in the country having a tropical climate, the
standard temperature is recommended to be 35°C.

Correction for temperature is not applicable in the case of roads with thin
bituminous Surfacing. Temperature correction is required for pavements having a
substantial thickness of bituminous construction (i.e. minimum 40 mm) [8].

Available information shows that the deflection-pavement temperature relationship is


linear above a temperature of 30°C. For convenience in the application of the temperature
correction, it is recommended that the deflection measurements should be taken when the
pavement temperature is within the range of 30°C to 35°C, preferably when the
temperature is uniform and is near the temperature of 35°C. Accordingly, as far
as possible deflection measurements should be made during morning and evening
hours on summer months. Correction for temperature variation on defection values
measured at pavement temperature other than 35°C should be 0.01 mm for each degree
centigrade change from the standard temperature of 35°C. The correction will be
positive for pavement temperature lower than 35°C and negative for pavement
temperature higher than 35°C.

In colder areas, and areas of altitude greater than 1000m where average
temperature is less than 20°C for more than 4 months in a year, the standard
temperature of 35°C does not apply [8]. In the absence of adequate data about
deflection performance relationship, it is recommended that the deflection
measurements in such areas be made when the ambient temperature is
greater than 20°C and that no correction for temperature is applied.

28
(B) Correction for seasonal variation

Since the pavement deflection is dependent upon change in the climatic season of
the year, it is always desirable to take deflection measurements during the season when the
pavement is in its weakest condition. Since, in India, this period occurs soon after
monsoon, deflection measurements should be confined to this period as far as possible.
When deflections are measured during the dry month, they will require a correction factor
which is defined as the ratio of the maximum deflection immediately after monsoon to that
of the minimum deflection in the dry months. Correction for seasonal variation depends
on type of subgrade soil, its field moisture content (at the time of deflection survey) and
.average annual rainfall in the area. For this purpose, subgrade soils are divided into three
broad categories, namely sandy/gravelly, clayey with low plasticity (PI < 15) and clayey
with high plasticity (PI > 15). Similarly, rainfall has been divided into two categories
namely low rainfall (annual rainfall < 1300 mm) and high rainfall (annual rainfall > 1300
mm)

The correction factor for different condition of soil type and rainfall are obtained by
making use of the curves given in Fig 3.1 to 3.6. The deflection values corrected for
temperature are multiplied by the appropriate values of seasonal correction factor to obtain
corrected values of deflection [8].

Fig. 3.1. : Moisture correction factor for sandy/gravelly soil subgrade for low rainfall
areas (Annual rainfall 1300 mm)

29
Fig. 3.2. : Moisture correction factor for sandy/gravelly soil subgrade for high rainfall
areas (Annual rainfall > 1300 mm)

Fig. 3.3: Moisture correction factor for clayey subgrade for low plasticity (Pl[<15) for
low rainfall areas (Annual rainfall 5 1300 mm)

•••• • • r.-"•"*"*. "-----7r- '


A•

Fig.3.4: Moisture correction factor for clayey subgrade for low plasticity (PI<15) for
high rainfall areas (Annual rainfall > 1300 mm)

30
e

•.••• ....
• • .. •-•••-••


. .
A 'A, 5',;5
JY: X
Fig. 3.5: Moisture correction factor for clayey subgrade for low plasticity (PI>15) for
low rainfall areas (Annual rainfall 1300 mm)

•2
• t:•, :

• •

4 7.

Fig. 3.6: Moisture correction factor for clayey subgrade for low plasticity (PI>15) for
high rainfall areas (Annual rainfall > 1300 mm)

(C) Characteristic Deflection


Overlay design for a given section is based not on Individual deflection

values but on a statistical analysis of all the measurements in section corrected

for temperature and seasonal variations. This involves calculation of rebound


deflection, mean deflection, standard deviation and characteristic deflection.

The three deflection dial reading D o, Di and Df form a set of readings at


one deflection point under consideration. The rebound deflection value D 21

any point is given by one of the following two conditions:


(a) if Di - D f 0.025mm

31
Dr= 0.02(D0- Df) mm

(b) if Di - Df> 0.025mm

Dr = 0.02(D0 - Df) + 0.0582(D. - Df) mm

Corrected rebound deflection Dre = [Dr+ (35-T) x0.01] xM.C.F.

— xi
Mean deflection, x =

1/(x
_ x.)2
Standard deviation, a =
n- 1

Characteristic deflection

For major arterial roads (like NH and SH) - Dc =x+2c

For all other roads - Dc = x + a

Where, Dr = rebound deflection mm

Dr. = corrected rebound deflection mm

x = mean deflection mm

n = number of deflection measurements

a = standard deviation, mm

De = characteristic deflection, mm

T = temperature in degree centigrade

M.C.F. = moisture correction factor

(D) Estimation of Cumulative Number of Standard Axle

32
Traffic in terms of million standard axle is considered for the design of
overlay. For the purposes of the design, only the number of commercial vehicles of
laden weight of 3 tonnes or more and their axle loading are considered. Traffic is
considered in both directions in the case of two lane road and in the direction of
heavier traffic in the case of multilane divided highways. To obtain a realistic
estimate of design traffic due consideration should be given to the existing traffic,
possible changes in road network, land use of the area served, the possible growth
of traffic and design life. Estimate of the initial daily average traffic flow for any
road is normally be based on 7-day 24-hours classified traffic counts. However, in
exceptional cases where this information is not available 3-day count could be
used.

The design traffic is considered in terms of the cumulative number of standard


axles to be carried during the design life of the road. The following equation may be
used to make the required calculation [8].

365A[(1+ —1]F
Ns =
r

where,

Ns = the cumulative number of standard axles to be catered for in the


design.

A = Initial traffic, in the year of construction, in terms of the number of


commercial vehicles per day duly modified to account for lane distribution
as given in Table 3.2 [4]

r = annual growth rate of commercial vehicles.

x = design life in years.

F = Vehicle damage factor (number of standard axles per


commercial vehicle)

33
The distribution of commercial traffic over the carriageway is another important
consideration for design of overlay as it directly affects the total equivalent standard
axle load applications used in the design.

Table 3.6: Distribution Factor of Commercial Traffic over the Carriageway

No. of lanes Design traffic in CVPD


Single lane roads Total in both direction
Two lane single carriageway roads. 75% of total traffic
Four lane single carriageway roads 75% of total traffic
Dual carriageway roads 75% of total traffic in one direction.

3.5.4 Vehicle Damage Factor


Vehicle damage factor (VDF) is a multiplier for converting the number of

commercial vehicles of different axle loads to the number of standard axle/load

repetitions. The vehicle damage factor is arrived at from axle-load surveys on

typical road-sections so as to cover various influencing factors such as traffic mix,

type of transportation, type of commodities carried time of the year, terrain, road

condition and degree of enforcement. For designing a strengthening layer on an

existing road pavement, the vehicle damage factor should be arrived at carefully by

using the relevant available data or carrying out specific axle load surveys depending upon

importance of the project. Where sufficient information on axle load is not

available, the tentative indicative values of vehicle damage factor as given in table 3.7

[9] may be used.

Table 3.7: Indicative VDF values

Initial traffic intensity in terms of number of Terrain


commercial vehicles per day (Traffic range) Rolling/Plain Hilly

0 — 150 1.5 0.5

150 — 1500 3.5 1.5

More than 1500 4.5 2.5

34
3.5.6 Overlay Thickness Design Curve

The thickness of overlay is found from the design curves relating characteristic

pavement deflection to the cumulative number of standard axles to be carried over

the design life as given in Fig.3.7 [9]. The thickness deduced from this is the overlay

thickness in terms of bituminous macadam construction. In case other compositions are to

be laid for strengthening, the equivalent overlay thickness to be provided may be

determined using equivalency factors as suggested below

1 cm of BM = 1.5 cm of WBM/WMM/BUSG

1 cm of BM = 0.7 cm of DBM/AC/SDC

From structural considerations, the recommended minimum bituminous overlay

thickness is 50 mm BM with additional surfacing course of 50 mm DBM or 40 mm

bituminous concrete.

Fig. 3.7: Overlay Thickness Design Curve

35
3.6. CBR METHOD FOR OVERLAY DESIGN [9]

This method can be used for overlay design for strengthening and widening of existing
road. Design process is the same as flexible design method. Total thickness of existing
pavement is calculated, and then required thickness of pavement is found. Total thickness
of existing pavement is subtracted from designed crust thickness. Thickness of sub base
and base is rearranged according to Gl, G2 and G3 layer. For widening part, pavement
design is the same as new pavement.

36
CHAPTER 4

DEVELOPMENT OF SOFTWARE PACKAGE

4.1. ABOUT THE SOFTWARE

The software is developed in Visual Basic 6. It has user friendly window based

Graphical User Interface (GUI). Microsoft Access is used for storage, manipulation and

retrieval of data. Crystal Report is used for reporting data.

4.1.1. Salient Features of the software

This software can be used to perform following tasks related to design of Low

Volume Roads.

I. Cost Comparison

• Cost Comparison between Flexible Pavement and Rigid Pavement

II. Pavement Design

• Flexible Pavement Design

• Rigid Pavement Design

III. Overlay Design

• Benkelman Beam Deflection Method

• CBR Method

IV. Geometric Design

• Super Elevation Design

V. Analysis of Rates

VI. Cost Estimation of Roads

37
4.2. WORKING WITH SOFTWARE

4.2.1. Description of the Menu Options

Table 4.1. Description of the software

S. No. Menus Sub Menus Function


1. Cost Compare Open forms for cost comparison
- between flexible pavement and rigid
pavement
2. Pavement Design Flexible Pavement Opens form to get detail design of the
flexible pavement design as per IRC
SP :20-2002
Rigid Pavement Opens form to get detail design of the
rigid pavement design as per IRC
SP :62-2004
3. Overlay Design Benkelman Beam Opens the forms for detail design of
Method flexible overlay over flexible
pavement by Benkelman Beam
method as 'RC: 81-2004
CBR Method Opens the forms for detail design of
flexible overlay over flexible
pavement by CBR method as per IRC
SP:20-2002
4. Geometric Design Super Elevation Opens the form for design of super
elevation at curves as per IRC SP:20-
2002
5. Rate Analysis Opens form for analysis of rates in
_
FORMAT F-8
6. Cost Estimate Opens form for cost estimation in
FORMAT F-6
7. Help Help file containing various provisions
for Low Volume Roads as per IRC

38
CAD q. Low Volume Roads:

Version 1.0.0

Copyright@2007
Company - IITR
Please wait

Fig 4.1. Form Showing Startup Position

Fig 4.2. Form Showing Menu options

4.2.2. Cost Comparison: Cost comparison form can be activated by clicking "Cost
Compare" menu. User can compare between cost of flexible and cost of rigid pavement for
inputs. If rate of item is already known then user can direct use rates, otherwise user can
also calculate rate of item through software. If rate of item is already available it will be

39
displayed. Software provides results in tabular as well as graphical format. So user can
take decision that which one is economy.

, ' \

...........

iiiPar;YM....C.6..4

919031 .25
60,0 ie:favemen ,428606 5:

428606.25

......... ......

........

of Pavement.

Suitathe:Pavement Type flbxrb e: Pavement

Fig 4.3. Form Showing Cost Compare Results


4.2.3. Pavement Design

Flexible pavement design: Flexible pavement design form can be activated by clicking
"Flexible Pavement" sub menu of "Pavement Design" menu. User can design flexible
pavement and save results also.

Rigid pavement design: Rigid pavement design form can be activated by clicking "Rigid
Pavement" sub menu of "Pavement Design" menu. User can design of rigid pavement and
save results also. Help window is also available for temperature differential in India.

4.2.4 Overlay Design

Overlay design by Benkelman beam method: Overlay Design by Benkelman Beam


Method form can be activated by clicking "Benkelman Beam Method" sub menu of
"Overlay Design" menu. User can design of overlay and save results also. Input can enter
by keyboard or files. Help window is also available for vehicle damage factor. .

40
Overlay design by CBR method: Overlay Design by CBR Method form can be activated
by clicking "CBR Method" sub menu of "Overlay Design" menu. User can design of
overlay and save results also. Software provides results in tabular as well as graphical
format. So user can understand easily.

4.2.5. Project Preparation

Rate Analysis: Rate analysis form can be activated by clicking "Rate Analysis" menu.
User can perform detailed rate analysis of different items and save it for a particular
package number. Stored analysis for a package number can be retrieved and printed in the
prescribed format.

Cercoreeero:Rolierrept,e1:ige:.::chi•EI:lay
... • • • • • • • • • ... . . ......... • ... • . • • ::•:•
.. .. , ,

ANALYSIS OF: RATES


Per STANDARO::DATA Book FOR ANALYSIS OF RATES FOR RUM: ROADS. Sot 2.004:)::
• •
.
State SI State

::BAREILLY District Code

Pack ge::Na UP - 3 - 58

Flood Neni Iiarizgarg.1arloput Road

Uret

of ry 'IUmt Rate is •
Iy 1 Material A 23 Culy1. 15i 345
2 Material B 25 Kg. 20 500
3 Material C
.... 15 Nos. 19.5'i 292.5
TOTAL COST ;1137.5 Print

Ekit.

Fig 4.4. Analysis of Rates Form

Cost estimate: cost estimate form can be activated by clicking "Cost Estimate" menu.
User can calculate and save package number wise estimate of a particular district of a
State. If cost estimate for given package number for a particular district of a state is already
available, it will be displayed.

41

AigtftNNW --
COSP ESTI MATEFOR:EU RALFCADS::::'
:;1111e UTTAR Pf1ADESH OPOR .•UP

131.1.,!ri0 BAREILLY

Mock iNawnbquria

F1 i.C1Caqa UP - _ 511

:iI.Ia1izgang Jadapur Road

ata Asnaunt•

9
1 Cement Cancaela 1:k5 with 90mm style 7 Cu.M. 1905.0228 99351596
2 Eanh work for Embankment 1125 Cu.M. 200 2250
TOTAL :12055.1595

Total 121105:15.3H

Fig 4.5. Cost Estimate Form


4.2.6. Geometric Design

Geometric design: To calculate superelevation click "Super Elevation" sub menu of the
"Geometric Design" menu. It will display the form with fields to enter of design speed and
radius of curve. By clicking "Compute" button user can get the superelevation in percent.

08.:99tnata:•:o6Inx[i

`•

Superelovation Design

:INPUT:DATA:

:Sala iar.1 l!a


Plain and torrnin

Hilly area hut not onnw hound

Padu: of did,04

Fig 4.6. Super Elevation Form

42
4.3. CONVERSION OF CURVES AND TABLES INTO MATHEMATICAL
FORMS

IRC: SP: 62-2004 recommends table 3.2 for conversion of soaked CBR in k value. This

table has been converted in the equations, which are as given below

Table 4.2 Equations for k Value Corresponding to CBR Values

S. Soaked CBR
Equations for k value (k Value Nimm2/mm x10-3)
No. (%►) (x)
1 2 to 5 k = (-0.0009 *x4 + 0.0552 * x3 - 1.2366 * x2 +
13.43 * x - 1.7862) / 1000
2 5 to 10 k = (-0.0001 * x4 + 0.014 * x3 - 0.4472 * x2 + 7.0954*x
+ 15.961) / 1000 ...(4.2)
3 10 to 20 k = (0.0238 * x2 + 0.691 * x + 45.88) / 1000 ...(4.3)
4 20 to 50 k = (2.3667 * x + 21.667) / 1000 ...(4.4)

IRC: SP: 62-2004 recommends table 3.3 for calculating value coefficient C based on

Bradbury's Chart based on L/1 and. W/1. This table has been converted in the equations,

which are as given below:

Table 4.3 Equations for Values of co-efficient 'C' based on Bradbury's Chart

S. No. L/I and W/l (x) Equations for C value


1 1 to 3 C = 0.0475 * x2 - 0.1025 * x + 0.055
2 3 to 10 C = 0.0006 * x4 - 0.0153 * x3 + 0.1094 * x2
- 0.0176 * x - 0.3982 ...(4.6)

3 More than 10 C = -0.0125 * x2 + 0.2375 * x - 0.05 ...(4.7)

IRC recommends the moisture correction factors (or seasonal correction factors) for

different conditions of soil as shown in Figs. 3.1-3.6. These were converted into

mathematical equations for different conditions of plasticity Index (PI), type of subgrade

soil, annual rainfall and field moisture content. The equations are as given below.

43
Table 4.4 Equations for moisture correction factor

Fig. Moisture Equation for moisture .

No. Contents (%)(X) correction factor (Y)


3.1 4 to 11 y = 3.36338-0.951626x+0.146604x2-
0.0101148x3+ 0.000261986x4 ...(4.8)
y e-00663x
3.2 4 to 4.55 ...(4.9)
y = 1.52295 e-00308886x
4.55 to 5.55 ...(4.10)
00487901x
5.55 to 7 y = 1.68926 e- ...(4.11)

7 to 9 y = 2.15975-0.197128x+0.00859655x2

+7.94729* 10-8x3 ...(4.12)

more than 9 y = -2.68051+ 1.42657x-0.196485x2+

0.011686x3-0.000256409x4 ...(4.13)

3.3 4 to 22 y = 2.42636-0.50481x+0.16459x2-0.03401x3

+ 0.0040066x4-0.000274x5+1.0823 9*

10-5x6-2.2984 * 104)(7+2.0337* 10-9x8 ...(4.14)

3.4 4 to 22 y = 2.11368+0.11414x- 0.08202x2 + 0.01279x3


-0.000982x4+4.12843*10-5x5-9.121*10-7x6
+8.31275*10-9x7
3.5 4 to 20 y = 2.17972+0.32178x-0.1915x2+0.03351x3
-0.0029698x4+0.0001446x5-3.70245* 10-6
x6+3.90608* 10-8x7 ...(4.16)

3.6 4 to 20 y = 4.23472-0.8611x+0.104487x2-0.00666x3
+0.00021539x4-2.80946*10-6x5 ...(4.17)

To calculate the thickness of Bituminous Macadam overlay (mm), design

curves of WE: 81-1997 as shown in Fig3.7 are converted into mathematical equations for

different values of characteristic deflection, (min) and the cumulative number of

standard axles. For accuracy the curve for Ns = 0.1 is split in three ranges of

characteristic deflection in mm, i.e., 3-3.4, 3.4-5, 5-6. So as to obtain three best fit

equations which are as given below:

44
Table 4.5 Equations for overlay thickness

Range of Equations for


Ns characteristic overlay thickness
deflection (X)
0.1 3 to 3.4 y i = 300+100x ...(4.18)
3.4 to 5 yi = 2500.73+2105.25x-669.073x2+

97.8863x3-5.46331x4 ..(4.19)
5 to 6 yi= 526.422+284.714x-42.6596x2

+2.31487x3. ...(4.20)
0.5 < 2.2 y2= -780+590x-100x2
2.2 to 4.2 y2 = -1011.76+1051.39x-386.658x2
66.5798x3-4.3706x4 ...(4.22)
4.2 to 6 y2 = 2950.54-2369.18x+733.017x2
-98.5903x3+4.91697x4 ...(4.23)

where, yi= Overlay thickness at Ns 0.1

Y2 = Overlay thickness at Ns 0.5

The overlay thickness for Ns between 0.1 and 0.5 is calculated as

y = yi+ (y2-y1)*log Ns-log 0.1)/ (log 0.5- log 0.1) ... (4.24)

Table 4.6 Equations for overlay thickness

Range of Equations for

Ns characteristic overlay thickness


deflection (X)
1.0 <2.2 y3 = -744.822+667.56x-133.03x2
2.2 to 4.2 y3 = 1220.65-2294.21x+1663.44x2

-564.869x3+93.0582x4-6.00963x5 ...(4.26)

4.2 to 6 y3 = -6562.5+5264.78x-1541.59x2

+200.526x3-9.74284x4 ...(4.27)

2.0 < 1.8 y4 = -825.999+904.999x-225x2 ...(4.28)

45

1 8 to 6 Y4 = -10337.6+22012.6x-19229.5x2

+8868.14x3-2269.51x4+305.533x5

-16.9143x6 ...(4.29)

The overlay thickness for Ns between 0.5 and 1.0 is calculated as

y = y2+ (y3-y2)*(log Ns-log o.5)/ (log1.0-log0.5) ... (4.30)

The overlay thickness for Ns between 1.0 and 2.0 is calculated as

y = y3+ (y4-y3)*(log Ns log 1.0)/ (log2.0-log1.0) ... (4.31)

where, y2 = overlay thickness at Ns 0.5

y3= overlay thickness at Ns 1.0

y4= overlay thickness at Ns 2.0

Ns = number of cumulative vehicles per day

y = overlay thickness at given Ns

Table 4.7 Equations for overlay thickness

Range of Equations for


Ns charactristic overlay thickness
deflection (X)
5.0 < 1.2 y5 = -852.231 + 1167.28x-357.648x2 ...(4.32)

1.2 to 4.0 y5 = -197.981+289.298x-78.5352x2

+9.26507x3-0.302621x4 ...(4.33)

4.0 to 6.0 y5 = 1064.92-780.563x+254.88x2

-35.4507x3+1.8211x4 ...(4.34)

10.0 <1.2 y6= -1090+1677.5x-587.5x2 (4.35)

1.2 to 4.0 Y6= -314.271 + 564.41 * x - 281.237 * x2

46
89.2033x3-20.3263x4+3.13528 * x5

-0.22624x6. ...(4.36)

4.0 to 6.0 Y6 = -13374.6+13752.4x-5559.93 x2

+ 1121.69x3-112.681x4+4.50725x5 ...(4.37)

The overlay thickness for Ns between 2.0 and 5.0 is calculated as


y = y4+ (y5-y4)*log (Ns-log2.0)/ (log5.0-log2.0) ... (4.38)

The overlay thickness for Ns between 5.0 and 10.0 is calculated as



y = Y5+ (y6-y4)*(log Ns-log5.0)/ (log10.0-log5.0) ... (4.39)

where, y4 = overlay thickness at Ns 2.0

y5 = overlay thickness at Ns 5.0

y6 = overlay thickness at Ns 10.0

Ns = number of cumulative vehicles per day

y = overlay thickness at given Ns

Table 4.8 Equations for overlay thickness

Range of Equations for


Ns charactristic overlay thickness
deflection (X)
20 < 1.0 y7 = -556+975-350x2 ...(4.40)

1.0 to 3.2 y7 = 115.449-396.216x+645.182x2

-362.061x3+90.5539x4 ...(4.41)

3.2 to 6.0 y7 = 1472.51-1461.09x+646.797x2

-136.31x3+13.9447x4-0.556309x5 ...(4.42)

100 <0.625 y8 = -686.304+1936.3x-1165.22x2 ...(4.43)

0.625 to 0.8 Y8 = -311+855x-400x2 ...(4.44)

47
0.8 to 2.8 y8= -50.5197+198.747x+99.0281x2

-149.348x3+56.363x4-7.01123x5

2.8 to 6.0 Y8 = 4181.08+6255.88x-3639.52x2

+ 1115.17x3-188.94x4+16.7783x5

-0.610524x6 ...(4.46)

The overlay thickness for Ns between 10.0 and 20.0 is calculated as

y = y6+ (y7-y6)*(log Ns-log10.0)/ (log20.0-log10.0) ... (4.47)

The overlay thickness for Ns between 20.0 and 100.0 is calculated as

y = yrF (y8-y7) *(log Ns-log20.0)/ (log100.0-log20.0) . (4.48)

where, y6 = overlay thickness at Ns 10.0

y7 = overlay thickness at Ns 20.0

y8 = overlay thickness at Ns 100.0

Ns = number of cumulative vehicles per day

y = overlay thickness at given Ns

The design curves of IRC-81, 1997 as depicted in Fig.3.7, are given up to Ns 100. One
more curve for the value of Ns 200 was drawn and the equations for the overlay thickness
are given in Table 4.9.

Table 4.9 Equations for overlay thickness

Range of Equations for


Ns charactristic overlay thickness
deflection (X)

200 < 0.625 y9 = 1.503*(-686.304+1936.3x-1165.22x2) ...(4.49)


0.625 to 0.8 y9 = 1.43*(-311+855x-400x2) ..(4.50)

48

0.8 to 0.9 y9 = 1.3471*(-50.5197+198.747x+

99.028x2-149.348x3+56.363x4-7.011x5) ...(4.51)

0.9 to 1.1 y9 = 1.291*(-50.5197+198.747x+


99.028x2-149.348x3+56.363x4-7.011x5) ...(4.52)
1.1 to 2.8 y9 = 1.0911*(-50.5197+198.747x+

99.028x2-149.348x3+56.363x4-7.011x5) ...(4.53)
2.8 to 6.0 y9 =1.031*(4181.08+6255.88x-3639.52x2

+ 1115.17x3-188.94x4+16.7783x5

-0.610524x6). ...(4.54)

The overlay thickness for Ns between 100.0 and 200.0 is calculated as

Y= Y8+ (Y9-Y8) * (log Ns-log100.0)/ (log200.0-log100.0 ... (4.55)

where, ys = overlay thickness at Ns 100.0

y9 = overlay thickness at Ns 200.0

Ns = number of cumulative vehicles per day

y = overlay thickness at given Ns

4.4. ADVANTAGE OF THE SOFTWARE


This is user friendly software in which one can perform cost comparison, pavement
design, overlay design, geometric design as superelevation, rate analysis, prepare estimate
of road in the format prescribed in Operations Manual [22]. It saves time of user and
provides efficient design solution.

4.5. SOURCE CODE OF THE SOFTWARE


The source code of the software is given in the appendix.

49
CHAPTER 5

APPLICATION AND VERIFICATION OF THE SOFTWARE

5.1 GENERAL

The software package developed in this thesis work is applicable for design of different
types of pavement, flexible overlay over flexible pavement by different methods, rate
analysis and cost estimation also. In this chapter, this software has been verified with
different problem.

5.2. PAVEMENT DESIGN

5.2.1. Flexible Pavement Design [27]

The pavement design is performed using the software by taking the input data from
Nabawgang block of Bareilly district in Uttar Pradesh, and design life 10 years + 1 year
period is taken between last count and completion of construction. Annual rainfall is taken
as 900 mm.

Number of commercial vehicles per day at last count (P) = 79

Annual growth rate of commercial traffic (r) = 6 %

Design life in years (x) = 10 years

Motorized vehicle per day = 60

CBR value = 5.8 %

Number of commercial vehicles per day for design, A = (1+01,+1


= 79 x (1 + 0 06)10+1 ti

= 149.96 150 CVPD

50
From CBR curves [9] for 150 CVPD and 5.8 % CBR, Total thickness = 330 mm

From fig. 5.3 [9] Sub base = 175 mm

Base Course = 150 mm

Projected motorized vehicles/day = 60 x (1 + 0.06)10+1 = 113.89 114

Type of surfacing as per Rural Roads Manual for 900 mm rainfall and 114 motorized
vehicle per day = "Single Coat Surface Dressing"

Table 5.1 Design Results for Flexible Pavement

Result obtained by
S. No. Parameters
Manual Calculation Software
1. Design CVPD 150 150
Traffic MVPD 114 114
2. Sub base Thickness 175 175
3. Base Thickness 150 150
4. Single Coat Surface Single Coat Surface
Surfacing
Dressing Dressing

5.2.2 Rigid Pavement Design [10]

The pavement design is performed using the software by taking the input data from
example of IRC: SP: 62-2004, for Uttar Pradesh state.

Design load = 51 kN

Tyre pressure = 0.7 MPa

Coefficient of thermal expansion of concrete (a) = 10x10-6 per °C

Modulus of Elasticity (E) = 3 .0 x 104 MPa

51
Poisson's ratio (A.) = 0.15

Configuration of slab = 3.75 m x3.75 m

Soaked CBR value = 4 %

K value (k) = 35 x10-3 (N/mm2/mm)

Characteristic compressive strength of concrete = 30 MPa

Temperature differential = 12.5 °C

Table 5.2 Design Results for Rigid Pavement

S. Result obtained by
Parameters
No. Manual Calculation Software
1. Trial Thickness (mm) 150 180 190 200 210 201
Load stress in the edge
2. 5.759 4.219 3.842 3.514 3.226 3.48
region, (MPa)
Temperature stress in the
3. 1.556 1.275 1.181 1.103 1.022 1.09
edge region, (MPa)
4. Total 7.315 5.594 5.024 4.617 4.248 4.57
5. Factor of safety 0.629 0.837 0.916 0.996 1.083 1.01
6. Result Fail Fail Fail Fail Pass Pass
Load stress in the corner
7. 2.817 3.05
region, (MPa)
8. Design slab thickness (mm) 210 201

5.3. OVERLAY DESIGN

5.3.1. Overlay Design by Benlielman Beam Method [161

The pavement design is performed using the software by taking the input data from report
[16] for Purkaji - Laksar road.

52
Moisture content (%) = 4.2

Plastic index = less then 5

Rainfall = Low rainfall (less then 1300)

Commercial vehicle per day = 786

Design life (years) = 10

Growth rate — 7.5

Terrain = Rolling

Vehicle damage factor = 3.5

Two lane road traffic in both directions

Existing road surface = Thin surfacing of premixed carpet

Type of road = major district road

For two lane single carriageway roads — initial traffic = 0.75x786 = 589.50 590

Providing sub base of thickness 150 mm

Table 5.3 Deflection values at typical section 1161

S. No. Initial Dial Gauge Final Dial Gauge Rebound Deflection (mm)
Reading Reading
1 0 65 1.3
2 0 55 1.1
3 0 85 1.7
4 0 55 1.1
5 0 22 0.44
6 0 36 0.72

53
7 0 42 0.84

8 0 62 1.24

9 0 47 0.94

10 0 35 0.7

11 0 85 1.7

12 0 85 1.7

13 0 36 0.72

14 0 42 0.84

15 0 70 1.4

16 0 46 0.92

17 0 80 1.6

18 0 60 1.2

19 0 26 0.52

20 0 37 0.74

21 0 70 1.4

365A[(1+ —1]F,
Ns-

Where,

Ns = cumulative number of standard axles to be catered for in the design

A = Corrected initial traffic

r = Traffic growth factor

x = Design period from present date

F = Vehicle damage factor

365 x590[(1+ 0.075)1° —1]x3.5


Ns—
0.75

= 10663013.52 10.7 msa

54
Table 5.4 Design Results for overlay by Benkelman Beam method

Result obtained by
S. No. Parameters Manual
Software
Calculation
1 Mean Deflection (mm) 1.087 1.087
2 Standard Deviation (mm) 0.395 0.395
3 Moisture correction factor 1.280 1.285
4 Temperature correction 0 0
5 Corrected Characteristic Deflection (mm) 1.897 1.904
6 Overlay thickness (mm) in terms of BM 160 158.94

5.3.2. Overlay Design by CBR Method [27]

The overlay design is performed using the software by taking the input data from
Nabawgang block of Bareilly district in Uttar Pradesh, and design life 10 years + 1 year
period is taken between last count and completion of construction. Annual rainfall is taken
as 900 mm.

Existing crust thickness = 190 mm

Width of existing road = 3.0 m

Required width of new pavement = 3.75

Number of commercial vehicles per day at last count (P) = 79

Annual growth rate of commercial traffic (r) = 6 %

Design life in years (x) = 10 years

Motorized vehicle per day = 60

CBR value = 5.8 %

Number of commercial vehicles per day for design, A = [P (1 r

55
= 79 x (1 + 0.06)10+1

= 149.96 150 CVPD

From CBR curves [9] for 150 CVPD and 5.8 % CBR, Total thickness = 330 mm

Projected motorized vehicles/day = 60 x (1 + 0.06)10+1 = 113.89 ,===, 114

Type of surfacing as per table 5.1 [9] for 900 mm rainfall and 114 motorized vehicle per
day = "Single Coat Surface Dressing"

' • • ■r•:' ,,
:65*. ss-stissiisV s,-szaat
Cross Sctional::VieW. of Road

New
Existing
Construction Construction

Fig 5.1. Form showing graphical view for overlay design by CBR method

Table 5.5 Design Results for overlay by CBR method for existing

Result obtained by
S.
Parameters Manual Calculation Software
No.
Calculated Proposed Calculated Proposed
1. Sub base Thickness 0 0 0 0
Base G-2 Layer 75 75
2. 140 135
Thickness G-3 Layer 75 75
Surfacing Single Coat Surface Single Coat Surface
3.
Dressing Dressing

56
Table 5.6 Design Results for overlay by CBR method for widening

Result obtained by
S.
Parameters Manual Calculation Software
No.
Calculated Proposed Calculated Proposed
1. Sub base Thickness 180 1.80 175 175
Base G-2 Layer 75 75
2. 150 150
Thickness G-3 Layer 75 75
Surfacing Single Coat Surface Single Coat Surface
3.
Dressing Dressing

5.4. SUPER ELEVATION DESIGN

Type of terrain — Hilly area but not snow bound

Radius of curve (R) = 120 m

Design speed (V) = 50 Km/hour

Super elevation (%) = V2 x100 /225R

= 50 x 50 x 100 / (225 x 120)

= 9 259 9.26

By software package = 9.26

By manual calculation = 9.26

57
CHAPTER 6

CONCLUSIONS AND RECOMMENDATIONS

6.1. CONCLUSIONS

The following conclusions are drawn from this study:

1. A software has been developed in Visual Basic environment and it is fully user
friendly package. A learner having a little knowledge of computer can use this
software. If any data is wrong than software show Warning. User can also use help
module which is included in this software.

2. It provides design results in analytical as well as in graphical format. So user can


understand easily. User can also enter data trough file option.

3. This software can be used for cost comparison between flexible and rigid
pavement. So user can take decision, that which one is the best option.

4. This software provides results for design of flexible pavement based on CBR
method which is described in IRC: SP: 20-2002 and rigid pavement based on IRC:

SP: 62-2004.

5. This software provides overlay design by Benkelman beam method which is


described in IRC: 81-1997 and CBR method based on IRC: SP: 20-2002.

6. This software has also modules for Rate Analysis and Cost Estimation. These
modules can be used for report preparation for rate analysis and cost estimation.
User can save results for future use based on package number.

7. For low volume roads, initial cost of rigid pavement is more then flexible
pavement, but rigid pavement is designed for 20 years and flexible pavement for 10

58
years. So if we consider design life for both type of pavements then rigid pavement
has less cost.

6.2. RECOMMENDATIONS

The software may be extended for internet application. So user can use software 1-
through internet.

59
REFERENCES

1. Bob Reseslman (1999), "Using Visual Basic 6", Prentice Hall of India, New Delhi,
India. pp. 415-465.

2. Chandra Satish and Kumar Praveen, Computer Aided Design of Flexible Pavement
Overlays, Highway Research Bulletin (HRB) No 62, Indian Roads Congress (IRC),
June 2000 pp 49-64.

3. Evangelos Petroutsos (2002), "MasteringTM Visual Basic® 6", First Indian Edition,
Manish Jain for BPB Publications, New Delhi, India. pp. 236-304.

4. Gerald T. Coghlan, "Opportunities for Low-Volume Roads", U.S. Department of


Agriculture Forest Service, U. S. pp. 26-38.

5. Gordon Keller & James Sherar, "Low Volume Roads Engineering", USDA, Forest
Service, July 2003. pp. 21-37.

6. Halvorson Michael (2001), "Learn Microsoft Visual Basic 6.0 Now", Prentice-Hall
of India Private Limited, New Delhi, India. pp. 185-325.

7. Indian Road Congress, "Standard Data Book for Analysis of Rates for Rural Roads",
September 2004, New Delhi, India. pp. 4.1 — 7.1

8. IRC: 81-1997, "Guidelines for Strengthening of Flexible Road Pavements Using


Benkelman Beam Deflection Technique (First Revision)", The Indian Road
Congress, New Delhi, India. pp. 5-20.

9. IRC: SP: 20-2002, "Rural Roads Manual", The Indian Road Congress, New Delhi,
India. pp. 94-109.

10. IRC: SP: 62-2004, "Guidelines for the Design and Construction of Cement Concrete
Pavements for Rural Roads", The Indian Road Congress, New Delhi, India.
pp. 3-29.

11. Jerke Noel (1999), "Visual Basic 6: The Complete Reference", Tata McGraw-Hill
Company Limited, New Delhi, India. pp. 423-458.

60
12. Khanna S. K. and Justo C. E. G. (2001), "Highway Engineering" eighth edition,
Nem Chand and Bros, Roorkee, India. pp. 330-409.

13. Kumar Praveen and Lal M.K., "Computer Aided Design of Rural Roads", Journal of
Indian Roads Congress (IRC). Vol 67-3. Oct-December-2006, pp 261-270.

14. Kumar Praveen and Sahoo U.C, "Use of Global Positioning System (GPS) in
Transportation Engineering", Indian Highways, IRC, Vol 32, No. 8, Aug 2004, pp
125-136.

15. Kumar Praveen and Sahoo Umesh Chandra, "Software for Rural Road Planning
Under Pradhan Mantri Gram Sadak Yojna (PMGSY)", Indian Highways, IRC, Vol
32, No. 9, Sept 2004, pp 49-59.

16. Kumar Praveen, Mehndiratta H C, Chandra Satish, "Benkelman Beam Deflection


Study and Design of Overlay for Purkaji — Laksar Road", Technical Report,
Provincial Division PWD, Hardwar, March 2004. pp. 2-8.

17. Kumar Praveen, Mehndiratta H.C. and Kumar Anant, "Economic Analysis of Rural
Road Construction Under PMGSY" Indian Highways, Indian Roads Congress, Vol
33, No. 8, August 2005, pp 21-33

18. Kumar Praveen, Singh Nalini and Jami T.V.Ramakanth, "GIS Based Rural Road
Network Planning-A Case Study of Vizianagaram District (AP)", ITPI Journal, Vol
3, No. 3, July-Sept, 2006, pp30-39.

19. Kumar Ravindra (1999), "Computer Aided Design of Flexible Pavement Overlays
Based on IRC: 81-1997", M. Tech. Thesis, Department of Civil Engineering, IIT
Roorkee. pp. 38-45.

20. Ministry of Rural Development, "A Four Year Business Plan", Bharat Nirman
Rural-Roads. pp. 2-4.

21. Ministry of Rural Development, "Rural Roads in the 11th Five Year Plan",
Government of India, Planning Commission, Nov 2006. pp. 2-8.

22. Ministry of Rural Development, PMGSY - Operational Manual. Government of

61
India. Feb 2005. pp. 211-225.

23. NYS Tug Hill Commission, "Questions and Answers about Low-Volume Road
Designation", Washington Street, Watertown, New York, January 2003. pp. 24-32.

24. Pandey B. B., "Low Cost Concrete Road for Villages", Civil Engineering, IIT
Kharagpur, India. pp. 14-15.

25. Partha Charkroborty and Das Animesh (2003), "Principles of Transportation


Engineering", Prentice Hall of India, New Delhi, India. pp (347-410)

26. Perry G., "SAMS Teach Yourself Visual Basic 6 in 21 days", M Techmedia, New
Delhi, India. pp. 385-527.

27. PMGSY, "Detail Project Report", PIU: construction division — 2. (P.P.), PWD,
Bareilly, Utter Pradesh, India. pp. 229-246.

28. Saxena Anukul (2006), "Planning of Rural Roads in GIS Environment", M. Tech.
Thesis, Department of Civil Engineering, IIT Roorkee. pp. 5-17.

29. Tervala Juhani, "Low Volume Roads in Finland", Proceedings of Sixth International
Conference on Low Volume Roads, TRB, Washington D C Vol-1, June 1995.
pp 1-6.

30. Tom V. Mathew, "Transportation Engineering I", Civil Engg. Deptt. IIT Bombey,
Mumbai, India, Jan 2006. pp. 121-135.

31. www.pmgsy.nic. in

32. www.usroads.com

33. www. omms. ni c. in

62
APPENDIX

SOURCE CODE OF THE SOFTWARE

A.1. MAIN MODULE (frmLogin)

Option Explicit

Public LoginSucceeded As Boolean

Private Sub cmdCancel Click()


'set the global var to false
'to denote a failed login
LoginSucceeded = False
Unload Me
End Sub

Private Sub cmdok_Click()


'check for correct password
txtUserName = UCase(txtUserName)
txtPassword = UCase(txtPassword)
If txtUserName = "GAJENDRA" And txtPassword = "varshney" Then
'place code to here to pass the
'success to the calling sub
'setting a global var is the easiest
LoginSucceeded = True
Unload Me
frmSplash. Show
Else
MsgBox "Invalid Password, try again!"„ "Login"
txtPassword. SetFocus
SendKeys "{Home}+{End}"
End If
End Sub

Private Sub Form_Load()


txtUserName = "GAJENDRA"
End Sub

(frmSplash)

Option Explicit

Private Sub Form_Load()


frmSplash.BackColor = &H2F38

63
lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." &
App.Revision
Th1ProductName.Caption = App.Title
End Sub

Private Sub Frame l_DragDrop(Source As Control, x As Single, Y As Single)


Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 2
End Sub

Private Sub Timerl Timer()


Unload Me
MDlmain. Show
End Sub

(MIDImain)s-

Private Sub cbrm Click()


frmocmi. Show
End Sub

Private Sub cost_Click()


frcostana. Show
End Sub

Private Sub costcom_Click()


frmcc. Show
End Sub

Private Sub Exit_Click()


End
End Sub

Private Sub flexible Click()


With frmfpd1
.cmdnext.Visible = False
.cmdback.Visible = False
. cmdb acko.Visib le = False
. Show
End With
End Sub

Private Sub help_Click()


' Set the help file to be displayed
CommonDialogl.HelpFile = App.Path & "\GKV.hlp"
' Show the contents
CommonDialogl.HelpCommand = cdlHelpContents

64
' Show the help dialog
CommonDialog 1. ShowHelp
End Sub

Private Sub MDIForm_LoadO


MDlmain.Picture = LoadPi cture(App .Path & " \cover.wmP)
End Sub

Private Sub obbm Click°


frmobbm. Show
End Sub

Private Sub rate Click()


frmRA. Show
End Sub

Private Sub rigid_Click()


With frmrigiddesign
. cmdnext. Visibl e = False
. cmdback. Visible = False
.Show
End With
End Sub

Private Sub super Click()


frmsen. Show
End Sub

A.2. COST COMPARE (frmcc)

Private Sub Form Load()


cmdnext.Left = (Screen.Width - cmdnext.Width) / 2 - 1500
cmdexit.Left = (Screen.Width - cmdexit.Width) / 2 + 4620
Me.WindowState = 2
End Sub

Private Sub cmdexit_Click0


Unload Me
End Sub

Private Sub cmdnext_Click0


Unload Me
With frmfpdl
.txtDL.Text = 10
.txtDL.Locked = True
.cmdcompute.Visible = False
. Commandl . Visib le = False
.cmdbacko.Visible = False

65
.Show
End With
End Sub

(frmfpdl)
Private Sub cmdnext_Click()
Dim cvpd As Double
Dim mvpd As Double
Dim colName As String
Dim qryTh As String
Dim rsPT As New ADODB.Recordset

cvpd = Round((frmfpd 1 .txtCVPD) * (1 + Val(frmfpdl.txtGR) / 100) A


Val (frmfp dl. txtDL))
frmfpd2.txtDT = cvpd
mvpd = Round((frmfpdl.txtmvpd) * (1 + Val(frmfpdl.txtGR) / 100) A
Val(frmfpdl.txtDL))
frmfpd2.txtdmv = mvpd

If cvpd <= 15 Then


colName = "A"
ElseIf cvpd <= 45 And cvpd > 15 Then
colName = "B"
ElseIf cvpd <= 150 And cvpd > 45 Then
colName = "C"
Else
colName = "D"
End If

qryTh = "select bc,sbc from pave_thickness where cbr =" & Round(Val(Combocbr)) &
"and cvpd = 1" & colName & "1 "
Set rsPT = dbA.Execute(qryTh)
frmfrdo.txtbc = rsPT("bc")
frmfrdo.txtsb = rsPT("sbc")
frmfrdo.txtpct = rsPT("bc") + rsPT(" sbc")
Set rsPT = Nothing
qryTh = ""
colName = ""
If mvpd <= 50 Then
colName = "a"
ElseIf mvpd > 50 And mvpd <= 150 Then
colName = "b"
Else
colName = "c"
End If

qryTh = "select " & colName & " from surfacing where " & txtarf & " between 1_rainfall
and h_rainfall"

66
Set rsPT = dbA.Execute(qryTh)
frmfrdo.txtsurf = rsPT(colName)
frmfpd2.Hide
frmfpdl.Hide
frmfrdo.Hide

With frmrigiddesign
If mvpd <= 100 Then
.Optionl.Value = True
Else
.Option2.Value = True
End If
.cmddesign.Visible = False
.cmdexit.Visible = False
.cmdnew.Visible = False
.Option3.Visible = False
.Option4.Visible = False
Text1(4). Text = frmfp dl . C omb ocb r. Text
.WindowState = 2
.Show
. Text 1 (5). SetFocus
End With
Load frmrigiddesign
End Sub

(frmrigiddesign)

Private Sub cmdnext_Click0


e=3 * 10 A 4
m = 0.15
Elpha = 10 * 10 A -6

P = Text 1 (0). Text * 1000


pl = Textl(1).Text
lx = Textl (2). Text * 1000
ly = Text1(3). Text * 1000

If Optionl.Value = True Then


tsub = 75
ElseIf Option2.Value = True Then
tsub = 150
End If
frmfrdo.Text1(12).Text = tsub

cbr = Text1(4). Text

If cbr >= 2 And cbr <= 20 Then

67
k = 1.2 * (-0.0009 * cbr A 4 + 0.0552 * cbr A 3 - 1.2366 * cbr A 2 + 13.43 * cbr - 1.7862) /
1000
Else
k = 1.2 * (2.3667 * cbr + 21.667) / 1000
End If

For tslab = 120 To 300 Step 5


I= ((e * (tslab A 3)) / (12 * (1 - m * m) * k)) A 0.25
'Text7.Text =1
A=((P*7)/(pl *22))^ 0.5
If (A / tslab) >= 1.724 Then
b=A
Else
b = ((1.6 * A A 2 + tslab A 2) A 0.5) - 0.675 * tslab
End If

'Text8.Text = b
t = Text1(6).Text
x=lx/1
If x >= 1 And x <= 4 Then
c=0.0058 *x^3 + 0.0125 *x^2 -0.0383*x+0.02
Else
c = -0.0001*x^5+0.0039*x^4 -0.0556*x^3 + 0.3282 * x A 2 - 0.5202 * x - 0.0777
End If

ste = e * Elpha * t * c / 2
frmoutput.Text1(7).Text = ste
sle = 0.529 * (P / tslab A 2) * (1 + 0.54 * m) * (4 * (Log(1 / b) / Log(10)) + (Log(b) /
Log(10)) - 0.4048)
frm output. Text1(8). Text = sle
fck = Text1(5). Text
Ff = 1.2 * 0.7 * (fck A 0.5)
s = sle + ste
fs = Ff / s
frmoutput. Text1(9). Text = fs
If fs >= 1 Then
frmfrdo.Text1(11).Text = tslab•
GoTo D
Else
If tslab >= 300 Then
MsgBox "Design load is more . so check it. ", vbDefaultButtonl, "Design load"
If vbOK Then
Text 1 (0). SetFocus
Exit Sub
End If
End If
GoTo b
End If

68
b: Next tslab

D: slc = 3 *P * (1 - ((A * 2 A 0.5) /1) A 1.2) / tslab A 2


frmoutput. Text1(10). Text = slc
frmoutput.Hide

frmfrdo. txtwi dth. T ext = Text1(2). Text


frmfrdo.WindowState = 2
frmfrdo. Show
Me.Hide
End Sub

(Frmfrdo)

Private Sub Form_Load()


Me.WindowState = 2
cmdnext.Left = (Screen.Width - cmdnext.Width) / 2 - 1500
cmdback.Left = (Screen.Width - cmdback.Width) / 2 + 1500
End Sub

Private Sub cmdback Click()


Unload Me
frmfpdl.WindowState = 2
frmfpd 1. Show
End Sub

Private Sub cmdnext Click()


For i = 0 To 4 Step 1
If Text2(i).Text = "" Then
MsgBox "Please fill all entries for rates.", vbOKOnly, "Warning"
Exit Sub
End If
Next

w = txtwidth.Text
A = Text2(0). Text * 1000 * w * txtsb . Text / 1000
b = Text2(1).Text * 1000 * w * txtbc.Text / 1000
c = Text2(2).Text * 1000 * w
n=A+b+c
n = Round(n, 2)

D = Text2(3).Text * 1000 * w * Text 1 (11).Text / 1000


e = Text2(4).Text * 1000 * w * Text1(12).Text / 1000
m=D+e
m = Round(m, 2)
n1 = n
ml =m

69
Do Until n1 <= 4500 And ml <= 4500
n1 = n1 / 1.2
ml = ml / 1.2
Loop

n1 = Round(nl, 0)
ml = Round(ml, 0)

With frmgraph
If n m /2 Then
.txtpay.Text = " Flexible Pavement "
Else
.txtpay.Text = " Rigid Pavement "
End If
.Textl.Text = " Rs. " & n
.SF.Height = n1
.SF.Top = .Framel.Height - n1
.Label5.Caption = n
.LabelS.Top = .SF.Top - .LabelS.Height
.Text2.Text = " Rs. " & m
.SR.Height = ml
. SR. Top = .Framel.Height - ml
.Label6.Caption = m
.Label6.Top = .SR.Top - .Label6.Height
.WindowState = 2
.Show
End With
End Sub

Private Sub Labe12_Click(Index As Integer)


frmRA.cmdadd.Visible = True
frmRA. Show
frmRA. txtindex. Text = Lab el2(Ind ex),Index
End Sub

Private Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer)


stuff tab KeyAscii
End Sub

(frmgraph)

Private Sub cmdback_Click()


Unload Me
frmfrdo.WindowState = 2
frmfrdo. Show
End Sub

Private Sub cmdexitClick()

70
Unload Me
Unload frmfrdo
Unload frmrigiddesign
Unload frinfpd1
Unload frmcc
End Sub

Private Sub Form_Load()


Me.WindowState = 2
cmdexit.Left = (Screen.Width - cmdexit. Width) / 2 + cmdback.Width + 3120
cmdback.Left = (Screen.Width - cmdback.Width) / 2 + 1500
SF.Top = Framel .Height - SF .Height
SR.Top = Framel.Height - SR.Height
End Sub

Private Sub Labe15_Click()


Label5.Top = SF.Top - 250
Labe15.Font. Size = 10
End Sub

Private Sub Labe15_MouseMove(13utton As Integer, Shift As Integer, x As Single, Y As


Single)
Label5.Top = SF.Top - 500
Label5 .Font. Size = 20
End Sub

Private Sub Labe16 Click()


Label6.Top = SR.Top - 250
Labe16.Font.Size = 10
End Sub

Private Sub Labe16_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As


Single)
Label6.Top = SR.Top - 500
Lab el6.Font. Size = 20
End Sub

A.3. FLEXIBLE PAVEMENT DESIGN (frmfpdl)

Private Sub Form_Loado


cmdnext.Left = (Screen.Width - cmdnext.Width) / 2 - 1500
cmdback.Left = (Screen.Width - cmdback.Width) / 2 + 1500
Combocbr.Text = "2"
Dim i As Integer
For i = 2 To 20 Step 1
Combocbr.Addltem i
Next i
End Sub

71
Private Sub cmdback_Click()
Unload Me
frmcc. Show
End Sub

Private Sub cmdbacko Click()


Unload Me
frmocmi. Show
End Sub

Private Sub cmdcompute_Click()


Dim cvpd As Double
Dim mvpd As Double
Dim colName As String
Dim qryTh As String
Dim rsPT As New ADODB.Recordset
Dim w, wl, tsb, tb, ts, ot, t As Single

If cmdcompute.Caption = "NEXT" Then


frmocmo.lblmain.Visible = True
Else
frmocmo.lblmain.Visible = False
End If

If txtarf.Text = "" Or txtCVPD.Text = "" Or txtGR.Text = "" Or txtmvpd.Text = "" Or


txtDL.Text = "" Then
MsgBox "Please enter value for all entries.", vbOKOnly, "Warning"
Exit Sub
End If

cvpd = Round((frmfpdl.txtCVPD) * (1 + Val(frmfpd 1 .txtGR) / 100) A


Val(frInfpdl.txtDL))
frmfpd2.txtDT = cvpd
mvpd = Round((frmfpdl.txtmvpd) * (1 + Val(frmfpdl.txtGR) / 100) A
Val(frmfpdl.txtDL))
frmfpd2.txtdmv = mvpd

If cvpd <= 15 Then


colName = "A"
ElseIf cvpd <= 45 And cvpd > 15 Then
colName = "B"
ElseIf cvpd <= 150 And cvpd > 45 Then
colName = "C"
Else
colName = "D"
End If

72
qryTh = "select bc,sbc from pave_thickness where cbr =" & Round(Val(Combocbr)) &
"and cvpd = 1" & colName & "'"
Set rsPT = dbA.Execute(qryTh)

bc = rsPT("bc")
sb = rsPT("sbc")

Set rsPT = Nothing


qryTh =
colName = ""
If mvpd <= 50 Then
colName = "a"
ElseIf mvpd > 50 And mvpd <= 150 Then
colName = "b"
Else
colName = "c"
End If

qryTh = "select " & colName & " from surfacing where " & txtarf & " between 1_rainfall
and h_rainfall"
Set rsPT = dbA.Execute(qryTh)

If cmdcompute.Caption = "NEXT" Then

With frmocmi
w = Text1(0). Text
wl = . Text1(4). Text
tsb = Text1(1). Text
tb = .Text1(2).Text
If .Optionl.Value = True Or .Option3.Value = True Then
is = Text1(3). Text
Else
ts = 0
End If
End With

t = tsb
t=t+tb
t=t+ts
't = tsb + tb + ts

With frmocmo
If wl <> w Then
.txtsb 1. Text = sb
.txtbc1.Text = bc
.txtpctl.Text = sb + bc
.txtsurfl.Text = rsPT(colName)
ElseIf w = wl Then

73
.txtsbl.Text = 0
.txtbc 1. Text = 0
.txtpctl.Text = 0
.txtsurfl.Text = 0
End If
.txtDT = cvpd
.txtdmv = mvpd
.txtw.Text = w
.txtw 1 . Text = w1
.txtt.Text = t
If t <= sb Then
sb = sb - t
.txtsb = sb
.txtbc = be
.txtpct = sb + be
.txtsurf = rsPT(colName)
ElseIf t > sb Then
of=t-sb
sb = 0
If of <= be Then
bc = bc - ot
.txtsb = sb
.txtbc = be
.txtpct = sb + be
.txtsurf = rsPT(colName)
ElseIf of > be Then
lblmain = " NO OVERLAY REQUIRED "
.txtsb = 0
.txtbc = 0
.txtpct = 0
.txtsurf = "Thin Bituminous Surfacing (2- Coat S.D.)"
.Label6.Caption = " * For improve riding quility provide thin Surfacing.
End If

End If

End With
frmfpd 1 .Hide
frmfpd2.Hide
frmocmo.WindowState = 2
frmocmo. Show
End If

If cmdcompute.Caption = "Compute" Then


frmfpd2.txtbc = be
frmfpd2.txtsb = sb
frmfpd2.txtpct = be + sb
frmfpd2.txtsurf = rsPT(colName)

74
frmfp d 1 .Hi de
frmocmo.Hide
frmfpd2. Show
End If
End Sub

Private Sub Command l Click()


Unload Me
End Sub

Private Sub Combocbr_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtDL_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtDT_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtGR_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtmvpd_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtCVPD_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtarf KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

(frmfpd2)

Private Sub Form_Load()


setDB "PMGSY.mdb"
End Sub

Private Sub cmdend_Click()


If frmfpdl.cmdcompute.Caption = "NEXT" Then
Unload frmocmi
End If

75
Unload frmfpd1
Unload Me
End Sub

Private Sub cmdnew_Click()


txtarf = ""
txtDL = ""
txtdmv = ""
txtDT = ""
txtGR = ""
Unload Me
frmfpdl.WindowState = 2
frmfpd 1. Show
End Sub

Private Sub cmdprint_Click()


On Error GoTo err Para
crl.ReportFileName = App.Path & " TavementDesign: rpt"
crl.ParameterFields(0) = "pmRoad;" & "" & "; true"
crl.ParameterFields(1) = "pmPkg;" & "" & "; true"
crl.ParameterFields(2) = "pmdist;" & "" & "; true"
crl.ParameterFields(3) = "pmblock;" & "" & "; true"
crl.PaiameterFields(4) = "pmCVPD;" & Val(frmfpd1.txtCVPD) & "; true"
cr 1 .ParameterFields(5) = "pmMVPD;" & Val(frmfpd 1 .txtmvpd) & "; true"
cr 1 .ParameterFields(6) = "pmCBR; " & Val(frmfpd 1 . Comb ocbr) & "; true"
cr 1 .ParameterFields(7) = "pmGR;" & Val(frnifpd1 .txtGR) & "; true"
crl .ParameterFields(8) = "pmRF;" & Val(frmfpd 1 . txtarf) & "; true"
cr 1 .ParameterFields(9) = "pmDL;" & Val(frmfpd 1 .txtDL) & "; true"
crl.ParameterFields(10) = "pmDT;" & Val(txtDT) & "; true"
crl .ParameterFields(1 1) = "pmCT;" & Val(txtpct) & "; true"
crl.ParameterFields(12) = "pmSB;" & Val(txtsb) & "; true"
crl.ParameterFields(13) = "pmBC;" & Val(txtbc) & "; true"
crl.ParameterFields(14) = "pmSurf;" & txtsurf & "; true"
crl.Action = 1
Exit Sub
err Para:
MsgBox Err.Description
End Sub

Private Sub Commandl_Click()


frmCAFP. Show
End Sub

(frm CAFP)

Private Sub cmdclose_Click0


Unload Me
End Sub

76
Private Sub Form_Load()
txtbc = frmfpd2.txtbc
txtsb = frmfpd2.txtsb
txtpct = frmfpd2.txtpct
txtsurf = frmfpd2.txtsurf
cmdclose.Left = (Screen.Width - cmdclose.Width) /
Picturel.Picture = LoadPicture(App.Path & "\FLEXIBLE.bmp")
End Sub

A.4. RIGID PAVEMENT DESIGN (frmrigiddesign)

Private Sub Form_Load()


Me.WindowState = 2
cmdnext.Left = (Screen.Width - cmdnext.Width) / 2 - 1500
cmdback.Left = (Screen.Width - cmdback.Width) / 2 + 1500
Option3 .Value = True
frmrigiddesign.Width = 12000
frmrigiddesign.Height = 8500
frmrigiddesign.Left = (Screen.Width - frmrigiddesign.Width) / 2
frmrigiddesign.Top = (Screen.Height - frmrigiddesign.Height) / 2
End Sub

Private Sub cmdback_Click()


Unload Me
frmfpdl.WindowState = 2
frinfpdl. Show
End Sub

Private Sub cmddesign_Click()


e=3*10"4
m = 0.15
Elpha = 10 * 10 A -6

P = Text 1 (0). Text * 1000


pl = Textl(1).Text
lx = Text1(2). Text * 1000
ly = Text1(3). Text * 1000

If Optionl.Value = True Then


tsub = 75
ElseIf Option2.Value = True Then
tsub = 150
End If
frmoutput.Text1(12).Text = tsub
If Option3.Value = True Then
Text1(4).SetFocus
k = T ext1(4). Text

77
ElseIf Option4.Value = True Then
Text 1 (4). S etFocus
cbr = Text1(4). Text
If cbr >= 2 And cbr <= 20 Then
k = 1.2 * (-0.0009 * cbr A 4 + 0.0552 * cbr A 3 - 1.2366 * cbr A 2 + 13.43 * cbr - 1.7862) /
1000
Else
k = 1.2 * (2.3667 * cbr + 21.667) / 1000
End If
End If

For tslab = 120 To 300 Step 5


1= ((e * (tslab A 3)) / (12 * (1 - m * m) * k)) A 0.25
'Text7.Text =1
A = ((P * 7) / (pl * 22)) A 0.5
If (A / tslab) >= 1.724 Then
b=A
Else
b = ((1.6 * A A 2 + tslab A 2) A 0.5) - 0.675 * tslab
End If

'Text8.Text = b
t = Text1(6). Text
x=lx/1
If x >= 1 And x <= 4 Then
c=0.0058 *x"3 + 0.0125 *x^2 - 0.0383*x+ 0.02
Else
c = -0.0001 *x^5+0.0039*x^4- 0.0556*x^3 +0.3282 *x^2 - 0.5202*x- 0.0777
End If

ste = e * Elpha * t * c / 2
frmoutput.Textl(7).Text = ste
sle = 0.529 * (P / tslab A 2) * (1 + 0.54 * m) * (4 * (Log(1 / b) / Log(10)) + (Log(b) /
Log(10)) - 0.4048)
frmoutput. Text1(8). Text = sle
fck = Text1(5). Text
Ff = 1.2 * 0.7 * (fck A 0.5)
s = sle + ste
fs = Ff / s
frmoutput. Text1(9). Text = fs
If fs >= 1 Then
frmoutput.Text1(11).Text = tslab
GoTo D
Else
If tslab >= 300 Then
MsgBox "Design load is more so check it. ", vbDefaultButtonl, "Design load"
If vbOK Then
Text1(0). SetFocus

78
Exit Sub
End If
End If
GoTo b
End If
b: Next tslab

D: slc = 3 * P * (1 - ((A * 2 A 0.5) /1) A 1.2) / tslab A 2


frmoutput.Text1(10).Text = slc
For i = 7 To 10
frmoutput.Textl(i).Text = Round(frmoutput.Textl(i).Text, 2)
Next
frmoutput. Show
Me.Hide
End Sub

Private Sub cmdnew_Click()


For i = 0 To 6 Step 1
Textl(i). Text = " "
Next
End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub Labe12_Click()


frmHRP. Show
End Sub

Private Sub Optionl_Click()


If Optionl.Value = True Then
Textl(0).Text = 30
Textl(1).Text = 0.5
T ext1(2) . Text = 3#
Text1(3). Text = 3#
End If
End Sub

Private Sub Optionl_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub Option2_Click()


If Option2.Value = True Then
Textl(0).Text = 51
Textl(1).Text = 0.7
Text1(2).Text = 3.75

79
Text1(3). Text = 3.75
End If
End Sub

Private Sub Option2 KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub Option3 KeyPress(KeyAscii As Integer)


stuff_tab KeyAscii
End Sub

Private Sub Option4_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub Textl KeyPress(Index As Integer, KeyAscii As Integer)


stuff tab KeyAscii
End Sub

(frmoutput)

Private Sub cmdexit_Click()


Unload frmrigiddesign
Unload Me
End Sub

Private Sub cmdnew_Click()


Unload Me

For i = 0 To 6 Step 1
frmrigidd esign. Textl(i).T ext = ""
Next
frmrigiddesign. Show
End Sub

Private Sub cmdprint_Click()


Printer.Print ""
Printer.FontName = "arial"
Printer.FontSize = 18
Printer.FontBold = True
Printer.Print frmrigiddesign.Label1(0).Caption
Printer.Print ""
Printer.FontSize = 16
Printer.FontBold = False
Printer.Print " INPUT DATA : "
Printer.Print ""

80
If frmrigiddesign.Optionl.Value = True Then
Printer.Print " ", "Traffic : ", frmrigiddesign.Optionl.Caption
ElseIf frmrigiddesign.Option2.Value = True Then
Printer.Print " ", "Traffic : ", frmrigiddesign.Option2.Caption
End If
For i = 0 To 3
Printer.Print " ", frmrigiddesign.Labell(i + 1).Caption, frmrigiddesign.Textl(i).Text
Next i
If frmrigiddesign.Option3.Value = True Then
Printer.Print " ", frmrigiddesign.Option3.Caption, frmrigiddesign.Text1(4).Text
ElseIf frmrigiddesign.Option4.Value = True Then
Printer.Print " ", frmrigiddesign.Option4.Caption, frmrigiddesign.Text1(4).Text
End If
For i = 5 To 6 Step 1
Printer.Print " ", frmrigiddesign.Labell(i).Caption, frmrigiddesign.Textl(i).Text
Next i
Printer.Print ""
Printer.Print " ANALYSIS RESULTS : "
Printer.Print ""
For i = 7 To 10 Step 1
Printer.Print " ", Labell(i).Caption, Text' (i).Text
Next i
Printer.Print ""
Printer.Print " DESIGN RESULTS :
Printer.Print ""
For i = 11 To 12 Step 1
Printer.Print " ", Labell (i).Caption, Textl(i).Text
Next i
Printer.EndDoc
End Sub

Private Sub cmdsave_Click()


cd11.Filter = "*.txtl*.txt"
cd11.ShowSave

Dim j As Integer
Dim intf As Integer
intf = FreeFile

Open cd11.FileName For Output As #intf

Print #intf, ""


Print #intf, "", frmrigiddesign.Label1(0).Caption
Print #intf, ""
Print #intf, " INPUT DATA : "
Print #intf, ""
If frmrigiddesign.Optionl.Value = True Then

81
Print #intf, " ", "Traffic : ", frinfigiddesign.Optionl .Caption
ElseIf frmrigiddesign.Option2.Value = True Then
Print #intf, " ", "Traffic : ", frmrigiddesign.Option2.Caption
End If
For j = 0 To 3
Print #ihtf, " ", frmrigiddesign.Labell(j + 1).Caption, frmrigiddesign.Textl(j).Text
Next j
If frmrigiddesign.Option3.Value = True Then
Print #intf, " ", frmrigiddesign.Option3.Caption, frrnrigiddesign.Text1(4).Text
ElseIf frmrigiddesign.Option4.Value = True Then
Print #intf, " ", frmrigiddesign.Option4.Caption, frmrigiddesign.Text1(4).Text
End If
For j = 5 To 6
Print #intf, " ", frmrigiddesign.Labell(j).Caption, frmrigiddesign.Textl(j).Text
Next j
Print #intf, ""
Print #intf, " ANALYSIS RESULTS :
Print #intf, ""
For j =7 To 10
Print #intf, "", Labell(j).Caption, Textl(j).Text
Next j
Print #intf, ""
Print #intf, " DESIGN RESULTS :
Print #intf, ""
For j = 11 To 12
Print #intf, "", Labell(j).Caption, Textl(j).Text
Next j
Close #intf
End Sub

Private Sub Commandl_Click()


frmCARP. Show
End Sub

(frmCARP)

Private Sub cmdclose_Click()


Unload Me
End Sub

Private Sub Form_Load()


Lab ell(0).Left = (Screen.Width - Labell(0).Width) / 2
Text1(11). Text = frmoutput. T extl (11). Text
Text1(12). Text = frmoutput. T ext1(12). Text
cmdclose.Left = (Screen.Width - cmdclose.Width) / 2
P i cturel .Pi cture = LoadPicture(App.Path & " \ RIGID . b mp " )
End Sub

82
A.5. OVERLAY DESIGN - BENKELMAN BEAM METHOD (frmobbm)

Private Sub Form_Load()


Optl.Value = True
End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdnext_Click()


Dim f, D, r, x As Single
Dim n, P As Double

For i = 0 To 4 Step 1
If Textl(i). Text = "" Then
MsgBox "Please fill all entries.", vbOKOnly, "Warning"
Exit Sub
End If
Next

If Optl.Value = True Then


f=2
ElseIf Opt2.Value = True Then
f = 0.75
ElseIf Opt3.Value = True Then
f = 0.4
ElseIf Opt4.Value = True Then
f = 0.75
ElseIf Opt5.Value = True Then
f = 0.6
ElseIf Opt6.Value = True Then
f = 0.48
End If

P = Textl(0).Text
r = Text 1 (1). Text / 100
x = Textl(2).Text
D = Textl(3).Text

n=365 *D*f*P*(((1 +r)Ax)- 1)/r


frmdata.txtns. Text = n / 1000000
Me.Hide
frmdata. Show
End Sub

Private Sub cmdopen_Click()


Dim nm As Integer

83
Dim i As Integer
Dim fs As String
Dim strl As String
cdll.DialogTitle = "Opening a File"
cd11.Filter = "*.xlsj*.xls"
cd11.Show0pen

fs = cdll.FileName
strl = cdll.FileName
On Error GoTo 11
11:
If Err.Number Then MsgBox Err.Description
strl = frmobbm.cdll.FileName
Dim app2 As Excel.Application
Dim wb2 As Excel.Workbook
Dim ws2 As Excel. Worksheet
Dim mg As Excel.Range
Set app2 = New Excel.Application
Set wb2 = app2.Workbooks.Open(str1)
Set ws2 = wb2.Sheets("Sheetl")
frmobbm.Textl(4).Text = ws2.Cells(2, 1)
nm = ws2.Cells(2, 1)
For i = 1 To nm
frmdata.Gridl.TextMatrix(i, 1) = ws2.Cells(i + 1, 2)
frmdata.Gridl.TextMatrix(i, 2) = ws2.Cells(i + 1, 3)
Next i
frmdata.Gridl.TextMatrix(1, 1) = 0
frindata.Hide
End Sub

Private Sub Commandl_Click()


fnmvdf.Show
End Sub

Private Sub Textl_KeyPress(Index As Integer, KeyAscii As Integer)


stuff tab KeyAscii
End Sub

(frmvdf)

Private Sub cmdok Click()


Unload Me
End Sub

Private Sub Form_Loado


Label 1 . Left = (Me.Width - Label 1 .Width) / 2
cmdok.Left = (Me.Width - cmdok.Width) / 2
Imagel.Picture = LoadPicture(App.Path & "\VDF.bmp")

84
End Sub

(frmdata)

Option Explicit

Private Sub cmdback_Click()


Unload Me
frmobbm. Show
End Sub

Private Sub cmdnext_Click()


Dim sum, s, m, n, i As Integer
Dim b, std As Single

n = frmobbm. Text1(4). Text

For i = 1 Ton
If Gridl.TextMatrix(i, 1) = "" Or Gridl.TextMatrix(i, 2) = "" Then
MsgBox "Please fill all input data.", vbOKOnly, "Warning"
Exit Sub
End If
Next

For i = 1 To n
frmDataEntry.Gridl.TextMatrix(i, 1) = (frmdata.Gridl.TextMatrix(i, 2) -
frmdata.Gridl.TextMatrix(i, 1)) * 2 * 0.01
Next
b = (frmdata.Grid1.TextMatrix(1, 2) - frmdata.Grid1.TextMatrix(1, 1)) * 2 * 0.01
frmDataEntry.txt.Text = b
frmDataEntry.Gridl.TextMatrix(1, 1) = b

Me.Hide
frmDataEntry. Show
End Sub

Private Sub Commandl Click()


cd11.ShowO'pen
End Sub

Private Sub Form_Load()


Dim i As Integer
Gridl.Width = 6550
Gridl.Height = 5000
Gridl.Top = 3000
Gridl.Left = (frmdata.Width - Gridl.Width) / 2

85
Labell .Left = (frmdata.Width - Labell .Width) / 2
Labell.Top = 500
Gridl.Rows = frm obbm. Text1(4). Text + 1

Gridl.ColWidth(0) = 600
For i = 1 To Gridl.Rows - 1
Gridl.TextMatrix(i, 0) = i
Next
For i = 1 To 2
Gridl.ColWidth(i) = 2800
Next
Gridl.FixedAlignment(0) = 4
Grid1.TextMatrix(0, 0) = "NO."
Gridl.FixedAlignment(1) = 4
Gridl.TextMatrix(0, 1) = "Initial Dial Gauge Reading"
Gridl.FixedAlignment(2) = 4
Grid1.TextMatrix(0, 2) = "Final Dial Gauge Reading"
Gridl.Row = 1
Gridl .col = 1
SetTextbox
End Sub
Private Sub Grid l_EnterCell()
' Make sure the user doesn't attempt to edit the fixed cells
If Gridl.MouseRow = 0 Or Gridl.MouseCol = 0 Then
Textl.Visible = False
Exit Sub
End If
' clear contents of current cell
Textl.Text = ""
' place Textbox over current cell
Textl.Visible = False
Textl.Top = Gridl.Top + Gridl.CellTop
Textl.Left = Gridl.Left + Gridl.CellLeft
Textl.Width = Gridl.CellWidth
Textl .Height = Gridl.CellHeight
' assing cell's contents to Textbox
Textl.Text = Gridl.Text
' move focus to Textbox
Textl.Visible = True
Textl.SetFocus
End Sub

Private Sub Gridl_LeaveCell()


Gridl.Text = Textl.Text
End Sub
Sub SetTextbox()
Textl.Visible = False
Textl.Top = Gridl.Top + Gridl.CellTop

86
Textl.Left = Gridl.Left + Gridl.CellLeft
Textl.Height = Gridl.CellHeight
Textl.Width = Gridl.CellWidth
Textl. Text = Gridl . Text
Textl. Visible = True
End Sub

Private Sub Textl KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Gri dl. col = Gridl. Col s - 1 Then
If Gridl.Row = Gridl.Rows - 1 Then
Exit Sub
Else
Grid1Row = Gridl.Row + 1
End If
Gridl.col = 1
Else
Gridl.col = Gridl.col + 1
End If
End If
End Sub

(frmdataentry)

Private Sub Form_Load0


Dim i As Integer
txt.Top = 2795
txt.Left = 4600
txt.Height = 180
txt.Width = 3505
Gridl .Width = 4450
Gridl.Height = 5400
Gridl. Top = 2500
Gridl.Left = 4000
Grid 1.Rows = frmobbm. Text1(4). Text + 1

Gridl.ColWidth(0) = 600
For i = 1 To Gridl.Rows - 1
Gridl.TextMatrix(i, 0) = i
Next

Gridl.ColWidth(1) = 3500

Gridl.FixedAlignment(0) = 4
Gridl.TextMatrix(0, 0) = "NO."
Gridl.FixedAlignment(1) = 4
Gridl.TextMatrix(0, 1) = "Rebound Deflection (mm)"

87
Grid 1 .Row = 1
Grid 1 . tol = 1
SetTextbox

End Sub
Private Sub Gridl_EnterCell()
' Make sure the user doesn't attempt to edit the fixed cells
If Gridl.MouseRow = 0 Or Gridl.MouseCol = 0 Then
Textl.Visible = False
Exit Sub
End If
' clear contents of current cell
Textl.Text = ""
' place Textbox over current cell
Textl.Visible = False
Textl.Top = Gridl.Top + Gridl.CellTop
Textl.Left = Gridl .Left + Gridl.CellLeft
Textl.Width = Gri d 1 .CellWidth
Textl.Height = Gridl.CellHeight
' assing cell's contents to Textbox
Textl.Text = Gridl.Text
' move focus to Textbox
Textl.Visible = True
Textl.SetFocus
End Sub

Private Sub Gridl_LeaveCell()


Gridl.Text = Textl.Text
End Sub
Sub SetTextbox()
Textl.Visible = False
Textl.Top = Gridl.Top + Gridl.CellTop
Textl.Left = Gridl.Left + Gridl.CellLeft
Textl.Height = Gridl.CellHeight
Textl.Width = Gridl.CellWidth
Textl.Text = Gridl.Text
Textl.Visible = True
End Sub

Private Sub Textl_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Gridl.col = Gridl.Cols - 1 Then
If Grid 1 .Row = Grid 1 .Rows - 1 Then
Exit Sub
Else
Grid 1 .Row = Grid 1 .Row + 1
End If

88
Gridl.col = 1
Else
Gridl.col = Gridl.col + 1
End If
End If
End Sub

(frmobbml)

Private Sub Form_Load()


Optl.Value = True
Opt3.Value = True
End Sub

Private Sub cmdback_Click()


Unload Me
frmDataEntry. Show
End Sub

Private Sub cmdnext_Click()


Dim pi, D, x, ar, te As Single
Dim moc, tec As Single
Dim ns As Double
pi = Text1(0).Text
x = Text1(1). Text
ar = Text1(2). Text
te = Text1(3).Text

ns = frmdata.txtns.Text
std = frmDataEntry.txtstd.Text
std = Round(std, 3)
mean = frmDataEntry.txtmean.Text
mean = Round(mean, 3)

If Optl.Value = True Then


D = mean + 2 * std
ElseIf Opt2.Value = True Then
D = mean + 1 * std
End If

For i = 0 To 3 Step 1
If Textl(i).Text = "" Then
MsgBox "Please fill all entries.", vbOKOnly, "Warning"
Exit Sub
End If
Next

If (pi <= 5 And ar <= 1300) Then

89
If x < 4 Then
MsgBox "IRC recommend minimum M.C. is 4.0 %", vbOKOnly, "Warning"
Exit Sub
Elselfx > 11 Then
MsgBox "IRC recommend maximum M.0. is 11 %", vbOKOnly, "Warning"
Exit Sub
Else
moc = 3.36338 - 0.951626 * x + 0.146604 *x* x - 0.0101149 *x *x *x + 0.000261986 *
* * *
xxxx
End If
End If

If (pi <= 5 And ar > 1300) Then


If x < 4 Then
MsgBox "IRC recommend minimum M.C. is 4.0 %", vbOKOnly, "Warning"
Exit Sub
Elselfx > 13 Then
MsgBox "IRC recommend maximum M.C. is 13 %", vbOKOnly, "Warning"
Exit Sub
Elselfx = 4 And x <= 4.55 Then
moc = Exp(-0.0663044 * x) * 1.79913
Elselfx > 4.55 And x < 5.55 Then
moc = Exp(-0.0308886 * x) * 1.52295
Elselfx >= 5.55 And x < 7 Then
moc = Exp(-0.0487901 * * 1.68926
Elselfx >= 7 And x < 9 Then
moc= 2.15975 - 0.197128*x+ 0.00856955 *x*x+ 0.0000000794729 * x * x * x
Else
moc=-2.68051 + 1.42657*x- 0.196485*x*x+ 0.011686 *x*x*x
End If
End If

If pi > 5 And pi <= 15 And ar <= 1300 Then


If x < 4 Then
MsgBox "IRC recommend minimum M.C. is 4.0 %", vbOKOnly, "Warning"
Exit Sub
Elselfx > 22 Then
MsgBox "IRC recommend maximum M.C. is 22 %", vbOKOnly, "Warning"
Exit Sub
Else
moc = 2.42636 - 0.504809 * x + 0.164585 * x * x - 0.034013 * x * x * x + 0.0040066 *
x*x*x- 0.000273956*x*x*x*x*x+0.0000108239*x*x*x*x*x*x-
0.000000229835*x*x*x*x*x*x*x+ 0.00000000203372 *x*x*x*x*x*x*x
*x
End If
End If

If pi > 5 And pi <= 15 And ar > 1300 Then

90
If x < 4 Then
MsgBox "IRC recommend minimum M.C. is 4.0 %", vbOKOnly, "Warning"
Exit Sub
ElseIf x > 22 Then
MsgBox "IRC recommend maximum M.C. is 22 %", vbOKOnly, "Warning"
Exit Sub
Else
moc = 2.11368 + 0.114136 *x - 0.0820186 *x *x + 0.0127868 *x *x *x - 0.000982172
*x*x*x*x+ 0.0000412843 *x*x*x*x*x- 0.0000009121*x*x*x*x*x*x+
0.00000000831275 *x*x*x*x*x*x*x
End If
End If

If pi > 15 And ar <= 1300 Then


If x < 4 Then
MsgBox "IRC recommend minimum M.C. is 4.0 %", vbOKOnly, "Warning"
Exit Sub
ElseIf x > 20 Then
x = 20
moc =2.17972 + 0.321777 *x- 0.1915 *x*x + 0.0335407 *x*x*x - 0.00296979*x*
x*x*x+0.000144624*x*x*x*x*x- 0.00000370245 *x*x*x*x*x*x+
0.0000000390608 *x*x*x*x*x*x*x
Else
moc = 2.17972 + 0.321777 *x - 0.1915 *x*x + 0.0335407 *x * x*x - 0.00296979 *x
x*x*x+0.000144624*x*x*x*x*x-0.00000370245*x*x*x*x*x*x+
0.0000000390608 *x*x*x*x*x*x*x
End If
End If

If pi > 15 And ar > 1300 Then


If x < 4 Then
MsgBox "IRC recommend minimum M.C. is 4.0 %", vbOKOnly, "Warning"
Exit Sub
ElseIf x > 20 Then
MsgBox "IRC recommend maximum M.C. is 20 %", vbOKOnly, "Warning"
Exit Sub
Else
moc = 4.23472 - 0.861084 * x + 0.104487 * x * x - 0. 00665521 * x * x * x + 0.000215392
*x*x*x*x- 0.00000280946*x*x*x*x*x
End If
End If

If Opt3.Value = True Or Opt4.Value = True Then


tec = 0
ElseIf Opt5.Value = True Then
tec = (35 - te) * 0.01
End If

91
D = (D + tec) * moc

If D < 6 Then

If ns <= 0.1 Then

If D <= 3 Then
'frmobbmo.Labell2 = " NO OVERLAY REQUIRED "
Y=0
ElseIf D > 3 And D < 3.4 Then
Y = -300 + 100 * D
ElseIf D > 3.4 And D <= 5 Then
Y = -2500.73 + 2105.25 * D - 669.073 * D * D + 97.8863 * D * D * D - 5.46331 * D * D
*D*D
ElseIf D > 5 Then
Y=-526.422+ 284.714*D- 42.6596*D*D+2.31487*D*D*D
End If

ElseIf ns > 0.1 And ns <= 0.5 Then

IfD <= 2 Then


Y=0
ElseIf D > 2 And D <= 2.2 Then
Y1 = 300 + 100 * D
Y2 = -780 + 590 * D - 100 * D * D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(0.1)) / (Log(0.5) - Log(0.1))
ElseIf D > 2.2 And D <= 4.2 Then
Y1 = -2500.73 + 2105.25 * D - 669.073 * D * D + 97.8863 * D * D * D - 5.46331 * D * D
*D*D
Y2 = -1011.76 + 1051.39 * D - 386.658 * D * D + 66.5798 * D * D * D - 4.37067 * D * D
*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(0.1)) / (Log(0.5) - Log(0.1))
ElseIf D > 4.2 Then
Y1 -526.422 + 284.714*D- 42.6596 *D*D+ 2.31487 *D*D*D
Y2 = 2950.54 - 2369.18 *D + 733.017 *D *D - 98.59 *D *D *D + 4.91697 *D* D *
D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(0.1)) / (Log(0.5) - Log(0.1))
End If

ElseIf ns > 0.5 And ns <= 1 Then

IfD <= 1.7 Then


Y=0
Elseif D > 1.7 And D <= 2.2 Then
Y1 = -780 + 590 * D - 100 * D * D
Y2 = -744.822 + 667.56 * D - 133.03 * D *D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(0.5)) / (Log(1) - Log(0.5))
ElseIf D > 2.2 And D <= 4.2 Then

92
Y1 = -1011.76 + 1051.39 * D - 386.658 * D * D + 66.5798 * D * D * D - 4.37067 * D * D
*D*D
Y2 = 1220.65 - 2294.21 * D + 1663.44 * D * D - 564.869 * D * D * D + 93.0582 * D * D
*D*D- 6.00963 *D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(0.5)) / (Log(1) - Log(0.5))
ElseIfD > 4.2 Then
Y1 = 2950.54 - 2369.18 *D + 733.017 *D *D - 98.59 *D*D *D + 4.91697 *D *D *
D*D
Y2 = -6562.5 + 5264.78 * D - 1541.59 * D * D + 200.526 * D * D * D - 9.74284 * D * D
*D * D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(0.5)) / (Log(1) - Log(0.5))
End If

ElseIf ns > 1 And ns <= 2 Then


If D <= 1.4 Then
Y=0
ElseIf D > 1.4 And D <= 1.8 Then
Y1 = -744.822 + 667.56 * D - 133.03 * D * D
Y2 = -825.999 + 904.999 * D - 225 * D * D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(1)) / (Log(2) - Log(1))
ElseIf D > 1.8 And D <= 3.8 Then
Y1 = 1220.65 - 2294.21 * D + 1663.44 * D * D - 564.869 * D * D * D + 93.0582 * D * D
*D*D- 6.00963 *D*D*D*D*D
Y2 = -10337.6 + 22012.6 * D - 19229.5 * D * D + 8868.14 *D * D *D - 2269.51 * D *D
*D*D+305.533*D*D*D*D*D-16.9143*D*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(1)) / (Log(2) - Log(1))
ElseIfD > 3.8 Then
Y1 = -6562.5 + 5264.78 * D - 1541.59 * D * D + 200.526 * D * D * D - 9.74284 * D * D
*D*D
Y2 = 11318.6 - 10986 * D + 4285.26 * D * D - 826.933 * D * D * D + 79.1258 * D * D *
D*D-3.00477*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(1)) / (Log(2) - Log(1))
End If

ElseIf ns > 2 And ns <= 5 Then

If D <= 1.1 Then


Y=0
ElseIfD > 1.1 And D <= 1.4 Then
Y1 = -825.999 + 904.999 * D - 225 * D * D
Y2 = -852.231 + 1167.28 * D - 357.648 * D * D
Y = Y1 + (Y2 - Yl) * (Log(ns) - Log(2)) / (Log(5) - Log(2))
ElseIfD > 1.4 And D <= 4 Then
Y1 = -10337.6 + 22012.6 *D - 19229.5 *D*D + 8868.14 *D *D *D - 2269.51 *D*D
*D*D+305.533*D*D*D*D*D-16.9143*D*D*D*D*D*D
Y2 = -197.981 + 289.289 * D - 78.5351 * D * D + 9.26507 * D * D * D - 0.302621 *D
*D*D*D
Y = Yl + (Y2 - Y1) * (Log(ns) - Log(2)) / (Log(5) - Log(2))

93
ElseIfD > 4 Then
Y1 = 11318.6 - 10986 *D + 4285.26 *D*D - 826.933 *D*D *D + 79.1258 *D*D *
D *D-3.00477*D*D*D*D*D
Y2=1064.92 - 780.563 *D+254.88 *D*D-35.45*D*D*D+ 1.8211*D*D*
D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(2)) / (Log(5) - Log(2))
'ElseIf D > 4 Then
'y = 4.23472 - 0.861084 *D + 0.104487 *D *D - 0.00665521 *D *D *D +
0.000215392 * D * D * D * D -0.00000280946*d*d*d*d*d
End If

ElseIf ns > 5 And ns <= 10 Then

If D <= 1 Then
Y=0
ElseIf D > 1 And D <= 1.2 Then
Y1 = -852.231 + 1167.28 * D - 357.648 * D * D
Y2 = -1090 + 1677.5 * D - 587.5 * D * D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(5)) / (Log(10) Log(5))
ElseIf D > 1.2 And D <= 4 Then
Y1 = -197.981 + 289.289 * D - 78.5351 * D * D + 9.26507 * D * D * D - 0.302621 * D *
D*D*D
Y2 = -314.271 + 564.41 * D - 281.237 * D * D + 89.2033 * D * D * D - 20.3263 * D *
D *D*D+3.13528*D*D*D*D*D-0.226204*D*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(5)) / (Log(10) - Log(5))
ElseIf D > 4 Then
Y1=1064.92- 780.563*D+ 254.88*D*D-35.45*D*D*D+1.8211*D*D*D
*D
Y2 = -13374.6 + 13752.4 * D - 5559.93 * D * D + 1121.69 * D * D * D - 112.681 * D *
D *D*D+4.50725*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(5)) / (Log(10) - Log(5))
'ElseIf D > 4 Then
'y= 2*d
End If

ElseIf ns > 10 And ns <= 20 Then

If D <= 0.8 Then


Y=0
ElseIf D > 0.8 And D <= 1 Then
Y1 = -1090 + 1677.5 * D - 587.5 *D *D
Y2 =-556 + 975 *D- 350 *D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(10)) / (Log(20) - Log(10))
ElseIf D > 1 And D <= 3.2 Then
Y1 = -314.271 + 564.41 * D - 281.237 * D * D + 89.2033 * D * D * D - 20.3263 * D * D
*D*D+3.13528*D*D*D*D*D- 0.226204 *D*D*D*D*D*D

94
Y2 = -1777.3 + 5971.79 * D - 8651.58 * D * D + 7446.22 * D * D * D - 4116.15 * D *
D *D*D+ 1517.67*D*D*D*D*D-377.882*D*D*D*D*D*D+ 62.8639*
D *D*D*D*D*D*D- 6.70476*D*D*D*D*D*D*D*D+ 0.415031*D*
D *D*D*D*D*D*D*D-0.0113463*D*D*D*D*D*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(10)) / (Log(20) - Log(10))
ElseIf D > 3.2 Then
Y1 = -13374.6 + 13752.4 * D - 5559.93 * D * D + 1121.69 * D * D * D - 112.681 * D *
D *D*D+ 4.50725 *D*D*D*D*D
Y2 = 1472.51 - 1461.09 * D + 646.797 * D * D - 136.31 * D * D * D + 13.9447 * D *
D *D*D- 0.556309*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(10)) / (Log(20) - Log(10))
'ElseIf D > 3.2 Then
'y = 2 *D
End If

ElseIf ns > 20 And ns <= 100 Then

If D <= 0.52 Then


Y=0
ElseIf D > 0.52 And D <= 0.625 Then
Y1 =-556 + 975 *D - 350 *D*D
Y2 = -686.304 + 1936.3 * D - 1165.22 * D * D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(20#)) / (Log(100#) - Log(20#))
ElseIf D > 0.625 And D <= 0.8 Then
Y=-311 +855*D- 400 *D*D
ElseIf D > 0.8 And D <= 2.8 Then
Y1 = -1777.3 + 5971.79 * D - 8651.58 * D * D + 7446.22 * D * D * D - 4116.15 * D * D
*D*D+1517.67*D*D*D*D*D-377.882*D*D*D*D*D*D+ 62.8639*D
*D*D*D*D*D*D-6.70476*D*D*D*D*D*D*D*D+0.415031*D*D
*D*D*D*D*D*D*D- 0.0113463 *D*D*D*D*D*D*D*D*D*D
Y2 = -50.5197 + 198.747 * D + 99.0281 *D *D - 149.348 *D * D *D + 56.363 *D *D
*D*D- 7.01123 *D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(20)) / (Log(100) - Log(20))
ElseIfD > 2.8 Then
Y1 = 1472.51 - 1461.09 *D + 646.797 *D *D - 136.31 *D * D *D + 13.9447 *D * D *
D *D- 0.556309*D*D*D*D*D
Y2 = -4181.08 + 6255.88 * D - 3639.52 * D * D + 1115.17 * D * D * D - 188.94 * D *
D *D*D+ 16.7783 *D*D*D*D*D- 0.610524*D*D*D*D*D*D
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(20)) / (Log(100) - Log(20))
End If

ElseIf ns > 100 Then

If D < 0.52 Then


Y=0
ElseIf D > 0.52 And D <= 0.625 Then
Y1 = -686.304 + 1936.3 * D - 1165.22 * D * D
Y2 = 1.03 * (-686.304 + 1936.3 * D - 1165.22 * D * D)

95
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))
ElseIfD > 0.625 And D <= 0.8 Then
Y2=-311 + 855 *D-400*D*D
Y1 = 1.841 * (-311 +855 *D - 400 *D*D)
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))
ElseIf D > 0.8 And D <= 0.9 Then
Y1 = -50.5197 + 198.747 *D + 99.0281 *D*D - 149.348 *D *D *D + 56.363 *D*D
*D*D- 7.01123 *D*D*D*D*D
Y2 = 1.3471 * (-50.5197 + 198.747 *D + 99.0281 *D *D - 149.348 * D* D*D +
56.363 *D*D*D*D-7.01123 *D*D*D*D*D)
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))
ElseIfD > 0.9 And D <= 1.1 Then
Y1 = -50.5197 + 198.747 *D + 99.0281 * D * D - 149.348 *D * D *D + 56.363 *D *D
*D*D- 7.01123 *D*D*D*D*D
Y2 = 1.28901 * (-50.5197 + 198.747 *D + 99.0281 *D * D - 149.348 * D * D * D +
56.363*D*D*D*D-7.01123*D*D*D*D*D)
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))
ElseIfD > 1.1 And D <= 2.2 Then
Y1 = -50.5197 + 198.747 *D + 99.0281 *D *D - 149.348 *D*D*D + 56.363 *D *D
*D*D-7.01123*D*D*D*D*D

Y2 = 1.094 * (-50.5197 + 198.747 *D + 99.0281 *D *D - 149.348 *D *D *D +


56.363 *D*D*D*D- 7.01123 *D*D*D*D*D)
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))
ElseIfD > 1.1 And D <= 2.8 Then
Y1 = -50.5197 + 198.747 * D + 99.0281 * D * D - 149.348 *D * D * D + 56.363 * D *D
*D*D-7.01123*D*D*D*D*D
Y2 = 1.0911 * (-50.5197 + 198.747 * D + 99.0281 *D * D - 149.348 * D * D * D +
56.363 *D*D*D*D- 7.01123 *D*D*D*D*D)
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))
ElseIfD > 2.8 Then
Y1 = -4181.08 + 6255.88 * D - 3.639.52 * D * D + 1115.17 * D * D *D - 188.94 * D *
D*D*D+ 16.7783 *D*D*D*D*D- 0.610524*D*D*D*D*D*D
Y2 = 1.031 * (-4181.08 + 6255.88*D- 3639.52 *D*D+ 1115.17 *D *D*D -
188.94 *D*D*D*D + 16.7783 *D*D*D*D*D - 0.610524 *D*D*D*D*D*
D)
Y = Y1 + (Y2 - Y1) * (Log(ns) - Log(100)) / (Log(200) - Log(100))

End If
End If
ElseIfD > 6 Then
fnnobbmo.Labe113.Caption = " OVERLAY CAN NOT BE DESIGNED, MORE
DEFLECTION IS OCCURING."
End If

IfY<=0AndD<6Then
frmobbmo.Labe112.Caption = " NO OVERLAY REQUIRED"

96
With frmobbmo
.Text2.Text = 0
.Text3.Text = 0
.Text4.Text = 0
End With
ElseIf Y > 0 And D < 6 Then
With frmobbmo
.Text2.Text = Round(Y, 2)
.Text3.Text = Round((1.5 * Y), 2)
.Text4.Text = Round((0.7 * Y), 2)
End With
End If

With frmobbmo
. Text 1 (0). Text = mean
. Text 1 ( 1 ). Text = std
. Text 1 (2) . Text = tec
.Text1(3).Text = Round(moc, 3)
.Text1(4).Text = Round(D, 3)
. Textl (5). Text = Round(ns, 3)
.Show
End With

Me.Hide
End Sub

Private Sub Textl_KeyPress(Index As Integer, KeyAscii As Integer)


stuff tab KeyAscii
End Sub

(frmobbmo)

Private Sub Form_Load()


Lab el 12.Left = (Frame 1 .Width - Label 1 2. Width) / 4
End Sub

Private Sub cmdback Click()


Unload Me
frmobbml.Show
End Sub

Private Sub cmdend Click()


Unload frmobbm
Unload frmdata
Unload frmDataEntry
Unload frmobbml
Unload Me
End Sub

97
Private Sub Textl_KeyPress(Index As Integer, KeyAscii As Integer)
stuff tab KeyAscii
End Sub

A.6. OVERLAY DESIGN — CBR METHOD (frmocmi)

Private Sub Form_Load()


Optionl.Value = True
End Sub

Private Sub cmdexit_Clicko


Unload Me
End Sub

Private Sub cmdnext Click()


Dim w, wl As Single

For i = 0 To 4 Step 1
If Textl(i).Text = "" Then
MsgBox "Please fill all entries.", vbOKOnly, "Warning"
Exit Sub
End If
Next

w = Text1(0). Text
wl = Text1(4).Text

If Text1(0).Text < 3 Then


MsgBox "Minimum Width of Existing Road should be 3 meter.", vbOKOnly, "Warning"
Exit Sub
ElseIf Text1(0).Text > 3.75 Then
MsgBox "Maximum Width of Existing Road should be less than 3.75 meter.", vbOKOnly,
"Warning"
Exit Sub
End If

If wl < w Then
MsgBox "Minimum Width of New Road should be more then Existing road width.",
vbOKOnly, "Warning"
Exit Sub
Elseff Text1(4). Text > 5.5 Then
MsgBox "Maximum Width of New Road should be less than 5.5 meter.", vbOKOnly,
"Warning"
Exit Sub
End If

Me.Hide

98
With frmfpdl
.cmdcompute.Caption = "NEXT"
.cmdcompute.Top = 9480
.cmdnext.Visible = False
.cmdback.Visible = False
. C ommandl . Vi sib le = False
.Show
End With
End Sub

Private Sub Textl_KeyPress(Index As Integer, KeyAscii As Integer)


stuff tab KeyAscii
End Sub

(frmfpdl)

Private Sub cmdcompute_Click()


Dim cvpd As Double
Dim mvpd As Double
Dim colName As String
Dim qryTh As String
Dim rsPT As New ADODB.Recordset
Dim w, wl, tsb, tb, ts, ot, t As Single

If cmdcompute.Caption = "NEXT" Then


frmocmo.lblmain.Visible = True
Else
frmocmo.lblmain.Visible = False
End If

'If txtarf. Text = " " Or txtCVPD. Text = " " Or txtGR. Text = " " Or txtmvpd. Text = " " Or
txtDL.Text = "" Then
'MsgBox "Please enter value for all entries.", vbOKOnly, "Warning"
'Exit Sub
'End If

cvpd = Round((frmfpd 1 .txtCVPD) * (1 + Val(frmfpdl.txtGR) / 100)


Val(fnnfpdl.txtDL))
frmfpd2.txtDT = cvpd
mvpd = Round((frmfpdl.txtmvpd) * (1 + Val(frinfpdl.txtGR) / 100) A
Val(frmfpdl.txtDL))
frmfpd2.txtdmv = mvpd

If cvpd <= 15 Then


colName = "A"
ElseIf cvpd <= 45 And cvpd > 15 Then
colName = "B"

99
ElseIf cvpd <= 150 And cvpd > 45 Then
colName = "C"
Else
colName = "D"
End If

qryTh = "select bc,sbc from pave_thickness where cbr =" & Round(Val(Combocbr)) &
"and cvpd = 1 " & colName & "'"
Set rsPT = dbA.Execute(qryTh)

be = rsPT("bc")
sb = rsPT("sbc")

Set rsPT = Nothing


qryTh = ""
colName = ""
If mvpd <= 50 Then
colName = "a"
ElseIf mvpd > 50 And mvpd <= 150 Then
colName = "b"
Else
colName = "c"
End If

qryTh = "select " & colName & " from surfacing where " & txtarf & " between l_rainfall
and h_rainfall"
Set rsPT = dbA.Execute(qryTh)

If cmdcompute.Caption = "NEXT" Then

With frmocmi
w = Text1(0). Text
wl = Text1(4). Text
tsb = .Text1(1).Text
tb = .Text1(2).Text
If .Optionl.Value = True Or .Option3.Value = True Then
is = Text1(3). Text
Else
ts = 0
End If
End With

t = tsb
t=t+tb
t=t+ts
't = tsb + tb + ts

With frmocmo

100
If wl <>wThen
.txtsbl.Text = sb
.txtbcl.Text = bc
.txtpctl .Text = sb + bc
.txtsurfl.Text = rsPT(colName)
ElseIf w = wl Then
.txtsbl.Text = 0
.txtbcl.Text = 0
.txtpctl.Text = 0
.txtsurfl.Text = 0
End If
.txtDT = cvpd
.txtdmv = mvpd
.txtw.Text = w
.txtwl. Text = wl
.txtt.Text = t
If t <= sb Then
sb = sb - t
.txtsb = sb
.txtbc = bc
.txtpct = sb + bc
.txtsurf = rsPT(colName)
ElseIf t > sb Then
of=t-sb
sb = 0
Ifot<=bcThen
bc = bc - ot
.txtsb = sb
.txtbc = bc
.txtpct = sb + bc
.txtsurf = rsPT(colName)
ElseIf of > bc Then
lblmain = " NO OVERLAY REQUIRED "
.txtsb = 0
.txtbc = 0
.txtpct = 0
.txtsurf = "Thin Bituminous Surfacing (2- Coat S.D.)"
.Label6.Caption = " * For improve riding quility provide thin Surfacing. "
End If

End If

End With
frmfp dl.Hide
frmfpd2.Hide
frmocmo.WindowState = 2
frmocmo. Show
End If

101
If cmdcompute.Caption = "Compute" Then
frmfpd2.txtbc = be
frmfpd2.txtsb = sb
frmfpd2.txtpct = be + sb
frmfpd2.txtsurf = rsPT(colName)
frmfpdl.Hide
frmocmo.Hide
frmfpd2. Show
End If
End Sub

(frmocmo)

Private Sub cmdback_Click()


txtarf = ""
txtDL = ""
txtdmv = ""
txtDT = ""
txtGR = ""
Unload Me
frmfpdl.WindowState = 2
frmfpdl.Show
End Sub

Private Sub cmdcs_Click()


Dim w, wl, t, tl As Single
w = txtw.Text * 2000
wl = txtwl .Text * 2000
t = txtt.Text * 2
tl = txtpctl .Text * 2

If tl <= t Then
tl = t + txtpct.Text * 2
End If
With frmocs
.s.Width = w
sl .Width = w1
.s.Height = t
sl . Height = tl
.s.Left = (.f.Width - .s.Width) / 2
sl. Left = (. f Width - . sl .Width) / 2
.s.Top = .1Height - .s.Height
sl . Top = Height - sl . Height
.Show
End With

End Sub

102
Private Sub cmdnext_Click0
Dim bas, basl As Single
Dim bc, bcc, bcl, bccl As Single

With frmocmol
.txtsurf = frmocmo.txtsurf
.txtsurfl = frmocmo.txtsurfl
.lblmain = frmocmo.lblmain
.txtw = frmocmo.txtw
.txtwl = frmocmo.txtwl
.txtsb = frmocmo.txtsb
.txtsb 1 = frmocmo.txtsbl
.txtt = frmocmo.txtt

bas = frmocmo.txtbc
If bas <= 50 Then
bc = 0
bcc = 50
ElseIf bas > 50 And bas <= 75 Then
bcc = 75
bc = 0
ElseIf bas > 75 And bas <= 125 Then
bc = 75
bcc = 50
ElseIf bas > 125 And bas <= 150 Then
be = 75
bcc = 75
ElseIf bas > 150 And bas <= 200 Then
be = 150
bcc = 50
ElseIf bas > 200 Then
be = 150
bcc = 75
End If
.txtbc = be
.txtbcc = bcc

basl = frmocmo.txtbc1
If basl <= 50 Then
bcl =0
bccl = 50
ElseIf basl > 50 And basl <= 75 Then
bccl = 75
bcl = 0
ElseIf basl > 75 And basl <= 125 Then
bcl = 75
bccl = 50

103
ElseIf basl > 125 And basl <= 150 Then
bcl = 75
bccl = 75
ElseIf basl > 150 And basl <= 200 Then
bcl = 150
bccl = 50
ElseIf basl > 200 Then
bcl = 150
bccl = 75
End If
.txtbcl = bcl
.txtbccl = bccl

.txtpct = be + bcc + frmocmo.txtsb


.txtpctl = bc1 + bccl + frmocmo.txtsbl
End With

Me.Hide
frmocmo 1. Show
End Sub

(frmocmol)

Option Explicit

Private Sub cmdback_Click0


Unload Me
frmocmo. Show
End Sub

Private Sub cmdend_Clicko


If frmfpdl.cmdcompute.Caption = "NEXT" Then
Unload frmocmi
End If
Unload frmfpdl
Unload frmocmo
Unload Me
End Sub

Private Sub cmdcs_Click0


Dim w, wl, t, tl As Single
w = txtw.Text * 2000
wl = txtwl.Text * 2000
t = txtt. Text * 2
tl = txtpctl.Text * 2
If tl <= t Then
tl = t + txtpct.Text * 2
End If

104
With frmocs
.s.Width = w
sl .Width = wl
.s.Height = t
sl . Height = tl
.s.Left = (.f.Width - .s.Width) / 2
sl . Left = (.f.Width - sl .Width) / 2
. s. Top = . f. Height - . s.Height
sl . Top = Height - sl . Height
.Show
End With
End Sub
(frmocs)

Private Sub cmdok_Click()


Unload Me
End Sub

Private Sub Form_Load()


main.Left = (Me.Width - main.Width) / 2
End Sub

A.7. GEOMETRIC DESIGN - SUPERELEVATION DESIGN (frmsen)

Private Sub Form_Load()


comtc.Text = "Select"
comtc.AddItem "Plain and rolling terrain"
comtc.AddItem "Snow bound area"
comtc.AddItem "Hilly area but not snow bound"
End Sub

Private Sub cmdcom_Click()


Dim t As String
V = txtds
r = txtrc
t = comtc.Text
Ifr<>0Then
e = Round((V A 2) * 100 / (225 * r), 2)
Else: Exit Sub
End If
If t = "Plain and rolling terrain" Or t = "Snow bound area" Then
If e > 7 Then
e=7
End If
ElseIf t = "Hilly area but not snow bound" Then
If e > 10 Then
e = 10

105
End If
Else
Exit Sub
End If

txtsen = e
End Sub

Private Sub cmdexit_Click0


Unload Me
End Sub

Private Sub Commandl_Click()


txtsen.Text = comtc.Text
End Sub

Private Sub comnew Click()


comtc.Text = "Select"
txtsen.Text = ""
txtds.Text = ""
txtrc.Text = ""
End Sub

Private Sub comtc_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtds_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtrc_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

A.8. RATE ANALYSIS (frmRA)

Dim cWidth As Double


Dim optIndex As Integer
Dim TBL As String

Private Function getID(TBL As String, col As String) As Integer


Dim rs As Recordset
Dim qry As String
Dim dblID As Integer
qry = "select max(" & col & " ) as vTid from " & TBL
Set rs = dbA.Execute(qry)
If Not IsNull(rs("vTid").Value) Then

106
dblID = rs("vtid").Value
Else: db1TID = 0
End If
getlD = dblID
End Function

Private Sub cmdadd_Click()


i = txtindex.Text
frmfrdo.Text2(i).Text = txtCost
Unload Me
End Sub

Private Sub cmdRAsave_Click()


Dim rs As New ADODB.Recordset
Dim qryIns, qryInsl, qryCHK, strDcode As String
Dim intresponse As Integer
On Error GoTo err_para
dbA.BeginTrans
If Len(dCode) = 1 Then
dCode = "0" & dCode
End If
qryCHK = " select * from package where pgk_name =" & Formatlnsert(txtPKG) & " and
_
r name
= " & Formatlnsert(txtRoad)
Set rsCHK = dbA.Execute(qryCHK)

If rsCHK.RecordCount = 0 Then
qryCHK = " insert into package (pgk_name , r_name) values (" & Formatlnsert(txtPKG) &
" , " & Formatlnsert(txtRoad) & " )"
dbA.Execute qryCHK
End If
qryCHK = ""
Set rsCHK = Nothing
qryCHK = " select * from dist where st_code =" & Formatlnsert(sCode) & " and code
& dCode & "'"
Set rsCHK = dbA.Execute(qryCHK)
If rsCHK.RecordCount = 0 Then
qryCHK = "insert into dist ( code,name,st_code) values ('" & dCode & " " &
Formatlnsert(Dist) & "," & Formatlnsert(sCode) & ")"
dbA.Execute qryCHK
End If
qryCHK = ""
Set rsCHK = Nothing
Set rs = dbA.Execute(" select * from item_mst where itemid=" & Formatlnsert(txtlno))
If rs.RecordCount <> 0 Then
dbA.Execute "delete * from item mst where item id = " & txtlno
End If
qryIns = "insert into item_mst (item id, item_desc, unit, rate ) values ("

107
qryIns = qryIns & Formatlnsert(txtlno) & "," & Formatlnsert(txtltem) & "," &
FormatInsert(txtUnit) & "," & Formatlnsert(txtCost) & ") "
Set rs = Nothing
dbA.Execute qryIns
qryCHK = ""
Set rsCHK = Nothing

Set rs = Nothing
Set rs = dbA.Execute("select * from item_det_mst where item_id =" & txtlno)
If rs.RecordCount <> 0 Then
dbA.Execute " delete * from item_det_mst where item id=" & txtlno
End If

Set rs = Nothing
qryIns = "insert into item_det_mst (item_id, sno, s_no, item_desc, qty,unit) values (" &
txtlno & ","
For i = 1 To fgl.Rows - 1
qryInsl = qryIns & i & "," & FormatInsert(fgl.TextMatrix(i, 0)) & "," &
Formatlnsert(fgl.TextMatrix(i, 1)) & ","
qryInsl = qryInsl & Formatlnsert(fg 1. TextMatrix(i, 2)) & "," &
Formatlnsert(fgl.TextMatrix(i, 3)) & ")"
dbA.Execute qryInsl
Next
Set rs = dbA.Execute("select * from pkg_wise_rate where pkg=" & Formatlnsert(txtPKG)
& " and r_name =" & Formatlnsert(txtRoad) & " and item_id =" & Formatlnsert(txtlno))
If rs.RecordCount <> 0 Then
dbA.Execute " delete * from pkg_wise_rate where pkg=" & Formatlnsert(txtPKG) & " and
r_name=" & Formatlnsert(txtRoad) & " and item_id=" & Formatlnsert(txtlno)
End If
Set rs = Nothing
qryIns = "insert into pkg_wise_rate sno, rate, amount, pkg, r_name, unit, i_rate,
item name) values (" & txtlno & ","
For i = 1 To fgl .Rows - 1
qryInsl = qryIns & i & "," & Formatlnsert(fgl.TextMatrix(i, 4)) & "," &
Formatlnsert(fgl.TextMatrix(i, 5)) & ","
qryInsl = qryInsl & Formatlnsert(txtPKG) & "," & Formatlnsert(txtRoad) & "," &
Formatlnsert(txtUnit) & "," & Formatlnsert(txtCost) & "," & Formatlnsert(txtltem) & " )"
dbA.Execute qryInsl
Next
dbA.CommitTrans
Exit Sub

err_para:
MsgBox Err.Description
dbA.RollbackTrans
End Sub

Private Sub cmdsave_Click()

108
Dim rsCHK As New ADODB.Recordset
Dim qryCHK, qryIns, qryInsl As String
Dim qryPKG As String

On Error GoTo err Para


If txtPKG = vbNullString Or txtRoad = vbNullString Then
MsgBox "Please enter value of Package no and Road"
Exit Sub
End If

qryCHK = "select * from " & TBL & " Where pkg=" & Formatlnsert(txtPKG) & " and
r name = " & Formatlnsert(txtRoad)
dbA.BeginTrans
Set rsCHK = dbA.Execute(qryCHK)
If rsCHK.RecordCount <> 0 Then
qryCHK = "delete * from " & TBL & " where pkg=" & Formatlnsert(txtPKG) & " and
r name=" & Formatlnsert(txtRoad)
dbA.Execute qryCHK
End If
qryCHK =
Set rsCHK = Nothing
qryCHK = "select * from package where pgk_name=" & Formatlnsert(txtPKG) & " and
r name=" & Formatlnsert(txtRoad)
Set rsCHK = dbA.Execute(qryCHK)
qryIns = ""
qryIns = "insert into " & TBL & " (pkg,r_name, sno, item, qty, unit,rate, cost, tid) values ("
qryIns = qryIns & Formatlnsert(txtPKG) & ","
qryIns = qryIns & Formatlnsert(txtRoad) & ","
For i = 1 To fgl.Rows - 1
qryInsl = qryIns & Formatlnsert(fgl.TextMatrix(i, 0)) & ","
qryIns 1 = qryInsl & Formatlnsert(fgl.TextMatrix(i, 1)) & ","
qryInsl = qryInsl & Formatlnsert(fgl.TextMatrix(i, 2)) & " ,"
qryInsl = qryInsl & Formatlnsert(fgl.TextMatrix(i, 3)) & " ,"
qryInsl = qryInsl & FormatInsert(fgl.TextMatrix(i, 4)) & ", "
qryInsl = qryIns 1 & FormatInsert(fgl .TextMatrix(i, 5)) & ","
qryInsl = qryInsl & i & ")"
dbA.Execute qryInsl
Next
If rsCHK.RecordCount = 0 Then
qryPKG = "insert into package(pgk_name,r_name) values(" & Formatlnsert(txtPKG) & ","
& Formatlnsert(txtRoad) & ")"
dbA.Execute qryPKG
End If
dbA.CommitTrans
Exit Sub
err Para:
MsgBox Err.Description
dbA.RollbackTrans

109
End Sub

Private Sub cmdRpt_click()


On Error GoTo err_para
crl.ReportTitle = "PMGSY (ANALYSIS OF RATES)"
crl.ReportFileName = App.Path & " \analysis_report.rpt"
crl.ParameterFields(0) = "pmstate;" & State & "; true"
crl.ParameterFields(1) = "pmdist;" & Dist & "; true"
crl.ParameterFields(2) = "pmblock;" & "" & "; true"
crl.ParameterFields(3) = "pmPkg;" & txtPKG & "; true"
crl.ParameterFields(4) = "pmRoad;" & txtRoad & "; true"
crl.ParameterFields(5) = "pmItem;" & Val(txtlno) & "; true"
crl.ParameterFields(6) = "pmltem_desc;" & txtltem & "; true"
crl.ParameterFields(7) = "pmUnit;" & txtUnit & "; true"
crl.ParameterFields(8) = "pmCost;" & Val(txtCost) & "; true"
crl.Action = 1
Exit Sub
err_para:
MsgBox Err.Description
Erid Sub

Private Sub cmdPrintSource Click()


On Error GoTo err_para
crl.WindowTitle = "PMGSY (ANALYSIS OF RATES)"
crl.ReportFileName = App.Path & " \ material_source.rpt"
crl.ParameterFields(0) = "pmpkg; " 8c txtPKG & " ; true"
crl.Acti on = 1
Exit Sub
err_para:
MsgBox Err.Description
End Sub

Private Sub dCode_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub Dist_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub sCode_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub state_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset

110
If KeyCode = vbKeyFl Then
Set rsl = dbA.Execute("select name , code from state")
Help For rsl, "Help Form (States/Union Territory)"
If hlprtn = True Then
sCode = rs1(" Code")
State = UC ase(rs1(" name"))
txtPKG = sCode & " - " & dCode & " - II
SendKeys "{Enter)"
SendKeys "{Enter}"
hlprtn = False
End If
End If
End Sub

Private Sub Dist_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
Dim strflt
If KeyCode = vbKeyFl Then

If sCode v "" Then


strflt = "select name,code,st_code from dist Where st_code='" & sCode & "'"
Set rsl = dbA.Execute(strflt)
Help For rsl, "Help Form (District)"
If hlprtn = True Then
dCode = rs1("Code")
Dist = NullChk(1, UCase(rs1("name")))
txtPKG = sCode & " - " & dCode & " - "
SendKeys "{Enter}"
SendKeys "{Enter}"
hlprtn = False
End If
Else
MsgBox "Please enter state. ", vbOKOnly, "Warning"
End If
End If
End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub fgl_GotFocus()


Me.KeyPreview = False
txtMove txtEdit, fgl
End Sub

Private Sub fgl_LostFocus()


Me.KeyPreview = True

111
txtMove txtEdit, fgl
End Sub

Private Sub State_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub •

Private Sub txtEdit_Keydown(KeyCode As Integer, Shift As Integer)


Dim sumcost As Double
Dim intRes As Integer
Dim rsl As New ADODB .Recordset
sumcost = 0
Select Case KeyCode
Case vbKeyReturn
fgl = txtEdit
If fgl.Row < fgl.Rows - 1 Then
If fgl.col < fg 1 .Cols - 1 Then
fgl.col = fgl.col + 1
fgl.TextMatrix(fgl.Row, 5) = Val(fgl.TextMatrix(fgl.Row, 2)) *
Val(fgl.TextMatrix(fgl.Row, 4))
El self fgl.Row = fgl.Rows - 2 Then
intRes = MsgBox(" Do you want to add more items to the analysis", vbYesNo)
If intRes = vbNo Then
fgl.col = 5
fgl.Row = fgl.Rows - 1
Else
insRow fgl
fgl.Row = fgl.Row + 1
fgl.col = 0
If fgl.Rows < 15 Then
fgl.Height = fgl.Rows * fgl.RowHeight(0) * 1.1
End If
End If
ElseIf fgl.col = 5 And fgl.Row = fgl .Rows - 1 Then
fgl.Row = fgl .Row - 1
Else
fgl.Row = fgl.Row + 1
fgl.col = 0
End If

For i = 1 To fgl.Rows - 2
sumcost = Val(fgl .TextMatrix(i, 5)) + sumcost
Next
fgl.TextMatrix(fgl.Rows - 1, 5) = sumcost
txtCost = sumcost
Else
fgl.Row = fgl.Row - 1
End If

112
txtMove txtEdit, fgl
Case vbKeyUp
If fgl .Row > 1 Then
fgl = txtEdit
fgl .Row = fgl .Row - 1
txtMove txtEdit, fgl
End If

Case vbKeyDown
If fgl .Row < fgl .Rows - 1 Then
fgl = txtEdit
fgl .Row = fgl.Rows + 1
txtMove txtEdit, fgl
End If

Case vbKeyF 1
If fgl.col = 3 Then
Set rsl = dbA.Execute(" select name, unit from UOM")
Help For rsl, "Help Form (Unit of Measurement)"
If hlprtn = True Then
txtEdit = rs 1("unit")
SendKeys "{ENTER}"
hlprtn = False
End If

End If
End Select
End Sub

Private Sub txtIno_Click()


txtIno = getlD("item_mst", "item_id") + 1
txtltem = ""
txtUnit = ""
fgl .Rows = 3
For i = 0 To fgl.Cols - 1
fgl.TextMatrix(1, i) = " "
Next
fgl.TextMatrix(fgl.Rows - 1, 1) = "TOTAL COST"
fillltemGrid
End Sub

Private Sub txtPKG_GotFocus()


txtPK G. S el Start = Len(txtPKG)
End Sub

Private Sub txtItem_KeyDown(KeyCode As Integer, Shift As Integer)

113
Dim rsl As New ADODB.Recordset
If KeyCode = vbKeyFl Then
Set rsl = dbA.Execute(" select item_desc, item id, unit from item_mst order by item_id")
If rsl.RecordCount <> 0 Then
Help For rsl, "Help Form (Item Rate Master)"
If hlprtn = True Then
txtItem = rs1("item_desc")
txtIno = rsl("item_id")
txtUnit = NullChk(1, rs1(" unit"))
fillItemGrid
hlprtn = False
End If
End If
End If
End Sub

Private Sub txtPKG_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
If KeyCode = vbKeyFl Then
Set rsl = dbA.Execute(" select pgk_name , r_name from package")
If rsl.RecordCount <> 0 Then
Help For rsl, "Help Form (Package)"
If hlprtn = True Then
txtPKG = rs1("pgk_name")
txtRoad = UCase(NullChk(1, rs1("r_name")))
SendKeys "{Enter}"
SendKeys "{Enter}"
hlprtn = False
End If
End If
End If
End Sub

Private Sub txtPKG_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtUnit_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
If KeyCode = vbKeyF 1 Then
Set rsl = dbA.Execute(" select name, unit from UOM")
Help_F or rsl, "Help Form (Unit of Measurement)"
If hlprtn = True Then
txtUnit = rs1("unit")
' SendKeys "{Enter}"
SendKeys "{Enter}"
hlprtn = False
End If

114
End If
End Sub

Private Sub txtRoad_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
If KeyCode = vbKeyF 1 Then
Set rsl = dbA.Execute("select ri.[3]as road_code, ri.[2] as road_name from road_inv as ri
where scode=" & sCode & "' and dcode='" & dCode & "'")
If rsl.RecordCount <> 0 Then
Help For rsl, "Help Form (List of Roads)"
If hlprtn = True Then
txtRoad = UCase(rs1("road_name"))
State = rs1("road_code")
txtPKG = sCode & " - " & dCode & " -"
SendKeys "{Enter}"
SendKeys "{Enter}"
hlprtn = False
End If
End If
End If
End Sub

Private Sub txtRoad KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub fillItemGrido


Dim r, rl As New ADODB.Recordset
Dim rCount As Integer
txtEdit.Visible = False

Set r = dbA.Execute("select * from item_det_mst where item_id=" & Formatlnsert(txtlno))


Set rl = dbA.Execute(" select * from pkg wise_rate where item_id=" &
Formatlnsert(txtlno) & " and pkg=" & Formatlnsert(txtPKG) & " and r_name=" &
FormatInsert(txtRoad))
clearGrid fgl
If r.RecordCount <> 0 Then
rCount = r.RecordCount + 1
Else
rCount = 3
End If
fgl.Rows = rCount
fgl.Cols = 6
fg 1 .FixedC ols = 0
fgl .FixedRows = 1
fgl.TextMatrix(0, 0) = "S.NO."
fgl.TextMatrix(0, 1) = "Item of Cost Analysis"
fgl.TextMatrix(0, 2) = "Qty."

115
fgl.TextMatrix(0, 3) = "Unit"
fgl.TextMatrix(0, 4) = "Rate"
fgl.TextMatrix(0, 5) = "Cost"

cWidth = 1220
fg 1 .ColWidth(0) = cWidth / 2
fgl.ColWidth(1) = cWidth * 5
fgl.ColWidth(2) = cWidth
fgl.ColWidth(3) = cWidth / 2
fgl.ColWidth(4) = cWidth
fgl.ColWidth(5) = cWidth * 1.2
fgl .Width = cWidth * 9.5
fgl.TextMatrix(fgl.Rows - 1, 1) = "TOTAL COST"
If rCount < 15 Then
fgl.Height = fgl.RowHeight(0) * rCount * 1.1
End If

Do Until r.EOF
fgl.TextMatrix(r("sno"), 0) = NullChk(1, r("s no"))
fgl.TextMatrix(r("sno"), 1) = NullChk(1, r("item
_desc"))
fgl.TextMatrix(r("sno"), 2) = NullChk(1, r("qty"))
fgl.TextMatrix(r("sno"), 3) = NullChk(1, r("unit"))
r.MoveNext
Loop
Do Until rl.EOF
fg1.TextMatrix(r1("sno"), 4) = NullChk(1, rl("rate"))
fgl.TextMatrix(r1("sno"), 5) = NullChk(1, rl("amount"))
rl.MoveNext
Loop
For i = 0 To fgl.Cols - 1
fgl.Row = 0
fgl. col = i
fgl.CellFontBold = True
Next
For i = 0 To fgl .Rows - 1
fgl.Row = i
fgl . col = 0
fgl.CellFontBold = True
Next
fgl.Row = fgl.Rows - 1
fgl.col = 1
fgl.CellFontBold = True
fgl.col = fgl.Cols - 1
fgl.CellFontBold = True
txtCost = fgl.TextMatrix(fgl.Rows - 1, 5)
End Sub

Private Sub Form_Load()

116
cmdadd.Visible = False
Label 1 1 .Left = (Screen.Width - Label 1 1 .Width) / 2
Labe112.Left = (Screen.Width - Labe112.Width) / 2
setDB "PMGSY.mdb"
fgl.Rows = 3
fgl.Cols = 6
fgl.FixedCols = 0
fgl.FixedRows = 1
fgl.TextMatrix(0, 0) = "S.NO."
fgl.TextMatrix(0, 1) = "Item of Cost Analysis"
fgl.TextMatrix(0, 2) = "Qty."
fgl .TextMatrix(0, 3) = "Unit"
fgl.TextMatrix(0, 4) = "Rate"
fgl.TextMatrix(0, 5) = "Cost"

cWidth = 1220
fgl .ColWidth(0) = cWidth / 2
fgl.ColWidth(1) = cWidth * 5
fgl.ColWidth(2) = cWidth
fgl.ColWidth(3) = cWidth / 2
fgl.ColWidth(4) = cWidth
fgl.ColWidth(5) = cWidth * 1.2
fgl .Width = cWidth * 9.5
fgl.TextMatrix(fgl.Rows - 1, 1) = "TOTAL COST"
End Sub

A.9. COST ESTIMATE (frcostana)

'Private Sub bCode_Change()


'txtPKG.Text = sCode & " - " & dCode & " - " & bCode
'End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdPrintSource_Click()


On Error GoTo err Para
'cr 1 .ReportTitle = "PMGSY (ANALYSIS OF RATES)"
'crl .ReportFileName = App.Path & "\MATERIAL_SOURCE.rpt"
'cr 1 .ReportFileName = App.Path & " \DET_ANALYSISITEM.rpt"
'crl.ReportFileName = App.Path & "\analysis_report.rpt"
'cr 1 .ParameterFields(0) = "pmstate;" & State & "; true"
'crl .ParameterFields(1) = "pmdist;" & Dist & "; true"
'cr 1 .ParameterFields(2) = "pmblock;" & "Block" & "; true"

117
' crl .P arameterFields (3) = "pmPkg;" & txtPKG & "; true"
'crl.ParameterFields(4) = "pmRoad;" & txtRoad & "; true"
'crl.ParameterFields(5) = "pmlen;" & txtLen & "; true"
'crl.ParameterFields(6) = "pmtotal;" & Val(txttotal) & "; true"
crl .Action = 1
Exit Sub
err_para:
MsgBox Err.Description
End Sub

Private Sub cmdsave_Click()


Dim rs As New ADODB.Recordset
Dim qryIns, qryIns 1, qryCHK, srtDcode As String
Dim intresponse As Integer

If txtPKG = vbNullString Then


MsgBox " Please Enter Package No. "
Exit Sub
End If
If txtRoad = vbNullString Then
MsgBox " Please Enter Road Name "
Exit Sub
End If
On Error GoTo err_para
dbA.BeginTrans
If Len(dCode) = 1 Then
dCode = "0" & dCode
End If
qryCHK = "select * from package where pgk_name=" & Formatlnsert(txtPKG) & " and
r name =" & FormatInsert(txtRoad)

Set rsCHK = dbA.Execute(qryCHK)


If rsCHK.RecordCount = 0 Then
qryCHK = "insert into package (pgk_name, r_name) values(" & Formatlnsert(txtPKG) &
", " & Formatlnsert(txtRoad) & ")"
dbA.Execute qryCHK
End If
qryCHK = ""
Set rsCHK = Nothing
qryCHK = "select * from dist where st_code=" & Formatlnsert(sCode) & " and code=" &
dCode & "'"
Set rsCHK = dbA.Execute(qryCHK)

If rsCHK.RecordCount = 0 Then
qryCHK = " insert into dist (code, name, st_code) values("' & dCode & "," &
Formatlnsert(Dist) & ")" & Formatlnsert(sCode) & ")"
dbA.Execute qryCHK
End If

118
qryCHK = ""
Set rsCHK = Nothing
qryCHK = " select * from block where dist_code=1 " & dCode & "' and code =1 " & bCode
& lffil
Set rsCHK = dbA.Execute(qryCHK)
If rsCHK.RecordCount = 0 Then
qryCHK = "insert into block(code, name, dist_code) values(" & bCode & "1 ," &
FormatInsert(Block) & "," & Formatlnsert(dCode) & ")"
dbA.Execute qryCHK
End If
qryCHK = ""
Set rsCHK = Nothing
Set rs = dbA.Executeeselect * from road_est where pkg=" & Formatlnsert(txtPKG) & "
and r name=" & Formatlnsert(txtRoad))
If rs.RecordCount <> 0 Then
dbA.Execute "delete * from road_est where pkg=" & Formatlnsert(txtPKG) & " and
r name=" & Formatlnsert(txtRoad)
End If
Set rs = Nothing
qryIns = "insert into road_est (pkg, r_name, dist, dcode, block, bcode, len, sno, item_name,
nos, 1, b, h_d, qty, unit, rate, amount) values ("
qryIns = qryIns & FormatInsert(txtPKG) & " , " & Formatlnsert(txtRoad) & ", " &
Formatlnsert(Dist) & " , " & Formatlnsert(dCode) & ","
qryIns = qryIns & Formatlnsert(Block) & " , " & Formatlnsert(bCode) & " , " &
FormatInsert(txtLen)
For i = 2 To fgl.Rows - 1
qryInsl = ""
For j = 0 To fgl.Cols - 1
qryInsl = qryInsl & " , " & FormatInsert(fgl .TextMatrix(i, j))
Next
dbA.Execute qryIns & qryInsl & ")"
Next
dbA. CommitTrans
Exit Sub
err Para:
MsgBox Err.Description
dbA.RollbackTrans
End Sub

Private Sub Form_Load()


Labell 1 .Left = (Screen.Width - Labell 1.Width) / 2
setDB "PMGSY.mdb"
Dim cWidth, rHt As Double
fgl.Cols = 10
fgl.Rows = 4
fgl.FixedRows = 2
fgl.FixedCols = 0
cWidth = fgl.ColWidth(0)

119
rHt = fgl.RowHeight(0)
fgl.RowHeight(0) = 2 * rHt
fgl.ColWidth(0) = 0.5 * cWidth
fgl.ColWidth(1) = 3.6 * cWidth
fg I .ColWidth(2) = 0.5 * cWidth
fgl.ColWidth(3) = 0.6 * cWidth
fgl.ColWidth(4) = 0.6 * cWidth
fgl.ColWidth(5) = 0.6 * cWidth
fgl.ColWidth(6) = cWidth
fgl.ColWidth(7) = 0.5 * cWidth
fgl.ColWidth(8) = cWidth
fgl.ColWidth(9) = 1.2 * cWidth
For i = 0 To fgl.Cols - 1
fgl.TextMatrix(1, i) = "" & i + 1 & ""
fgl .Row = 1
fgl. col = i
fg 1. CellAlignment = flexAlignCenterCenter
Next
fgl.WordWrap = True
fgl.TextMatrix(0, 0) = "S. No."
fgl.TextMatrix(0, 1) = "Description of Item"
fgl.TextMatrix(0, 2) = "Nos"
fgl.TextMatrix(0, 3) = "L (m)"
fgl.TextMatrix(0, 4) = "B (m)"
fgl.TextMatrix(0, 5) = "D/M (m)"
fgl.TextMatrix(0, 6) = "Quantity"
fgl.TextMatrix(0, 7) = "Unit"
fgl.TextMatrix(0, 8) = "Rate (Rs.)"
fgl.TextlVlatrix(0, 9) = "Amount"
fgl.TextMatrix(fgl.Rows - 1, 1) = "TOTAL"
fgl.Row = 2
fgl.col = 1
End Sub

Private Sub fgl_GotFocus0


txtMove txtEdit, fgl
End Sub

Private Sub state_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
If KeyCode = vbKeyFl Then
Set rsl = dbA.Execute("select name , code from state")
Help For rsl, "Help Form (States/Union Territory)"
If hlprtn = True Then
sCode = rs1("Code")
State = UC ase(rs1(" name"))
txtPKG = sCode & " - " & dCode & " - " & bCode
SendKeys "{Enter}"

120
SendKeys "{Enter}"
hlprtn = False
End If
End If
End Sub

Private Sub Dist_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
Dim strflt
If KeyCode = vbKeyFl Then

If sCode <> "" Then


strflt = "select name,code,st_code from dist Where st_code='" & sCode & "'"
Set rsl = dbA.Execute(strflt)
Help For rsl, "Help Form (District)"
If hlprtn = True Then
dCode = rsl("Code")
Dist = NullChk(1, UCase(rs1("name")))
txtPKG = sCode & " - " & dCode & " - "
SendKeys "{Enter)"
SendKeys "{Enter}"
hlprtn = False
End If
Else
MsgBox "Please enter state. ", vbOKOnly, "Warning"
End If
End If
End Sub

Private Sub txtEdit_Keydown(KeyCode As Integer, Shift As Integer)


Dim sumcost As Double
Dim intRes As Integer
Dim rsl As New ADODB.Recordset
sumcost = 0
Select Case KeyCode

Case vbKeyReturn
If fgl .Row < fgl.Rows - 1 Then
fgl.TextMatrix(fgl.Row, 0) = fgl.Row - 1
End If
fg 1 = txtEdit

If fgl .Row < fgl.Rows - 1 Then


If fgl. col < fgl.Cols - 1 Then
If fgl.col = 2 Or fgl.col = 3 Or fgl.col = 4 Or fgl.col = 5 Then

121
fgl.TextMatrix(fgl.Row, 6) = nulITOone(fgl.TextMatrix(fgl.Row, 2)) *
nullTOone(fgl.TextMatrix(fgl.Row, 3)) * nullTO one(fgl.TextMatrix(fgl.Row, 4)) *
nullTOone(fgl.TextMatrix(fgl.Row, 5))
End If
If fgl. col = 6 Or fgl . col = 8 Then
fgl.TextMatrix(fgl.Row, 9) = nulITOone(fgl .TextMatrix(fgl.Row, 6)) *
nullTOone(fgl.TextMatrix(fgl.Row, 8))
End If

fgl. col = fgl . col + 1


El self fgl.Row = fgl.Rows - 2 Then
intRes = MsgB ox(" Do you want to add more items to the analysis", vbYesNo)
If intRes = vbNo Then
fgl . col = 9
fgl.Row = fgl.Rows - 1
Else
insRow fgl
fgl.Row = fgl .Row + 1
fgl. col = 1
End If
El self fgl. col = 9 And fgl .Row = fgl .Rows - 1 Then
fgl.Row = fgl.Row - 1
Else
fgl.Row = fgl.Row + 1
fgl. col = 0
End If

For i = 2 To fg 1 .Rows - 2
sumcost = Val(fgl.TextMatrix(i, 9)) + sumcost
Next
fgl .TextMatrix(fgl.Rows - 1, 9) = sumcost
txttotal = sumcost
Else
fgl.Row = fgl .Row - 1
End If

txtMove txtEdit, fgl


Case vbKeyUp
If fgl.Row > 2 Then
fgl = txtEdit
fgl.Row = fgl.Row - 1
txtMove txtEdit, fgl
End If

Case ybKeyD own


If fgl.Row < fgl.Rows - 1 Then
fgl = txtEdit
fgl.Row = fgl.Rows + 1

122
txtMove txtEdit, fgl
End If

Case vbKeyF 1
If fgl.col = 7 Then
Set rsl = dbA.Execute("select name, unit from UOM")
Help For rsl, "Help Form (Unit of Measurement)"
If hlprtn = True Then
txtEdit = rs1("unit")
SendKeys "{Enter}"
hlprtn = False
End If
End If

If fgl.col = 1 Then
Set rsl = dbA.Execute(" select distinct item_name as name, item_id as code, unit , i_rate
from pkg_wise_rate where pkg=" & Formatlnsert(txtPKG) & " and r_name=" &
FormatInsert(txtRoad))
If rsl.RecordCount = 0 Then
MsgBox "Analysis of Rate is not available for Package:" & txtPKG
Exit Sub
End If

Help For rsl, "Help Form (Unit of Measurement)"


If hlprtn = True Then
txtEdit = rs1(" name" )
fgl.TextMatrix(fgl.Row, 7) = rs1("unit")
fgl.TextMatrix(fgl.Row, 8) = rs1("i_rate")
SendKeys "{ENTER}"
hlprtn = False
End If

End If
End Select
End Sub

Private Sub txtPKG_KeyDown(KeyCode As Integer, Shift As Integer)


Dim rsl As New ADODB.Recordset
If KeyC ode = vbKeyF 1 Then
Set rsl = dbA.Execute(" select pgk_name , r_name from package")
If rsl.RecordCount <> 0 Then
Help For rsl, "Help Form (Package)"
If hlprtn = True Then
txtPKG = NullChk(1, rs1("pgk_name"))
txtRoad = UCase(NullChk(1, rs1("rname")))

123
fillitemGrid
SendKeys "{Enter}"
SendKeys "{Enter}"
hlprtn = False
End If
End If
End If
End Sub

Private Sub Dist_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub sCode_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub Block_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub bCode_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub State_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtPKG_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtRoad KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub txtLen_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub dCode_KeyPress(KeyAscii As Integer)


stuff tab KeyAscii
End Sub

Private Sub fillItemGrid()


Dim r, rl As New ADODB.Recordset
Dim rCount As Integer

124
txtEdit.Visible = False
Set rl = dbA.Execute("select * from road_est where pkg=" & Formatlnsert(txtPKG) &
"and r_name=" & Formatlnsert(txtRoad))
clearGrid fgl, 2
fgl.Rows = 4

If rl .RecordCount <> 0 Then


rCount = r 1 .RecordCount + 2
txtLen = NullChk(1, rl("len"))
Dist = NullChk(1, rl("dist"))
dCode = NullChk(1, rl("dcode"))
Block = NullChk(1, rl ("block"))
bCode = NullChk(1, rl("bcode"))
Else
rCount = 4
fgl.TextMatrix(fgl.Rows - 1, 1) = "TOTAL"
End If
fgl.Rows = rCount
k=2
Do Until rl .EOF
For i = 0 To fgl.Cols - 1
fgl.TextMatrix(k, i) = NullChk(1, rl.Fields(i + 7))
Next
k=k+1
rl.MoveNext
Loop
fgl .Row = fgl .Rows - 1
fgl . col = 1
fgl.CellFontBold = True
fgl.col = fgl.Cols - 1
fgl.CellFontBold = True
txttotal = fgl.TextMatrix(fgl.Rows - 1, fgl . C ols - 1)
End Sub

A.10. HELP FORM (HelpForm)

Private Sub Form_ Activate()


fillgrid

If UCase(Adodcl.Recordset.Fields(1).Name) = "CODE" Then


Me.Height = 7680
Else
Me.Height = 6690
End If
End Sub

Private Sub Form Load()

125
setDB "PMGSY.mdb"
End Sub

Private Sub Form_Unload(Cancel As Integer)


If Hlprtn 1 Then
hlprtn = True
If Adodcl.Recordset.EOF Then
Adodcl.Recordset.MoveFirst
hlprtn = False
End If
Else
hlprtn = False
End If
End Sub

Private Sub Textl_Changeo


If Textl .Text = "" Then
Adodcl.Recordset.MoveFirst
Exit Sub
End If
Adodcl.Recordset.MoveFirst
If Adodcl.Recordset.Fields(0).Type = 3 Then Exit Sub
If Textl.Text <> "" Then
abc = Adodcl.Recordset.Fields(0).Name
def = abc & " like 1 " & Textl.Text & "*"
Adodcl.Recordset.Find def
If Not Adodcl.Recordset.EOF Then
fg2.Row = Adodcl.Recordset.AbsolutePosition
SendKeys "{DOWN}"
If Not Adodcl.Recordset.AbsolutePosition + 1 = fg2.Rows Then
SendKeys "{UP}"
End If
Else
If Not Adodcl.Recordset.EOF Then
fg2.Row = Adodcl.Recordset.AbsolutePosition
SendKeys "{DOWN}"
If Not Adodcl.Recordset.AbsolutePosition + 1 = fg2.Rows Then
SendKeys "{UP}"
End If
Else
Beep
Textl.Text = Mid(Textl, 1, Len(Textl) - 1)
End If
End If
Else
fg2.Row = 1
SendKeys "{DOWN}"
SendKeys "{UP}"

126
End If
End Sub

Public Sub fillgrid()


Dim A As Double
fg2.ColWidth(0) = 500
fg2.ColAlignment(0) = 4
fg2.ColAlignment(2) = 1
fg2.ColAlignment(3) = 1
fg2.ColWidth(1) = 0
A = fg2.Width - 830
fg2.ColWidth(2) = (A * 80) / 100
fg2.ColWidth(3) = (A * 20) / 100
fg2.TextMatrix(0, 0) = "Sno"
fg2.TextMatrix(0, 2) = "Description"
fg2.TextMatrix(0, 3) = "Code"
Adodc 1 .Recordset.Sort = Adodc1.Recordset.Fields(0).Name & " ASC"
fg2.Rows = Adodc 1 .Recordset.RecordCount + 1
For i = 1 To Adodcl.Recordset.RecordCount
fg2.TextMatrix(i, 0) = i
fg2.TextMatrix(i, 2) = LEf(IsNull(Adodcl.Recordset(0)), "", Adodcl.Recordset(0))
fg2.TextMatrix(i, 3) = 11f(IsNull(Adodcl.Recordset(1)), "", Adodc1.Recordset(1))
Adodcl.Recordset.MoveNext
Next i
If Adodcl.Recordset.EOF Then
Else
Adodcl.Recordset.MoveFirst
End If
End Sub

Private Sub Textl_KeyPress(KeyAscii As Integer)


KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub

A.11. COMMON MODULE (Module 1)

Global dbA As Connection


Global hlprtn As Boolean
Global girdtext As Variant
Global HLPSLCODE As Recordset

Public Sub setDB(dbname As String)


Set dbA = New Connection
dbA.Provider = "Microsoftj et. OLEDB .3.51"
dbA.mode = adModeReadWrite
dbA.CursorLocation = adUseClient
dbA.Open App.Path & "\" & dbname
End Sub

127
Public Function ChkVall(mind As Integer, mval As Variant) As Variant
On Error GoTo err_para
Dim ret_val As Variant
Select Case mind
Case 1 'string
If mval = "" Then
ret_val = "NULL"
Else
ret_val = "'" & mval & "'"
End If
Case 2 ' numeric
If mval = "" Then
ret_val = 0
Else
ret_val = mval
End If
Case 3 'date
If mval = emptydt Then
ret_val = "NULL"
Else
ret_val = "#" & Format(mval, "dd/mm/yyyy") & "#"
End If
End Select
ChkVall = ret_val
Exit Function
err_para:
MsgBox Eff.Description
Exit Function
End Function

Public Function NullChk(mode As Integer, myval As Variant) As Variant


On Error GoTo err_para
Select Case mode
Case 1 'string
If IsNull(myval) Then
NullChk = ""
Else
NullChk = myval
End If
Case 2 ' number
If IsNull(myval) Then
NullChk = 0
Else
NullChk = myval
End If
Case 3 'date
If IsNull(myval) Then

128
NullChk = emptydt
Else
NullChk = myval
End If
End Select
Exit Function
err Para:
MsgBox Err.Description
Exit Function
End Function

Public Sub txtMove(txtEdit As TextBox, transgrid As MSFlexGrid)


txtEdit.Move transgrid.Left + transgrid.CellLeft, transgrid.Top + transgrid.CellTop,
transgrid.CellWidth - 8, transgrid.CellHeight - 8
txtEdit.Visible = True
gridtext = transgrid
txtEdit = gridtext
txtEdit. SetFocus
SELECT TEXT2 txtEdit
End Sub

Public Sub SELECT_TEXT2(MYTEXT As TextBox)


If Len(MYTEXT) Then
MYTEXT.SelStart = 0
MYTEXT.SelLength = Len(MYTEXT)
End If
End Sub

Public Function Formatlnsert(ByVal str As Variant) As String


Dim n As Integer
If Trim(str) = vbNullString Or IsNull(Trim(str)) Then
n=0
ElseIf IsNumeric(str) Then
n=1
ElseIf IsDate(Format(str, "dd/mm/yyyy")) Then
n=2
Else
n = 3 '
End If

Select Case n
Case 0 ' Format NULL
Formatlnsert = "null"
Case 1 ' FORMAT NUMBER
Formatlnsert = Val(str)
Case 2 ' FORMAT DATE

129
Formatlnsert = "'" & Format(str, "dd/mm/yyyy") & "1 "
Case 3 ' Format string
str = Replace(str, "1 ", "")
Formatlnsert = "1 " & str & "1 "
End Select
End Function

Public Function ret_date(ByVal pdate As Date) As String


ret_date = "date(" & Year(pdate) & "," & Month(pdate) & " ," & Day(pdate) & ")"
End Function

Public Sub stuff tab(tkdkey As Integer)


If tkdkey = 13 Then
tkdkey = 0
SendKeys "{TAB}"
End If
End Sub

Public Sub setColHead(fg As MSFlexGrid, rs As Recordset)


fg.Cols = rs.Fields.Count + 1
fg.Rows = 1
fg.TextMatrix(0, 0) = "S. No."
For i = 1 To fg.Cols - 1
fg.TextMatrix(0, i) = UCase(rs.Fields.Item(i - 1).Name)
Next
End Sub

Public Sub Help_For(recs As Recordset, htitle As String, Optional isidtext As Boolean =


True)
recs.Filter = ""
Set HelpForm.adodcl.Recordset = recs
HelpForm.Caption = htitle
HelpForm.Textl.Text = "" 'svalue
HelpForm.Tag = isidtext
HelpForm. Show vbModal
End Sub

Public Function rowexist(tab name As String, col_name As String, Optional col_val As


String = vbNullString) As Boolean
Dim ch_rs As Recordset
Dim ch_qry As String
If col_val <> vbNullString Then
ch_qry = "select* from " & tab_name & " where " & col_name & " = " &
FormatInsert(col_val)
Else

130
ch_qry = "select * from " & tab name
End If
Set ch_rs = dbA.Execute(ch_qry)
If ch_rs.RecordCount <> 0 Then
rowexist = True
Else
rowexist = False
End If
End Function

Public Sub clearGrid(f As MSFlexGrid, Optional r As Integer = 0)


For i = r To I Rows - 1
For j = 0 To f.Cols - 1
f.TextMatrix(i, j) = ""
fRow = i
f.col = j
f.CellFontB old = False
Next
Next
End Sub

Public Sub insRow(f As MSFlexGrid)


Dim cRow, cCol As Double
cRow = fRow
cCol = f.col
Dim curCelFont As Boolean
fRows = f.Rows + 1
For j = f.Rows - 2 To cRow + 1 Step -1
For i = 0 To f.Cols - 1
fRow = j
f.col = i
curCelFont = f.CellFontBold
f.CellFontBold = False
fRow = j + 1
f.col = i
f.CellFontBold = curCelFont
f.TextMatrix(j + 1, i) = ""
f.TextMatrix(j + 1, i) = f.TextMatrix(j, i)
f.TextMatrix(j, i) = ""
Next
Next
fRow = cRow
f.col = cCol
End Sub

Public Function nullTOone(str As String) As Double


If Not IsNumeric(str) Then
str = ""
End If
If str = vbNullString Then
nullTOone = 1
Else
nullTOone = Val(str)
End If
End Function

132

Potrebbero piacerti anche