Cover Here

Transcription

Cover Here
CLARION/ASP
CLARION/ASP
User’s
User’s Guide
2
CLARION/ASP User’s Guide
COPYRIGHT 1994-2003 SoftVelocity Incorporated. All rights reserved.
This publication is protected by copyright and all rights are reserved by SoftVelocity Incorporated. It
may not, in whole or part, be copied, photocopied, reproduced, translated, or reduced to any
electronic medium or machine-readable form without prior consent, in writing, from SoftVelocity
Incorporated.
This publication supports Clarion. It is possible that it may contain technical or
typographical errors. SoftVelocity Incorporated provides this publication “as is,” without
warranty of any kind, either expressed or implied.
Revision 1.3
SoftVelocity Incorporated
2769 East Atlantic Blvd.
Pompano Beach, Florida 33062
(954) 785-4555
www.softvelocity.com
Trademark Acknowledgements:
SoftVelocity is a trademark of SoftVelocity Incorporated.
Clarion is a trademark of SoftVelocity Incorporated.
Microsoft, Windows, and Visual Basic are registered trademarks of Microsoft Corporation.
All other products and company names are trademarks of their respective owners.
Printed in the United States of America (0204)
CLARION/ASP User’s Guide
3
Contents:
Ch. 1: Introduction
9
Overview....................................................................................................................... 9
Road Map ................................................................................................................... 10
Preparation ................................................................................................................. 11
Creating/Modifying the Application ............................................................................. 13
Adding Clarion/ASP ............................................................................................. 14
Procedure Customizations................................................................................... 15
Generating and Incorporating .............................................................................. 15
Ch. 2: IIS, ASP, ADO, HTML
17
IIS Setup ..................................................................................................................... 17
Note: IIS Security Patches For Windows XP ....................................................... 20
IIS/ASP Check ..................................................................................................... 21
Virtual Directories................................................................................................. 22
Default Virtual Images Directory .......................................................................... 23
ASP and Database Access ........................................................................................ 24
ASP/ADO Applications......................................................................................... 24
Database Access ................................................................................................. 25
Clarion Programmers and ASP/ADO................................................................... 26
HTML (Hypertext Markup Language) ......................................................................... 27
VBScript Language..................................................................................................... 29
Ch. 3: ASP Template Concepts
31
How ASP Fits In with Clarion...................................................................................... 31
What’s Special About Our ASP Code .................................................................. 31
Interaction with Dictionary.................................................................................... 33
Navigational Links in Clarion/ASP .............................................................................. 33
Window and Control Formatting ................................................................................. 34
Security Levels ........................................................................................................... 35
Language.................................................................................................................... 36
Database Access........................................................................................................ 36
DBMS Requirements ........................................................................................... 36
Ch. 4: Getting Started Exercises
37
Ch. 5: How-To’s
39
Preparation How-To’s................................................................................................. 39
ADO and ODBC/DSN Setup................................................................................ 39
DSN Setup ........................................................................................................... 39
IIS Permissions by Directory................................................................................ 43
Directory Securities .............................................................................................. 45
Application How-To’s.................................................................................................. 46
Application of Global Template ............................................................................ 46
4
CLARION/ASP User’s Guide
Application of Browse Template .......................................................................... 47
Application of Form Template .............................................................................. 48
Browse/Form/Browse or Query/Browse/Form ..................................................... 49
Link a Browse and Form ...................................................................................... 51
In the Browse Procedure...................................................................................... 51
In the Form Procedure ......................................................................................... 51
Graphic Link From a Browse to a Form ............................................................... 52
Form Without a Browse........................................................................................ 53
Examples ............................................................................................................. 54
A Query Page....................................................................................................... 54
Browse to Browse ................................................................................................ 55
Using a Graphic to Signal the Link....................................................................... 56
Linking from a Column Value............................................................................... 56
The Child Side...................................................................................................... 57
Select Browses .................................................................................................... 57
Table Loaded Selects on Forms .......................................................................... 58
How to Prime a Field on an Update Form............................................................ 59
Help and Popup Windows.................................................................................... 61
Dynamic Runtime Templates............................................................................... 61
Example 1: Different Color Scheme Based On a Cookie .................................... 62
Example 2: Different Template Based On Access Level ..................................... 63
Testing How-To’s........................................................................................................ 65
Testing on Your Local Machine ........................................................................... 65
Internet Services Options..................................................................................... 65
The /Images Virtual Directory .............................................................................. 69
GLOBAL.ASA....................................................................................................... 70
Loading the Test/Debug Page ............................................................................. 72
Application Timeouts............................................................................................ 73
ftp Setup ............................................................................................................... 74
Integration/Deployment How-To’s .............................................................................. 75
HTML Template ................................................................................................... 75
Style Sheets ......................................................................................................... 78
Collected Data from Forms on Your Site ............................................................. 79
Passing Data to Other Parts of Your Web ........................................................... 79
Ch. 6: Integrating with Your Site
81
Links ........................................................................................................................... 81
Persistence of Data.............................................................................................. 82
Page Naming Conventions .................................................................................. 82
Linking Conventions............................................................................................. 83
Site Standard Page Format ................................................................................. 84
Ch. 7: ASP Template Reference
85
ASP Global Template Options.................................................................................... 85
Global Options/Global Tab................................................................................... 85
Target Language.................................................................................................. 86
CLARION/ASP User’s Guide
5
Show Help Button ................................................................................................ 86
Tooltips................................................................................................................. 87
Global Options/Cascading Style Sheets .............................................................. 87
HTML Design Time Templates ............................................................................ 87
List Defaults ......................................................................................................... 88
Data Records per HTML List ............................................................................... 88
Pad Table with Blank Rows ................................................................................. 88
Automatically Create Detail Link .......................................................................... 88
Place Database Navigation Bar on List Pages .................................................... 89
Show Add Button on DB Navigation Bar.............................................................. 89
Show Query By Form Button on Database Navigation Bar ................................. 89
Navigation Button Tool Tips................................................................................. 90
No Records Found Message ............................................................................... 90
Clear Filter Prompt ............................................................................................... 90
Form Defaults Button ........................................................................................... 91
Enable Javascript Calendar Popup...................................................................... 91
Enable DB Navigation on View Forms................................................................. 91
Required Field Indicator ....................................................................................... 92
Selected Field background .................................................................................. 92
Search Mode Select Control Text ........................................................................ 92
CRLF to HTML ..................................................................................................... 92
Form Button Text Tab .......................................................................................... 93
Form Button Titles Tab......................................................................................... 93
Form Message Text Tab ...................................................................................... 93
Form Validation Text Tab..................................................................................... 95
Include Defaults Button ........................................................................................ 95
Global Options/Generation Tab ........................................................................... 95
Enable Debug Mode ............................................................................................ 96
Suppress File Generation .................................................................................... 96
Popup Help Window Size..................................................................................... 97
Popup Select Window Size.................................................................................. 97
Global Options/Database Tab.............................................................................. 97
Connection Properties Dialog .............................................................................. 98
Connection Timeout ............................................................................................. 98
Command Timeout............................................................................................... 98
Read/List Operations ........................................................................................... 99
Form Operations .................................................................................................. 99
Call Connection Builder...................................................................................... 101
Using Access Database ..................................................................................... 104
SQL Delimiters ................................................................................................... 105
Global Options/Security Tab .............................................................................. 105
Provide User Based Security ............................................................................. 106
User Table.......................................................................................................... 106
Unique ID Column.............................................................................................. 106
Login Name Column .......................................................................................... 106
Login Password Column .................................................................................... 106
User Security Level Column .............................................................................. 106
6
CLARION/ASP User’s Guide
User E-Mail Column ........................................................................................... 106
Second User Name Column .............................................................................. 106
User Company Name Column ........................................................................... 106
User Defined Values .......................................................................................... 107
Login Screen Text .............................................................................................. 107
Login Persistence/Cookies ................................................................................ 108
Global Options/Administration Tab .................................................................... 109
Site Title ............................................................................................................. 109
Email ADO Errors—Administrator Email............................................................ 109
Message to Display on ADO Error..................................................................... 109
Enhanced ADO Error Reporting ........................................................................ 110
Images ............................................................................................................... 111
Image Relative Path........................................................................................... 111
Image Sizes ....................................................................................................... 112
Image Type Tabs ............................................................................................... 112
User Data ........................................................................................................... 112
Includes.............................................................................................................. 113
The ASP Browse Extension Template ..................................................................... 114
Browse Options/Globals Tab ............................................................................. 114
Conditional Row Formatting............................................................................... 116
Browse Options/Global Tab/Database Tab ....................................................... 117
Browse Options/Global Tab/Security Sub Tab .................................................. 118
My Records ........................................................................................................ 118
Security Level Required to Access Page........................................................... 119
Browse Options/Page Tab ................................................................................. 120
Page Title ........................................................................................................... 120
Help URL............................................................................................................ 120
QBF Procedure .................................................................................................. 120
Add Procedure ................................................................................................... 121
Select Mode Procedure...................................................................................... 121
Browse Options/HTML Table Tab...................................................................... 121
Populated From.................................................................................................. 121
HTML Table Title................................................................................................ 122
List Box Primary Table ....................................................................................... 122
Unique Key......................................................................................................... 122
Populate an Entry Locator ................................................................................. 123
Locator Column.................................................................................................. 123
Browse Options/Default SQL Tab...................................................................... 124
Regenerate SQL ................................................................................................ 124
Default SQL Select............................................................................................. 125
Default SQL Where ............................................................................................ 125
Default SQL Order by......................................................................................... 125
Browse Options/Data Columns Tab................................................................... 125
Data Columns/General Tab ............................................................................... 128
Data Columns Properties/Actions Tab............................................................... 129
Data Columns/Properties/Column Sorting Tab.................................................. 131
Data Columns/Properties/Appearance Tab ....................................................... 133
CLARION/ASP User’s Guide
7
Browse Options/Custom Columns Tab.............................................................. 134
Custom Columns Properties/Appearance Tab .................................................. 135
The ASP Form Extension Template ......................................................................... 139
Form Options/Global Overrides ......................................................................... 139
My Records ........................................................................................................ 140
Form Options/GlobalsTab/Security Sub Tab ..................................................... 141
Form Options/Global Tab/Database Tab ........................................................... 142
Security Levels................................................................................................... 143
Titles (Insert/Edit/Delete/View/Search) .............................................................. 143
Messages........................................................................................................... 143
Navigation .......................................................................................................... 143
Includes.............................................................................................................. 143
Form Options/ActionsTab .................................................................................. 144
Allow (Insert/Edit/Delete/View)........................................................................... 144
Page to Return To.............................................................................................. 145
Builder Page Information ................................................................................... 147
Generate QBF.................................................................................................... 147
Parent Browse.................................................................................................... 147
Form Options/Help ............................................................................................. 148
Help URL (Insert/Edit/Delete/View/Search) ....................................................... 148
Form Options/Data Access Tab......................................................................... 148
Table Sub Tab.................................................................................................... 149
SQL to Delete Row Sub Tab.............................................................................. 149
SQL for Selection Sub Tab ................................................................................ 149
Form Options/Controls Tab................................................................................ 150
Appearance Sub Tab ......................................................................................... 151
Validation Tab Sub Tab...................................................................................... 153
Select Options Sub Tab ..................................................................................... 155
Form Options/Custom Controls Tab .................................................................. 156
Ch. 8: ASP Embeds
161
Global Template Declarations .................................................................................. 162
Accessing the Embed Points.................................................................................... 163
Global Embed Points................................................................................................ 163
Browse Embed Points .............................................................................................. 164
Connection Object.............................................................................................. 164
Recordset Object ............................................................................................... 164
Merge Call.......................................................................................................... 165
Form Embed Points .................................................................................................. 165
Connection Object.............................................................................................. 165
Recordset Object ............................................................................................... 165
Merge Call.......................................................................................................... 166
Status Merge Call (Delete Only) ........................................................................ 166
Examples .................................................................................................................. 167
Form Embed ...................................................................................................... 167
Step One: Define the User Variable................................................................... 167
Step Two: Add the Code .................................................................................... 167
8
CLARION/ASP User’s Guide
Additional Form Embed...................................................................................... 169
Browse Embed................................................................................................... 171
Step One: Define the User Variable................................................................... 171
Step Two: Add the Code .................................................................................... 171
Step Three: One More Line of Code.................................................................. 172
Ch. 9: HTML Includes
175
Understanding the Process ...................................................................................... 175
What to Use it For..................................................................................................... 177
Final Notes................................................................................................................ 178
Ch. 10:
ASP Source Code Procedure
179
Application ................................................................................................................ 179
Usage ....................................................................................................................... 181
Ch. 11: Style Sheet Editor
185
Style Sheet Tab ........................................................................................................ 187
Body Tag Tab ........................................................................................................... 189
Background Class Tab ............................................................................................. 192
Data Tab ............................................................................................................ 192
Borders Button - Data Tab ................................................................................. 193
Margins Button - Data Tab................................................................................. 194
Padding Button - Data Tab ................................................................................ 194
Header Button - Data Tab .................................................................................. 195
Column Label Button - Data Tab ....................................................................... 196
Data Rows Button - Data Tab ............................................................................ 196
Footer Button: Data Tab..................................................................................... 198
Input Label: Data Tab......................................................................................... 199
Input: Data Tab .................................................................................................. 200
Style Sheets.............................................................................................................. 202
Index:
203
CLARION/ASP Introduction
Ch. 1:
9
Introduction
This chapter summarizes Clarion/ASP programming and deployment.
Clarion/ASP auto generates ASP (Active Server Pages) pages each of which serves to
publish a standard business procedure such as query a table or view, browse (display
and allow navigation through the results of a query or a table), or updates (add new
record, change record, or delete record).
The target platform is Internet Information Server, specifically public or high volume sites
using IIS and an ADO data-store. Clarion/ASP allows for a high degree of customization
of the interface, allowing for excellent integration into existing sites. All business and
application logic is strictly divided from the interface; in fact a web developer may safely
edit the HTML and Cascading Style Sheets which provide the “setting” for the database
“components” without fear of “breaking” the ASP code.
Overview
The following is meant to convey a conceptual summary of the Clarion/ASP code
generation process, for the developer familiar with creating desktop applications:
•
The modular application pages that Clarion/ASP generates fit together with links.
You therefore apply Clarion/ASP to the individual procedures for which you want
to provide web access. Clarion/ASP reads your data dictionary and builds a
default procedure (as an extension to your existing procedure). Then you
customize the Clarion/ASP procedure settings using the template interface,
rather than the formatters or Clarion embeds. This makes it important that you
use the Validity Checks tabs in the dictionary for all related fields. This helps the
template create a pseudo application flow for stateless http (stateless means that
each page is isolated, and can’t see variables contained on the previous or next
pages). You’ll also build a connection string (using a wizard) that tells ADO how
and where to access the database server. In essence, these items function as
the database/driver/tables settings for the application.
•
You’ll create a style sheet that controls the appearance for everything, using the
template interface and an HTML template which will act as a “setting” into which
Clarion/ASP will place the controls it generates. This is roughly equivalent to
setting global window and control appearance properties for your application (all
of which can be overridden at the procedure level).
•
You can add many further behavior or appearance customizations through the
template interface. In addition to the various database behaviors in your
application, these may include links to other non-Clarion/ASP generated pages at
the site, incorporation of various images stored at the site, etc. These function as
the directives (and to some extent in the case of custom links, embedded code)
10
CLARION/ASP User’s Guide
that tell the Clarion Application Generator what customizations for functionality
and appearance to place in the generated code.
•
You’ll generate the pages. In this case, generating source code is all that is
necessary; no compiler needs to be called because ASP is a scripting language.
You (and your web administrator) are then free to further customize the
generated pages (for appearance, application behavior, etc.).
•
Windows NT Workstation, Windows 2000 Professional, and Windows XP
Professional all provide a copy of Internet Information Server so that the
developer may test and debug the application on the machine that they develop
on.
•
Then you integrate the pages into your existing web, and copy them to an IIS
server, which is equivalent to deploying the application.
Note that you apply the Clarion/ASP templates first as a global extension template, and
then on a procedure by procedure basis. When you apply the browse extension template
to a browse, it will automatically create a link to the appropriate update form, but you
must manually apply the form extension to its update procedure.
In other words, if your application has fifty procedures, for which you wish to enable ASP
for five browse and five form procedures, you’ll first apply the global template, then apply
the ASP browse template five times, i.e., once for each of the five browses, and five
times for the forms.
Road Map
Detailing the actual steps summarized in the “conceptual” overview above, this section
provides a simple overview of the development and execution of an application, from
“scratch.”
•
The developer starts with a Clarion database dictionary describing the structures
in an SQL DBMS (hereafter, DBMS will refer to any client server relational
Database Management System such as MS SQL Server, Oracle, IBM DB2, etc).
•
The developer pre-formats the dictionary to include all relations, business rules,
additional indices where a sort order request is expected, plain english
descriptions for tables and fields, and control pre-formatting.
•
The developer optionally adjusts the field order within each table as well as sets
the “do not populate” options as appropriate, in preparation for running the
application wizard. Clarion/ASP reads the list boxes (for browses) and windows
(for forms) generated by the application wizard in order to determine which fields
it should populate in its tables (for browses) and forms, in the order that the fields
appear in those structures.
CLARION/ASP Introduction
11
•
The developer runs the application wizard (or creates an empty .app file and
manually populates browse and form procedures).
•
The developer applies the Clarion/ASP global extension template, specifying, at
that time, the DSN, the HTML design time template, and the style sheet options,
i.e., the global connectivity, look and feel options.
•
The developer decides which procedures require ASP page equivalents.
•
The developer applies the browse and form procedures respectively to the
browses and forms in the application.
•
The developer customizes the various fields within each procedure where
necessary, using the design time interface.
•
The developer links additional procedures as needed using the design time
interface. (As an example, a navigational list view (browse) of a “products” table
might link not only to the update form for the product, but also to a browse of all
products by the supplier of the original product, and/or a browse of all products in
the same category as the selected product).
•
The developer tests the various procedures locally using the Clarion/ASP
generated menu page and a local copy of Internet Information Server.
•
The developer fine tunes each procedure as necessary, whether for application
logic, or look and feel.
•
The developer generates the pages and tests them locally.
•
The developer and web administrator together may optionally “fine tune” the
generated pages.
•
The developer and web administrator together provide links as needed, to/from
the rest of the site to the ASP pages, and upload the ASP pages for deployment.
Preparation
As with normal Clarion programming, start with a data dictionary. In general,
Clarion/ASP, if applied to an existing application procedure, ignores the control formatting
customizations in the procedure, and instead reads the customizations in the dictionary. It
refers to the window in the procedure to determine what fields to populate, and in what
order.
The starting point should be a data dictionary referencing an SQL database. Note that
Clarion/ASP also provides an option for working against Microsoft Access, should you
wish to do so for testing purposes. You may not use Clarion/ASP with ISAM databases
(even ISAM databases via ODBC; we note that though Access is technically an ISAM
database, access is only via SQL).
12
CLARION/ASP User’s Guide
•
Every table you require should exist in the dictionary; each should have the Full
Pathname box in its File Properties dialog filled in properly.
•
If you wish to set a particular field order, you may do so in the dictionary.
•
Every relationship should be properly defined.
•
Every table should have a key defined with a primary attribute (in the Clarion
dictionary; the DBMS will no doubt have a primary key).
•
Every view, should you intend to use it in the ASP pages, should have at least
one “key” defined, i.e., a field(s) selected that can later be specified as an SQL
“Order by” clause. We encourage you to work with the database administrator to
create VIEWs. A helpful hint: remember that there will be no such thing as
“reports.” (Every HTML page full of data is already a formatted document). If an
existing application contains some useful reports that access multiple tables, you
may wish to examine the underlying Clarion VIEW structure and create or ask
the DBA to create a similar SQL view. This makes it easy to create a browse
displaying the same data. Such a report can easily be made read only, and you
can set the number of rows to display to as many rows as you wish.
•
Unless you don’t require security at all, you should add, if no such functionality
exists within the current database, a users table which will hold user names,
passwords, security access level and email addresses. See Global
Options/Security Tab for details.
•
If you’re deploying an SQL/ASP version of an existing Clarion desktop
application which utilizes an ISAM database, we also encourage you to work with
your DBA to create triggers to replace some of the business logic in the desktop
application. Remember that since Clarion/ASP outputs only ASP code, Clarion
code in template embed points is completely ignored.
•
Within the dictionary, fill in the “description” fields for tables, keys and columns.
These will function as default “tool tips” in your Clarion/ASP application. Note that
Clarion/ASP picks up all its formatting options from the dictionary; not from any
attributes added to a control in the window formatter. The only thing that
Clarion/ASP will pick up from the window formatter will be the fields list: those
fields present as entry controls in the update forms, and the columns within a
listbox within a browse procedure. (Note: in this case, “entry” refers to any control
which accepts user entry, not just entry “boxes.”)
•
Check the “Do Not Populate” option for all tables, keys and fields you will not
wish to populate under any circumstances. Check that the template has
populated the proper SQL date/time field in cases and not fields for which the
dictionary import wizard has automatically created a GROUP over that date/time
field. Clarion/ASP uses the SQL date/time field, not the Group or its components.
•
Fill in the description and prompt text for all fields you expect to populate.
CLARION/ASP Introduction
13
•
Set the Justification option on fields as necessary.
•
Fill in the Validity Checks tab in the Fields Properties dialogs wherever possible,
using the “Must be in File” option on primary/foreign key relations. When you
place a file drop list control template, or combo drop control template in a Clarion
window, Clarion/ASP can then populate a list filled from the related table.
Additionally, for non-linking fields, fill in ranges, true/false, Must be in List
wherever possible, so that Clarion/ASP can generate Javascript client side
validations. In general, the more client side validity checking your ASP
application can do, the less need for communication of error messages between
the DBMS and the end user.
•
Set up window control types (such as radio buttons, as opposed to entry boxes)
and control properties for fields wherever possible. Bear in mind that some
attributes will be ignored (e.g., font, transparency, mouse cursor) because they
are not supported in HTML.
All the above actions emphasize storing application design in the dictionary as much as
possible, which is an excellent every day strategy for any Clarion developer who creates
multiple applications which access the same database whether using Clarion/ASP or not.
Many Clarion developers already do so as a matter of course.
Creating/Modifying the Application
While in fact you can simply add the ASP extension to an existing application and then
take the procedures you wish and “ASP-ize” them, we suggest starting a new application.
It’s a simple organizational issue: In the existing application you will no doubt have
procedures you don’t wish to put on the web; and you may have source and report
procedures which you can’t put on the web. (Note that you may apply Clarion/ASP to
applications utilizing either the Clarion or ABC template chains).
This is merely a recommendation. Many developers will prefer to keep everything
(desktop and ASP) in one code repository. The reality is that the desktop and ASP
applications will share no code; only a dictionary.
For other developers, it may be most straightforward to create a new application, and not
populate any files, in effect creating a blank application tree. You may then add “ToDo”
procedures and use the browse procedure and form procedure wizards.
When you’re ready to create the ASP pages, all you need do is choose Project >
Generate all from the development menu, as opposed to pressing the “Make” button.
You may also take the following actions, which will facilitate viewing and navigation
across tables for the end user:
14
CLARION/ASP User’s Guide
•
Add Field Lookup Buttons, File Drop Lists, and File Drop Combos to windows to
facilitate navigational flow. The HTML pages produced won’t have tabs leading to
child or select browses; these actions will allow the end user to either drop a list
or press a button to navigate to related data.
•
“De-normalize” the data in the browses. If a browse contains “Product_ID,” and
“Person_ID” from the Orders table, use the list box formatter to link in the
Products and SalesPerson tables, and add in the “Product_Name” and
“Last_Name” from the related tables. Clarion/ASP will automatically add the JOIN
syntax and display data from the three tables. You may then instruct ASP not to
display any unwanted fields, such as ID numbers.
Adding Clarion/ASP
You’ll apply Clarion/ASP as a global extension template. This manual contains detailed
instructions on the template interface options for the global extension. You must add the
global extension before you add any procedure extensions. The global extension merely
sets the defaults. After setting the global extension, you then add the ASP browse and
form procedure templates to the procedures for which you wish to generate ASP pages.
You cannot apply the procedure extension templates until you’ve added the global
extension, and you will not generate any ASP procedure pages unless you’ve then added
the ASP procedure templates to a procedure(s).
When you add the global extension, you must define a connection string. Your ASP
application does not use Clarion drivers. It uses either OLE DB or ODBC. A connection
string is merely a list of parameters that MS Internet Information Server requires to
access the database. The Connection will provide a wizard like interface for you to build
your connection string.
You may define the style sheet and the HTML template when you apply the global
extension, or do it afterwards. The style sheet is much like a style list you may be familiar
with from word processors. For Clarion/ASP, for each “part” of a browse or form, you’ll
use a separate style, which holds the coloring, font, sizing and font attributes choices.
Using style sheets allows the web site to completely change the “look” of the site by
editing only a single file.
The HTML design time template provides a “setting” for the browses and forms; in effect,
you may place HTML elements such as a logo or text above and/or below the browses
and forms, set page background colors, etc. If your site already has a “template” for web
pages, you may easily take this, add a single text symbol, and thereafter all your
generated pages will appear inside your template.
At the global level, you’ll also set security options. Clarion/ASP makes implementing a
flexible security policy (for example, you may allow some users to edit certain data,
others to view it and still others not to view it at all) very straightforward.
CLARION/ASP Introduction
15
Procedure Customizations
You’ll apply the procedure extension template only to those procedures for which you
wish to generate ASP pages.
In many cases, you’ll elect to edit the list of fields contained within the browse. The
reason for this is both that your data displays in a table, which is not scrollable, and
because the more data in the table, the more network communications and memory
usage are required by browser, server, and DBMS. In general, we recommend limiting
the number of columns to four or five.
You’ll also have an option to either allow for a “button” at the left or right of a browse row
to link to an update form, or define link fields, so that when the end user clicks a data item
in a row it opens the update. You can also include “custom” columns which may contain
an image linking to another procedure or even to a page elsewhere in your site.
You may wish to specify security levels for the forms. This allows you to define access as
edit/view/none dependent on the user.
If you defined the “Must be in table” options in the data dictionary, links to parent tables
can provide a “select” button which provides for a popup window of allowable values from
the other table. If you wish, you may instead populate a file drop control template in the
form window, which instead populates a file loaded dropdown list box for the end user to
choose from.
There are many additional options documented within the command reference section of
this manual.
Generating and Incorporating
When you’ve generated your pages, you’ll test them using the web server on your
development machine. Then, when incorporating them into your site, you may also wish
to consult with the web administrator so that your style sheet will complement the site’s
current styles, and probably also that the site can provide a frame and links to the
procedure pages.
It’s important to realize that each browse, update form, view form, or Query-by-Form can
be called from any other page in the site. In fact, in cooperation with the web
administrator, you can “pre-fill” data fields within a Clarion/ASP form by posting the data
from forms that may already exist at the site. Or you may wish to collect data on a
Clarion/ASP form and post that to an existing form.
You’ll find that Clarion/ASP pages work well with existing pages in the site, and that this
manual documents how such cooperation works.
16
CLARION/ASP User’s Guide
CLARION/ASP IIS, ASP, ADO, HTML
Ch. 2:
17
IIS, ASP, ADO, HTML
The purpose of this section is to briefly provide an overview of ASP – Active Server
Pages – technology to Clarion and other database developers who may only have
passing familiarity with it. ASP has so far been the province of web designers who have
learned something of development tools because they had to. Clarion/ASP comes from
the opposite direction... it’s for developers who want to create ASP. Developers bring with
them very unique advantages that web designers could not be expected to bring, in areas
of programming efficiency and data management.
At its simplest, ASP is a form of server side scripting. ASP, executed from a dynalink
library, runs as a service subordinate to the web server. It receives a request from the
web server (usually but not exclusively Microsoft Internet Information Server) for a page
whose file extension is .ASP. The ASP library examines the page, runs its embedded
scripts, and “writes” an HTML page which reflects the resolution of whatever script(s)
were run. It passes the HTML to the web server, which passes it to the web browser. The
web browser receives only the HTML, and never sees the scripts which produced it.
The scripting language is usually VBScript, but any other scripting tool recognized by the
server, such as JScript or Perl can be utilized.
The script has access to all the resources that the system account on the web server has
(“system” is the default, but can be changed).
IIS Setup
This section is designed to help the developer set up IIS and a Clarion/ASP application
on a Windows NT/2000/XP Professional workstation. It’s assumed that for site
deployment your web administrator will provide the expertise to set up the application,
and that all the developer need do is to turn over the files and agree with the web
administrator on the name of the ADO connection.
You can easily run IIS locally to test your Clarion/ASP application, using the localhost
(127.0.0.1) IP address.
IIS differs slightly from Windows version to version in its install wizard and procedures. In
general, the developer should first check the Administrative Tools shortcut group to see if
the Internet Information Services icon is present. If it is, then IIS is already installed. If
not:
•
Windows NT and Windows 2000: if IIS is not installed, insert your Windows
installation CD, and search for a directory called i386\inetsrv. The installation
program is called INETSTP.EXE.
•
Windows XP Professional: insert your Windows installation CD, wait for the
autorun installation program, and choose Install Optional Windows Components.
Internet Information Server appears in the subsequent list.
18
CLARION/ASP User’s Guide
Once everything is installed, open your browser, type http://127.0.0.1 in the address bar,
and you should see a default home page. If not, open Control Panel, find the Services
applet (one level down under Administrative Tools in Windows 2000 and Windows XP),
and start the World Wide Web Publishing Service service. If you are running a fresh
installation of Windows XP and have recently applied security patches, you may not see
a default home page; the default page depends on ASP, and the security patches may
turn off necessary permissions. Windows XP users should read the section immediately
following before continuing.
CLARION/ASP IIS, ASP, ADO, HTML
19
If you’ve installed IIS for the first time, or if you simply haven’t used it before, we strongly
suggest that you take a little more time to install the latest Windows Service packs, and
then afterwards, the latest IIS Security patches. We suggest reading the IIS Security
page at
http://www.microsoft.com/technet/treeview/default.asp?url=/TechNet/security/prodtech/iis
sec.asp for further information.
Note also that you may display the IIS help via the URL http://localhost/iishelp.
20
CLARION/ASP User’s Guide
You can, of course, generate pages without having IIS on your development machine,
and copy them to a server. You can even set a network share on the server and develop
in a directory on the server so that you don’t even have to copy the .ASP pages there. In
the latter case, we strongly suggest that the server be located only on your intranet, and
not accessible from the Internet.
Note: IIS Security Patches For Windows XP
As of March 2002, new IIS security patches, if applied to a new installation of Windows
XP may turn off some read/write and execute permissions on the web root. This prevents
any ASP pages from running. The “symptom” that this is the problem will be that when
you type “http://localhost” in your browser address box, an error page will indicate an
error in an asp page called “localstart.asp.”
Additionally, simply changing the permissions for the root only will not enable ASP... you
must extend the permissions to all existing subdirectories.
Do the following only if you have a fresh XP IIS installation, i.e., you’ve never added any
real or virtual subdirectories to the web root, and haven’t changed the location of the web
root. We have not seen any security patches which change the permissions of an IIS
installation which previously had a functioning web server.
CLARION/ASP IIS, ASP, ADO, HTML
21
The initial home directory properties will look like this:
Note the unchecked box for “Read” in the untitled group box, and the selection of “none”
in the Execute Permissions check box. You must check the “Read” check box, and set
the Execute Permissions choice to “Scripts Only.”
Then, after checking OK or Apply, a dialog box appears asking to apply the permissions
to the child directories. The text in this box is somewhat confusing. You must select all
and press OK.
Following this, reload the default home page in your browser. If it does not load
immediately, restart the IIS service by using the stop/play buttons in the Internet Services
Manager. If the default home page still does not appear, review the steps in this section.
IIS/ASP Check
This step should only be necessary for Windows NT users who did not install the NT
Option Pack.
Verify that your ASP and ADO dyna link libraries are in place. To do so, locate the inetsrv
directory with the IIS binaries (probably %windows%\system32\inetsrv), and verify that
ASP.DLL is present. If not, you must install it. We cannot say how much longer the option
pack will be available, but at the time this manual went to press, it was downloadable at
22
CLARION/ASP User’s Guide
http://www.microsoft.com/ntserver/nts/downloads/recommended/NT4OptPk/default.asp.
(Though the URL indicates NT Server, you’ll find an option for choosing workstation at
that location). If the option pack is no longer available at the time you read this, it may be
necessary to upgrade your operating system.
Virtual Directories
With IIS working on your workstation, you must keep in mind that the local web site’s
directory structure is in no way obligated to match your directory structure. Its root
directory will be viewed as “/” by the browser (remember that as a web service, the
directory delimiter is a forward slash, rather than a backslash). The fully qualified file
name of the directory on your hard drive may be C:\Inetpub\wwwroot (the default).
When you create a directory below the root, such as C:\Inetpub\wwwroot\mydirectory,
your web browser will see the directory as http://localhost/mydirectory.
A virtual directory allows you to declare that a directory located anywhere on your hard
drive can fit into your web directory structure. This is generally far easier to manage.
Assume that you’re working on a project called myproject. Your Clarion project directory
is C:\My Documents\Clarion\myproject. You wish the browser to see the application
directory as residing in http://localhost/myproject.
CLARION/ASP IIS, ASP, ADO, HTML
23
Rather than copying over all the ASP files to another directory each time you regenerate
them, it would be far easier if you told Internet Information Server to use your working
directory’s ASP subdirectory as a virtual directory. Thus, rather than creating a
subdirectory and copying your files to C:\Inetpub\wwwroot\myproject, you’ll declare that
the ASP directory that Clarion/ASP will create under your project directory is a virtual
directory. The name of that directory (in this case) would be C:\My
Documents\Clarion\myproject\asp).
When you’re ready to create a virtual directory for your project, you’ll find step by step
instructions in the section of this manual called “Testing on Your Local Machine.”
Note: some very useful settings to know about IIS, especially when you expect to test
applications, are the timeout settings for application variables. You’ll find access to these
on the “Home Directory” tab (or “Directory” if you wish to manage a single directory at a
time) of the directory settings. Locate the “Configuration” button in the lower part of the
tab. This leads to the Application Configuration dialog. The settings are:
•
Session Timeout: this times out the session variables, including user ID’s for
logins. For testing, set it low.
•
Enable Buffering: turn this off if you expect to be generating frequently while
tuning the application.
•
ASP Script Timeout: turn this very low (e.g., 15 seconds) when you’re testing
ADO via custom queries; Clarion/ASP won’t be able to output debug information
upon an ADO connection error. Therefore, it’s best to keep the timeouts short.
•
Additionally, on the Home Directory tab (which precedes the three settings
above), we recommend that you set Application Protection to “Low” using the
dropdown choice list.
Default Virtual Images Directory
Many web sites have a virtual directory in which they store frequently used images,
usually called /images. You probably do not have such a directory on your development
machine. As you set IIS up on your development machine you should create this virtual
directory and point it to Clarion\images\asp, so that the Clarion/ASP button images can
be found by your application (of course, you can override this location if you prefer to
keep the images elsewhere). For further information, please see the section entitled
“Testing On Your Local Machine/Internet Services Options.”
24
CLARION/ASP User’s Guide
ASP and Database Access
For database access, ADO (Active Data Objects, or sometimes ActiveX Data Objects) is
the normal means of access. In essence, this means that the script creates an OLE DB
object that takes requests from the script, queries or takes action on the database, and
provides a resultset (query result) object to ASP. ASP then examines this object and
generates a web page with some result.
Through methods such as, for example, connection pooling (logging into the database
just once, and bringing back all queries for all subsequent users through the one
connection), ASP manages resources efficiently, making the solution quite scalable.
Originally, ASP’s purpose was limited to making web pages more interactive; obtaining
user information from an HTML form, and then tailoring subsequent pages to cater to the
interests of the end user. This was quite scalable, and small but customized pages could
be served up very quickly.
A feature that helped to transform ASP into a business applications platform was the
addition of ADO, which provides flexible, secure access to SQL databases.
ASP/ADO Applications
Think of your ASP application, therefore, as a browser based interface to a powerful back
end application. The ASP platform has its strengths and weaknesses:
Stengths:
•
Your applications’ interfaces gain the advantage of being accessible from
anywhere without requiring installation.
•
They can be very scalable.
•
The applications are secure, because the end user only sees the user interface,
and the interface shows only the data you decide to show.
•
The applications are manageable at a single point (the web server), and
upgrades require no action on the part of the end user.
•
The applications themselves can look very pretty and be very functional.
Weaknesses:
•
The applications look and feel different than desktop applications; issues such as
window and thread management, and a restricted selection of window controls
may be frustrating to some developers.
CLARION/ASP IIS, ASP, ADO, HTML
•
25
The scripting languages, and the programming structure for them may not be as
fully featured as other languages.
Note that Clarion/ASP’s ADO access requires that if you do not use a virtual directory,
you must either copy the GLOBAL.ASA file generated by Clarion/ASP to your server’s
application directory, or (more likely) cut and paste the text in that file into the
GLOBAL.ASA file in your web’s root directory, whichever your web administrator prefers.
The GLOBAL.ASA file contains several variable declarations used by Clarion/ASP. For
more information on these variables, see the Global.ASA section in the Testing HowTo’s.
Database Access
In regards to relational databases, ADO – Active Data Objects – is an ActiveX interface to
ODBC access. ADO also provides interfaces to non relational tables such as Excel
spreadsheets, in which case ODBC is not used.
Using the templates, it’s not necessary for the Clarion developer to know the ADO
methods; like the ASP objects described above, they are important if you wish to
understand the generated ASP code.
ADO works within ASP with the declaration of a connection object. The open method of
the connection object takes the connection string as a parameter, and opens the
database.
The execute method of the connection object takes an SQL statement as a parameter,
and returns a result set: an array of database values. As an example, “Select FirstName,
LastName from MyTable” returns the values of all the first and last names from all the
rows of MyTable.
Using the resultset methods, such as next and previous, the developer can navigate
through the database. The Clarion developer need not be concerned with ADO code. The
template builds the necessary parameters.
The template interface also generates the SQL code. These statements are exposed in
the procedure properties dialogs; those Clarion developers with an excellent knowledge
of SQL should feel free to modify the code should they feel they can make it more
efficient.
Clarion/ASP is designed for use with Client/Server SQL databases exclusively. In very
low volume sites, the Microsoft Jet Engine (Microsoft Access .mdb files) can be
substituted; SoftVelocity has built in compatibility with its non standard syntax.
26
CLARION/ASP User’s Guide
Clarion Programmers and ASP/ADO
This section provides a very brief introduction to how experienced Clarion programmers
will work with Clarion/ASP. Here are the main points:
•
The biggest change is that you don’t program database access in Clarion. For
lack of a better analogy, Clarion programmers must sit back and “let the
templates drive.”
•
You will continue to work with templates, the dictionary, and the application
generator.
•
The “look” of the application will be controlled through style sheets.
•
You may choose to apply the global ASP template to an existing application or a
new one.
•
Once the global template is applied, you select the browse or form procedures
for which you wish ASP pages, and apply the ASP browse and form templates to
them.
•
The options set by the window formatter to format the appearance and behavior
of controls will not affect their ASP equivalents; however, any control you wish to
appear on the ASP page must have an equivalent in the browse listbox (for
browses) or in the WINDOW (for forms) structures. In other words, you can place
a field with the window formatter, but everything else will be controlled in the ASP
Browse or ASP Form extension dialog.
•
These dialogs provide for a great deal of customization, both in appearance and
functionality.
•
To generate the ASP pages, you’ll choose the Generate All command, and then
transfer the pages to your server.
•
Your .APP file will still generate a Clarion/Windows desktop application,
separately, safely ignoring your ASP options and scripts.
•
As always, the Application Generator will safely regenerate new code when you
make changes without losing old customizations.
CLARION/ASP IIS, ASP, ADO, HTML
27
HTML (Hypertext Markup Language)
In order for us to introduce the VBScript language, we must quickly review the elements
of HTML.
Each HTML page is a combination of static text, formatting tags, and links which instruct
the browser how to display the text. The links provide access to another page, when the
end user clicks one, or it may instruct the browser to get another file, such as an image
file, and display inside the page.
The formatting tags consist of codes enclosed in angle brackets, and generally come in
pairs. The first of the pair is the code within the angle brackets, such as <b> for bold. The
second of the pair includes a forward slash to indicate it’s the ending format code, such
as </b>.
They surround the word or paragraph the format applies to; for example, to bold the word
Clarion in the following sentence fragment, the HTML code would be: amongst database
development tools, <b>Clarion</b> stands out.
Other key tags include <TITLE>, which delivers the page title which appears in the
caption bar, and <p> which provides the beginning and end markers for a paragraph.
Certain built in styles, such as headers of different styles, bullets, and numbered lists are
available.
You can encode further styles in a separate file called a cascading style sheet. This can
store a preference for a certain font, size, color, etc. When you create a standard style
sheet and use its styles for all the text in the pages at your site, you can easily update the
look of the site by editing the style sheet, thereby changing the fonts throughout all your
documents.
To arrange the layout of text and pictures, the most common method is to declare a table.
It’s easiest to think of a table as a flexible grid, whose cells you can merge, or insert to
easily. In general, whenever you see a web page with newspaper style columns,
indented text, or any sort of fancy layout of graphic elements, it’s using a table.
Clarion/ASP does not require you to know a single thing about HTML. You can apply the
various style sheets supplied to use the colors and font schemes you think look best;
If you wish to customize further, you can edit the style sheets; or the HTML code within
the ASP pages you generate; or you can have a designer or web master edit the
appearance of the pages you produce.
28
CLARION/ASP User’s Guide
Here is a “bare minimum” HTML page, consisting of a title, headline, a small amount of
body text, and a text link to a page called “other page:”
<html>
<head>
<title>This Appears in the Browser Caption Area</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>This is the Page Headline</h1>
<p>This is some body text. Every good boy deserves favor. All work and no
play
makes Jack a dull boy. The quick brown fox jumped over the lazy
dog.</p>
<p>The following text, where it says <a
href="http://www.mydomain.com/pages/another_page.htm">Click
Here</a> provides a text link to another page.</p>
<p>And finally, the SoftVelocity logo will appear centered below:</p>
<p align="center"><img src="/images/SoftVelocityLogo240w.GIF" width="240"
height="127"></p>
</body>
</html>
And here is that page as it appears in an HTML editor’s preview:
CLARION/ASP IIS, ASP, ADO, HTML
29
VBScript Language
The scripting language itself is derived from Microsoft Basic. Perhaps more important for
ASP than the basic language elements and statements are the built in classes and
objects for page and component access.
Chief among these are the Request and Response objects, which refer to the incoming
http request, and the outgoing http response respectively: the URL, parameters and
posted data (fill in form data) that your ASP page receives, and the HTML page it posts in
response.
For example, if a form on the referring page contains a text box named FillThisIn, to
retrieve the value that the end user typed in, the developer uses the method called
Request.Form(“FillThisIn”).
To write a string out to the client’s browser containing the contents of a variable, the
developer may use the method Response.Write (myvariable).
Script statements are enclosed in tags: <% before the statement, and %> at the end of
the statement. Notice that the end marker does not contains a forward slash, as HTML
markers do.
To write out a variable within an HTML string, an equal sign is added within the script
statement tag. For example, to begin and end a paragraph with text, and insert the
contents of a variable within it, you might use the following: <p>Counter value equals
<%=MyCounter%> right now.</p>
Another object, the application object, provides a global storage area applicable to the
application, so that all sessions can refer to a single variable, for example.
The session object refers to the interaction between the server application and a single
user at one “sitting.” This is an important concept to master. HTTP is a stateless protocol.
That means the browser sends a request for a document, the server sends it, and that’s
the end of the transaction. As far as the server is concerned, the next request from the
browser is a completely new request, and it does not recognize having fulfilled a request
from the browser previously. The session object is a workaround for this protocol, using
cookies and unique ID’s. This provides a storage space for the equivalent of global
variables.
The data types in VBScript are limited to one type, called a variant. To mimic the use of
data types, the developer uses conversion functions whenever retrieving a variable. The
conversion functions, of which there are nine, start with the letter “C” plus the type to
convert to. To convert a variable for use as an integer, for example, the necessary
function is CINT(myvariable).
Clarion programmers only need to use VBScript should they wish to customize the
behaviors in the generated web pages.
30
CLARION/ASP User’s Guide
CLARION/ASP ASP Template Concepts
Ch. 3:
31
ASP Template Concepts
Longtime Clarion developers used to working in the Clarion language may be startled to
think of the Clarion application generator generating applications in another language.
Clarion has generated database applications on DOS, Windows and IP platforms for
nearly two decades.
How ASP Fits In with Clarion
Clarion’s emphasis throughout its long history has been to provide “canned” application
behaviors which developers tie together through series of prompts and wizards:
•
The developer creates a database dictionary describing the data, which also
holds various application options.
•
The development environment further presents a design-time interface which
provides for further application customization, as well as source code level
customizations.
•
The application generator takes all the customizations and outputs source code
files.
•
The project system then compiles and links the resulting program.
Clarion has been the “language of choice” for the applications it’s created, though
developers have had the option of incorporating C, C++, and Modula-2 source code
modules. Clarion/ASP represents the first time the Clarion environment has been used to
generate source code modules with no Clarion code.
Clarion/ASP provides a new option to deploy Clarion applications to browser-based users
from public or high volume sites, utilizing the same elements: database dictionary,
design-time interface, and application generator. Clarion/ASP creates Clarion type
applications for browser clients/ASP servers.
What’s Special About Our ASP Code
The ASP/ADO code generated by the application generator is highly compact and
efficient, yet features robust error checking.
•
“Processor Pages,” which complement each of the .asp pages that Clarion/ASP
generate for your procedures contain the database access code. The processors
consist of small, tight loops which smoothly handle difficult access issues such as
column names with embedded spaces, null values, which are particularly
troublesome in ASP, and type conversions.
•
Compact Javascript functions provide for rapid client side validation.
32
CLARION/ASP User’s Guide
•
Customization support within the template interface which essentially allows the
developer to place HTML/VBScript code alongside the Clarion/ASP code without
harming the generated code, and without risk of overwriting the customizations at
generation time.
•
Rich support for images, whether displayed from a database row or external file.
•
A flexible security model which provides up to 100 different security levels per
procedure, along with options to allow viewing, adding, editing or deleting data
according to the level of the user.
•
“My Records” filtering, an integral part of the security model, allows “ownership”
of rows by an individual user or group of users. The developer may then specify
that only that user or group may access that data.
•
Automatic calls to login screens and user validation from within all pages using
security, so that the proper security is in place even if the ASP page is called
from a page not generated by Clarion/ASP.
•
Extremely flexible interaction with URL parameters, making it possible to identify
record(s) for use when called from other pages at the site not generated by
Clarion/ASP. (i.e., link to an update form for a specific record from any other
HTML page. (Except the templates for the browse pages. These require that the
order of the components be preserved; these templates contain comments so
that the web designer understands what is and is not “editable.” The columns
may be rearranged).
•
Flexible interaction with the specific form fields within the update form allowing,
for example, a page from elsewhere in the site to link to a form and pre-fill one or
more fields.
•
Extremely flexible layouts via HTML run-time templates which can help you
change any layout beyond the many options already available through the
template interface. Clarion/ASP completely separates the application logic from
the interface, making it a simple matter to turn the interface over to a web
designer without worry that the customization will break the app. The web
designer may modify anything and everything, so long as he or she cuts and
pastes the symbols (for example @TableNameFieldName@) for each element to
its new location.
•
An enormous amount of flexibility via use of style sheets that work along with the
ASP pages allowing you to define exactly the look you wish, and which allow you
to “blend” the pages into an existing web using the same look and feel, and then
automatically change the “look” whenever the site is updated.
CLARION/ASP ASP Template Concepts
33
Interaction with Dictionary
There are two guidelines to keep in mind when working with Clarion/ASP:
•
The template looks to the dictionary for your application flow and pre-formatting,
not to your .app file.
•
HTML controls are different than Windows application controls. There is
significantly less capability for customizing appearance, behavior, and
positioning.
The first guideline makes it crucial that you store as much information about the business
rules and control pre-formatting in the dictionary as possible. The second, that you rely as
much as possible on the global level options (via the dictionary and the Global ASP
extension dialog) to set control behavior rather than on the window formatter. The only
information that Clarion/ASP will pick up from your WINDOW structures is the list of
available controls.
Navigational Links in Clarion/ASP
Because HTML is stateless, the application you produce must also be. Every page can
stand alone; unlike Windows applications, you cannot assume that “window 2” will only
appear if the end user first did something with “window 1.” That can only be managed in
the broader context of your overall web site flow.
Be sure to define the “Must be in Table” option within the dictionary for all fields which
have a file relation. This will allow for hyperlinks to the appropriate related tables.
Additionally, if you wish to implement the “browse/form/browse” paradigm that Clarion
desktop applications implement by default, you’ll simply accept the default links to the
update form from the browse. To the end user, it will appear as a graphic that when
clicked leads to an update form.
ASP opens up additional navigational possibilities from within the browse. The normal
navigational direction in Clarion flow is from parent to child to child (edit a record, view
child browses, double click the child, edit the child, view its child browses, etc).
Clarion/ASP allows for navigation in the opposite direction. In much the same way that
you can declare a field to be a procedure link to a child update form, you can declare
another field to be a procedure link to a parent update form. This is allowed through
procedure links. You can conceivably create a table with four or five columns and ten or
twenty rows and enable every single piece of data in the resulting “cells” to link to a form
or browse in a parent or child table that is filtered by the value in the cell it was linked
from.
34
CLARION/ASP User’s Guide
It’s therefore quite simple to go from browse to browse. For Clarion developers who in the
past have stuck closely the templates, Clarion/ASP may seem to offer an overwhelming
variety of new choices. In the case of browse-to-browse navigation, however, developers
will find that this is the HTML implementation of child browses on a form; separating the
child browse from the form allows for more efficient memory and network
communications.
It’s important to remember that each procedure or page must be able to stand in
isolation, or even, which procedures must be accessible from “outside,” i.e., a completely
different part of the site having nothing to do with the application. For this reason, the
developer must decide which procedure must link to others. Implementing the links
require a few mouse clicks.
Likewise, the requirement that each procedure be able to stand in isolation makes the
concept of a “menu” problematical. Clarion developers accustomed to the application
frame as a gatekeeper to access to each of the procedures may consider the simple list
of procedures that Clarion/ASP generates as a “menu” to be unappealing and
unimaginative compared to the functionality of the other pages that Clarion/ASP
generates. The “menu,” however, isn’t meant to be deployed, but instead is a simple
convenience for the developer to use when testing. It’s up to the developer in conjunction
with the web site administrator to provide for the proper ‘gateway” into the individual
procedure pages that Clarion/ASP generates.
Window and Control Formatting
A key concept to understand when creating ASP applications is that HTML controls are
different than Windows application controls. There is significantly less capability for
customization and far less control over positioning. This leads us to a “good news and
bad news” situation.
The good news is, despite these limitations, in Clarion/ASP we’ve accomplished an
extraordinary amount of mimicry of control formatting and layout using HTML 4.0 and
stored it all in style sheets for maximum flexibility. The bad news is that because there’s
no way to equate every single one of the properties in the dictionary control formatting
options with HTML we can’t guarantee that everything will be perfect. For example, we
can’t provide for transparency, immediacy, selected coloring, or control-specific cursors,
to name a few. We can’t recreate controls such as regions.
Developers will find that your control formatting will be less visual, and more dependent
on selecting properties from lists. Layouts are either horizontal, as in a browse, or vertical
as in a form, one control to a line. You may specify the types of control, and a number of
options for appearance and behavior, but it’s not the same as designing a dialog box.
Good use of style sheets, however, can make for a very attractive page.
CLARION/ASP ASP Template Concepts
35
After the page is generated, however, you can load the runtime HTML template that
Clarion/ASP produces in an HTML editor. That template contains symbols
(@TableNameColumnName@) that indicate where the data will “go.” You can completely
redesign the placement of everything on your forms by editing the runtime template.
Security Levels
Clarion/ASP provides for a straightforward yet highly flexible security scheme based on a
pyramid of user/group access rights with up to 100 user levels.
When you enable security on a global level, each generated procedure will include a
login routine. Access by the end user to any procedure page with security enabled will
invoke a login screen. Once the user enters a successful login on one page, they may
access any page their security level allows rights to, providing that any period of inactivity
does not extend beyond a configurable timeout. If it does, they must log in again.
You may designate a table within the database to store a user ID (we suggest that an
email address is highly useful for general public web applications), password, and access
level (an integer between 0 and 99). Optionally, the table may store the user name (either
first and last names separately, or first and last combined), and an email address if not
used for the user ID.
The login messages/instructions are configurable.
After specifying that security is to be enabled, and designating the table which holds the
user information, the developer may then set custom access levels by procedure (the
default for all, once security is enabled, is 1). Within each procedure, the developer may
separately specify separate access levels for viewing, editing, adding, and deleting data.
Thus, should the developer specify that ordinary users are level 30, supervisors level 50,
managers level 70 and senior managers level 90, a developer may specify that a
particular form might be viewed all, a new record added by supervisors and higher, an
existing record edited by managers and higher, and deleted only by senior managers.
With 100 possible values and four possible access levels per update form, the security
system allows for many possible access scenarios.
Additionally, implementing the global security table in conjunction with the “My Records”
filtering, which allows you to designate a column as that particular row’s “owner” allows
you not only to provide for limiting access to the record only to an individual, but also to
provide for security “groups.” By designating, for example, a department ID as the owner,
you may effectively limit viewing and editing of data to only the members of that group.
All traffic between the browser and the server is unencrypted and therefore open to
packet sniffers, unless secure http (https) is used. Deployment of https is beyond the
scope of this manual and is a matter for the web administrator.
36
CLARION/ASP User’s Guide
Language
Clarion/ASP’s default messages (e.g., “Next record” as a tool tip for the “Next” navigation
button) are completely customizable. We’ve provided “sets” of messages in three
languages: English, Spanish, and French. Choose the language set in the global options,
and if necessary, customize the messages further at either the global or procedure level.
If you wish to customize the default prompts, edit the .TRN files in the Clarion template
directory. Each of the files is named ASP_LG??.TRN, where ?? is a two letter
abbreviation for a language. “EN” = English, “FR” = French, “NL” = Dutch, “DE” =
German, and “SP” = Spanish. The file format is template symbol=text. Note that no %
sign precedes the template symbol, that no space should exist on either side of the =
sign, and the text string is unquoted.
Database Access
DBMS Requirements
Clarion/ASP is designed to work with ADO, which is designed for SQL. The ASP code it
produces has been tailored to be fast and scalable, and is well suited for high volume
sites.
The database behind the application is of the utmost importance. Use a dedicated
relational DBMS for all but the smallest sites and for testing. Clarion/ASP provides for
optional code generation compatibility with the Microsoft Jet Engine (MS Access) for
testing and for very low volume sites. ODBC database drivers must be thread safe to
work well with ASP. Be sure that the drivers for the DBMS are up to date.
Theoretically, one could use Clarion/ASP to generate an ASP front end for OLE DB
access to a Microsoft Excel data range. We suggest that as a developer you should be
realistic about the platform you deploy your database on.
CLARION/ASP Getting Started Exercises
Ch. 4:
37
Getting Started Exercises
Our Annotated Examples book provides very detailed instructions for creating the sample
applications.
We suggest that you use these as a starting point for working with Clarion/ASP. Most
specifically, the “Tasks” example provides a quick and easy demonstration of significant
functionality yet takes only a short time to complete.
38
CLARION/ASP User’s Guide
CLARION/ASP How-To’s
Ch. 5:
39
How-To’s
The subsequent topics provide step-by-step directions for implementing Clarion/ASP for
your business applications. The “How-To’s” cover preparation, application, testing, and
Site Deployment/Integration.
Preparation How-To’s
ADO and ODBC/DSN Setup
ADO (Microsoft Active Data Objects) provides for data access to relational and/or non
relational data via ODBC or OLE DB ASP provides library functions that make use of
ADO, and Clarion/ASP uses these functions extensively.
In general, ADO access to relational databases is accomplished by ADO calling the
ODBC drivers, and non-relational access (for example, to an Excel spreadsheet) is
accessed via OLE. In either case, data access is usually fast, and resource-efficient.
The Clarion/ASP developers’ interaction with ADO is usually limited to building a
connection string via the global template prompts. When creating your application, you
will call the Connection Builder (described below) to identify your data and the OLE
provider. You may also choose the OLE Provider for ODBC, in which case you must set
up an ODBC DSN. You must set up the DSN before any other steps.
DSN Setup
DSN stands for Data Source Name, which will be familiar to anyone who has worked with
ODBC. A DSN simply provides a list of resources that describe where the database is
and how to connect to it: the server, the driver, the tables, the user ID, password, etc.
Note that user ID and password, are invisible to the browser (i.e., when the user issues
the “View Source” command in the browser, the page that the user sees does not contain
the user ID and password).
If using ODBC, or the OLE Provider for ODBC, when testing on one machine, and
deploying on another, you must install the ODBC driver and set up the DSN on both
machines. To set up the DSN, you should use the Control Panel Data Sources applet for
ODBC. Choose either a system DSN or a file DSN, so that the DSN will be available to
the system account.
Note: Remember that since OLE DB almost always utilizes the ODBC layer (even when
not using the OLE DB Provider for ODBC), you may take advantage of ODBC tracing
whenever database access issues must be debugged. To enable tracing, open the
ODBC administrator, select the “Tracing” tab, and press the “Start Tracing Now” button.
Remember to note the precise location of the trace file. After you test the application,
open the trace file and read from the bottom to the top to determine any possible data
access errors. Remember also to turn tracing off when done. The use of ODBC tracing
40
CLARION/ASP User’s Guide
can be particularly important should any ADO errors be severe enough as to cause a
timeout. In this situation, no information is returned to the web server, and the only error
information available to the end user is that the application timed out.
Because the prompts for the Data Sources applet can vary by driver selected and
Windows version, we’ve provided only an example of a DSN for Microsoft SQL Server
(as set up under Windows XP Pro), and notes on the settings we’ve chosen:
CLARION/ASP How-To’s
41
42
CLARION/ASP User’s Guide
The connection string when using a DSN can consist of some or all of the following fields:
•
When typing in a server name, should you be using a TCP/IP only connection, be
sure that the server name is located in the HOSTS file or accessible via DNS.
•
If the driver supports a Client Configuration dialog, be sure to verify the network
protocol and port. In the case of MS SQL Server, our illustration shows a TCP/IP
only connection. Here we use the default IP port number.
•
The user name in the illustration is one set up for our example; it is not a built in
account.
•
It’s good practice to specify the default database.
CLARION/ASP How-To’s
43
IIS Permissions by Directory
It’s possible that when you apply various IIS security patches that the default IIS
permissions may not permit ASP applications the permissions they need. When working
in the IIS applet, you must be sure that the security permissions set for your application
directory are:
•
Read Permission (Directory or Virtual Directories properties sheet)
•
Execute Scripts (Directory or Virtual Directories properties sheet)
44
CLARION/ASP User’s Guide
•
Anonymous Access (Directory Security properties sheet/press Edit
button/Authentication Methods dialog).
CLARION/ASP How-To’s
45
Directory Securities
You will probably not have to worry about the directory security, unless you’ve changed
the default settings for your machine. Your project directory will have an asp subdirectory.
The SYSTEM account, which IIS uses, needs access to the asp directory to read the
ASP pages.
46
CLARION/ASP User’s Guide
Application How-To’s
Application of Global Template
This section provides and overview and describes the essential/required steps involved in
applying the Clarion/ASP global template. A more complete description is available in the
Reference section of this document.
To apply the Global Template:
1.
Open an existing application, or create one with the application wizard.
2.
Press the Global button in the Application Tree dialog.
3.
Press the Extensions button in the Global Properties dialog.
4.
Press the Insert button in the Extension and Control Templates dialog.
5.
Select “ASP Global Template” in the Select Extension dialog.
The global extension prompts consist of eight tabs. These are all explained in the
reference section of this document. Though all the tabs have important options, there is
only one tab which must be filled in when first applying the extension template:
•
Database Tab/Build Connection String Button: this displays the Database
Properties dialog. Press the Call Connection Builder button to identify the
database, and the method of access to it. Without this information, the web
server cannot provide the ADO libraries with the information necessary to access
the data.
In addition, the Security tab may be considered by many to be essential. Please see the
Global Options/Security Tab section for further information on security.
CLARION/ASP How-To’s
47
Application of Browse Template
This section provides and overview and describes the essential steps involved in
applying the Clarion/ASP browse template. A more complete description is available in
the Reference section of this document.
To apply the ASP Browse template to a browse procedure:
1.
Open the Procedure Properties dialog for the browse you wish.
2.
Press the Extensions button in the Procedure Properties dialog.
3.
Press the Insert button in the Extension and Control Templates dialog.
4.
Select the ASP Browse template from the Select Extension dialog.
When applying the browse extension template, verify the unique key on the HTML Table
tab contains the correct key information. Please see the Browse Options section for
further information on the ASP Browse template.
48
CLARION/ASP User’s Guide
Application of Form Template
This section provides and overview and describes the essential steps involved in
applying the Clarion/ASP form template. A more complete description is available in the
Reference section of this document.
To apply the ASP Form template to a form procedure:
1.
Open the Procedure Properties dialog for the form you wish.
2.
Press the Extensions button in the Procedure Properties dialog.
3.
Press the Insert button in the Extension and Control Templates dialog.
4.
Select the ASP Form template from the Select Extension dialog.
You must verify that the Form Primary File and the Unique Key on the Data Access tab
are filled in properly before you may save the form properties.
CLARION/ASP How-To’s
49
Browse/Form/Browse or Query/Browse/Form
If you’ve used the default Clarion template set to create an existing application for which
you wish to generate ASP pages, your application is probably in browse/form/browse
format. By this we mean that the top level procedures browse a list of records, and the
end user locates a record they wish to edit. The end user pulls up a form, and if it’s
necessary to navigate further, either to select a value in a related table, or to browse a
related table, another browse appears.
In general, web based applications start with a query form, for privacy reasons and/or to
reduce the amount of data to be passed to the client (downloading a 1000 item product
list vs. typing in a product name).
SoftVelocity has designed Clarion/ASP so that it works equally well starting out with a
browse, query form, or for that matter, a form. In the latter case, you must either start with
a blank insert form, or pass a unique ID to the page if it’s an update. You set the unique
ID field in the Procedure Properties dialog, and identify it in the URL as “ID1.” Thus, for
an order form, whose unique identifier is the order number such as 12345, to directly
open a form containing the order, the linking URL should contain a parameter in the form
http://YourPageURL?ID1=12345. Clarion/ASP does not pass the name of the field,
because that could compromise security. Note that in case of a multiple component
primary key, the parameter format, for a two component key, for example, is in the format
?ID1=12345&ID2=67890
The Browse-Form-Browse paradigm has been further enhanced in the latest version of
the Clarion/ASP templates to include the "range limit" option on a Form procedure. This
feature permits you to identify a value (not necessarily the primary key) which will be
"persisted" at several levels and used for; returning to a list that is a subset, applying the
range to a search condition automatically, view form navigation of a subset, and priming
of newly inserted rows with the range value. To utilize this feature simply enable the
option "Enable Range limit option" on the Clarion/ASP->Form->Data Access->Table tab.
And then select the appropriate data column.
In general, you do not need to adjust your application at all. Browses and update forms
will be generated with the parameters (or lack of parameters) that you specify. It’s merely
a matter of linking to the ASP page with the correct URL.
The following are examples of the ways in which you can link to the ASP pages from
either the top level contents page, from a frame, from any other pages (not produced by
Clarion/ASP) at your site. You may combine as many of these access methods as you
like.
For the purposes of this example, the table is called “Products,” the procedure is called
BrowseProducts (the table name figures into the page naming convention, e.g, the ASP
file with the browse will be called /myapp/BrowseProductsList.asp) a column containing
50
CLARION/ASP User’s Guide
unique values (strings) is called “Product_Name”, and a column containing duplicate
values is called “Category.” Assume also that the category values are integers.
Finally, assume that all URLs are encoded /myapp/filename.asp.
•
Normal Browse (no filter other than that defined in the template procedure):
this is the default, so no actions are necessary within the template interface. The
link is simply /myapp/BrowseProductsList.asp. Note: Microsoft Internet
Information Server is case insensitive.)
•
Browse (with a range select on one field): in the ASP extension template for
this procedure, locate the Product Name column on the Table Data Columns tab.
Press the Properties button. On the Column Header tab, check the box labeled
“allow calling this procedure with the value passed as a parameter.” You may
then filter by value, simply providing a parameter called ID1, as in
/myapp/BrowseProductsList.asp?ID1=Potatoes. Note that Clarion/ASP
automatically distinguishes between numeric or string parameters in the URL
parameter.
Assume that you wish to see all the product names in category 1. The URL would be
/myapp/BrowseProductsList.asp?ID1=1.
Note that the general http format for passing multiple parameters within a URL is
?parameter1=value&parameter2=value&parameter3=value.
It’s important to note that you may only assign one field per browse table to filter the
browse by ID1 parameter. If you also wish to filter by a single, different field, copy the
procedure, rename the copy, and set the template option for the different field. If you wish
to filter by multiple fields you may filter via a multiple component unique key, if one exists,
or if not, a ?WHR parameter.
To use a ?WHR parameter, the usage is
http://mydomain/myapp/BrowseProductsList.asp?WHR=dbo.products.price > 10. Bear in
mind that this exposes your column names to the end user, who can see it in the address
box of the browser.
•
Query by Form: no parameter is necessary from the calling page. The URL
would be /myapp/UpdateProductsSearch.asp
•
Blank Update Form: no parameter is necessary from the calling page. The URL
would be /myapp/UpdateProductsAdd.asp.
•
Update Form for a Specific Record: simply use the unique ID1 value as a
parameter called “ID1.” Thus, to call an update form for the product named “Ford
Model T Black,” form the URL with /myapp/UpdateProductsEdit.asp?ID1=“Ford
Model T Black.”
CLARION/ASP How-To’s
51
Link a Browse and Form
Linking to a form from a browse is done automatically when you apply the browse
template (though you must also apply the form template to the form. But if you wish to do
it manually, it requires specifying which column should be the hyperlink.
Remember that unlike a desktop application, the HTML application cannot receive a
double click, or a right click and then a menu option. Therefore, there must be a single
click way to select a record and link to an update form. For each row, you will designate
one column as that link. You can select more than one, but that could be confusing to the
user.
You simply have to decide whether to use the text value for a specific field for that link
(for example, click on a last name to update a personnel record), or to accept the default
graphic link, so that the end user locates a row they desire to edit, they click on the pencil
either at the left or right of that row.
In the Browse Procedure
Providing for a text link requires the following steps.
1.
On the parent browse, be sure the ASP browse extension template has been
applied. Verify that the primary column and the unique key fields have been
selected.
2.
On the Data Columns tab, select the column you wish to make the link and press
the Properties button.
3.
On the Actions Tab in the Data Columns dialog choose Procedure Link in the
Create Column as a Link dropdown list.
4.
Choose the Update procedure in the Procedure to Link dropdown list.
5.
Choose Edit from the Type of Procedure dropdown list.
6.
Save changes and regenerate.
When the end user clicks on a value in the column you selected, an update form will
appear.
In the Form Procedure
To complete the action from the form side, you merely have to verify that the parent
browse was correctly identified, so that when the update action is complete it will return to
the browse.
52
CLARION/ASP User’s Guide
1.
On the update procedure, be sure the ASP form extension template has been
applied. Verify that the primary table and the unique key fields have been
selected.
2.
On the Actions tab, verify that the parent browse procedure from the Parent
Browse dropdown list is correct.
3.
On the Data Access tab, verify that the Primary Table and Unique Key are
correctly identified.
4.
Save changes and regenerate.
Graphic Link From a Browse to a Form
The following is the default generated by the template; if for some reason you wish to do
it manually, be sure to have a small transparent .GIF file available. A transparent
background provides for flexibility in case you elect to change the table background color.
1.
On the parent browse, be sure the ASP browse extension template has been
applied. Verify that the primary column and the unique ID fields have been
selected.
2.
On the browse procedure’s ASP extension template, open to the Custom
Controls tab. Insert a column, calling it, for example “Edit Record.”
3.
Choose the alignment and location for the picture column. This is a matter of
taste. The placement will be either to the left or the right of the data columns.
4.
Choose Procedure Link in the Create This Column as a Link group box.
5.
Choose Edit from the Type of Procedure dropdown list.
6.
Choose the Update procedure in the Procedure to Link dropdown list.
7.
Press the Image button to select an image to display.
8.
Most likely, to signal a link you’ll choose an external .GIF file. Choose Disk File
from the Populate From dropdown list. (Note that in most cases you will wish to
copy the image either to the project\asp\images directory, or to the /images
directory of your web server).
9.
Use the file selector to choose the image file.
10.
Save changes and regenerate.
CLARION/ASP How-To’s
53
Form Without a Browse
The steps to display the form vary according to whether you wish to link to a blank update
form, an update form for a specific record, or a deletion. To link to an update form, it’s
necessary only to supply a unique parameter for the record you want, unless you wish to
add a new record, in which case no parameter is necessary. There is no difference in
calling an update or a delete (the record will be presented to confirm deletion), other than
the name of the form to link to.
54
CLARION/ASP User’s Guide
Examples
•
Update Form for a Specific Record: simply choose the unique identifier and
use a value as a calling parameter named ID. To call an update form, the URL
should be /myapp/myprocedureEdit.asp?ID1=”a unique ID.” Don’t include the
period! The unique ID is the value corresponding to the column which was
identified in the extensions dialog as the unique column. Note: a read-only or
view form is also available which allows the end user to view the data without
allowing for editing. The calling URL is identical except that the page name ends
in “View” instead of “Edit,” as in /myapp/myprocedureView.asp?ID1=”a unique
ID.”
•
Delete Form for a Specific Record: exactly the same as update, except that the
page name will be different. Simply use the field name and value as a calling
parameter. To call an update form, the URL should be
/myapp/myprocedureDel.asp?ID1=”a unique ID.” Don’t include the period!
•
Blank Update Form: no parameter is necessary from the calling page. The URL
would be/myapp/myprocedureAdd.asp.
A Query Page
Clarion developers often use the Browse/Form/Browse paradigm as a convenient way to
allow the end user to type a few keys to locate the record they wish to edit. Providing a
query page for this functionality is often a more useful strategy for Internet applications, in
that it’s not necessary to download a page or table full of records in order to locate a
specific record for editing. By displaying the form, the end user can type in an ID number
or a few letters, view a list of records that match the query, and then choose one for
editing.
The Query by Form will use the same form layout as the update form, except for any
fields you elect not to populate (by checking the Do Not Populate on QBF box on the
form extension). The end user can type in a value or values, and any matching records
will be returned in a browse, through which they can proceed to a view or update form.
Note that in general, the less fields on the query form, the easier it is for the end user to
use the query form. Additionally, this also prevents users from querying unindexed
columns, which otherwise might slow the DBMS.
Note: an unchecked check box instructs the query to test the field for a FALSE value.
Leaving a check box unchecked is not equivalent no choice.
CLARION/ASP How-To’s
55
To link to the query from an outside page, link to /myapp/myprocedureSearch.asp. No
parameter is necessary.
Browse to Browse
A Browse to Browse navigational link helps you provide a simulation of the parent/child
browse functionality which Clarion so easily supports in desktop applications.
Instead of providing two lists (or selects) in a single window, the child records of which
update to reflect the values dependent on the key record selected in the parent table, in
this case the end user only sees the child browse when they click or link in from a
selected row in the parent table. By segregating the browses into two separate windows,
Clarion/ASP reduces the amount of communications necessary between the server and
the browser.
The end user therefore clicks on a record in the parent table for which they wish to see
the child detail. A new table appears with the child records. A navigational back button in
the child table returns to the original parent browse.
On the parent browse, be sure the ASP browse extension template has been applied.
Verify that the primary column and the unique ID fields have been selected. On the child
browse, be sure that the Data Columns options for the linking field includes the “Range
Limit on this column” option, which is a check box option.
Much like navigating from a browse to an update form, you must decide whether to link
from a graphic, static text, or from a text value within a row of data. A browse to browse
from customers to orders, for example, might simply say “Show Orders,” whether the link
be text, or a button you’ve created as a .GIF displaying that particular text.
56
CLARION/ASP User’s Guide
Using a Graphic to Signal the Link
For a picture link, be sure to have a small .GIF file available. A transparent background
provides for flexibility in case you elect to change the table background color. Then:
1.
On the parent browse procedure’s ASP extension template, select the Custom
Columns tab. Insert a column, calling it, for example “Orders.”
2.
Choose the alignment and placement for the picture column. This is a matter of
taste. The placement will be either to the left or the right of the data.
3.
Choose Procedure Link in the Create This Column as a Link group box.
4.
Choose List from the Type of Procedure dropdown list.
5.
Choose the Browse procedure for the Orders table in the Procedure to Link
dropdown list and set the procedure to type “list.”
6.
Type in the name of the graphic in the Display Image box. Be sure to place the
image in the images directory.
You still need to select an option on the child browse procedure. See “The Child Side,”
below.
Linking from a Column Value
You may also provide a link to a second browse from the values displayed in one of
columns of the table rows.
To make this type of link:
1.
On the parent browse procedure’s ASP extension template, open to the Data
Columns tab. Select the column from which you wish to link and press
Properties.
2.
On the Actions tab, select Procedure Link in the Create this Column as Link
group box. Set the Type of Procedure to List, by choosing from the dropdown list.
3.
Select the name of the child browse procedure to link to from the Procedure to
Link dropdown list and set the procedure to type “list.”
You still need to select an option on the child browse procedure. See “The Child Side,”
below. Note also that you can provide a link on one column, yet pass data from another
column, even from another table to the target procedure page. For example, you may
wish to pass an employee ID number, yet the end user sees and clicks on only the
employee’s name (which indeed may come from another table in a normalized
database).
CLARION/ASP How-To’s
57
You could also specify that the link provide the value clicked on as a parameter to the
target browse, so that it may then range select on the value. For example, in a browse
upon a product table, a column called Category could link to a browse on the Categories
table, range selected to display all the other products in that particular category.
The Child Side
Finally, you must provide for the target (or child) browse to be ready to receive a filter.
Open the ASP extension template on the child browse procedure, and:
1.
Select the Data Columns tab.
2.
Select the data column for the filter field, and press properties.
3.
Choose the General tab in the Data Columns dialog.
4.
Check the “Range Limit on This Column.”
When all done, you must regenerate the ASP code.
Select Browses
Wherever you populate a field in a form for which you’ve placed the “Must be in Table”
option on the child table in the Clarion dictionary a button leading to a select browse will
be populated. A popup list appears when the end user presses the button, and when the
end user chooses a value, the popup will disappear and the value will be returned to the
entry box.
58
CLARION/ASP User’s Guide
Note that you may provide for a custom graphic for the lookup button should you wish.
To enable the Select Browse procedure, you must manually choose the proper select
browse for all the “Must be in Table” columns which appear in the update form; the
procedures dropdown list will default to the first browse in the application tree. If you
forget to make a choice, it is likely that the lookup button will display an entirely different
browse in the popup, one which moreover contains no “clickable” fields from which to
choose a value.
You must also apply the browse extension template to the Select Browse procedure in
order for Clarion/ASP to generate an ASP page for the select browse. When applying,
you will then specify which value(s) to return to the calling form, and which display field
the end user will click on to indicate a choice.
Table Loaded Selects on Forms
When an RI rule specifies that a value in a given field must reside in a related table,
Clarion/ASP can automatically generate a dropdown list of those values for your update
forms. In the illustration below, from the Northwind sample database, an update form for
the products table fills dropdown lists from the suppliers and categories tables; the
dropdown is open on the categories list:
CLARION/ASP How-To’s
59
Experienced Clarion developers will immediately recognize this functionality from the File
Drop Control Template. You may also specify one column for display, and another to
provide the value to be written to the database. This is useful to display, for example,
“XYZ Corporation” in the list that the end user sees, while writing “12345,” the company
ID number for “XYZ” to the normalized database.
The developer need only specify in the dictionary the “Must be in Table” option on the
child table, and then must populate either a FileDrop or FileDropCombo control template
in the window.
In some cases it may be necessary to check the SQL statement generated for the select
control, which is what a listbox is called in the HTML specification.
How to Prime a Field on an Update Form
Should you wish to prime a field for an add form, use the "additional parameter" box in
the Controls dialog. Note that this is very slightly tricky should you wish to use a function
to pass a value.
The add form expects URL parameters in the form of ?controlname=value. The controls
are all named in the format txtTableNameFieldName. The txt simply stands for text, as in
a text control.
Assume that you wish to call an add form for the Categories table, and prime the
CategoryID field with the value "13." Simply enter txtCategoriesCategoryID=13 in the
additional parameter box when declaring the procedure link.
You can also specify a dynamic value. This is the only way to prime a field for an add
form. You must concatenate a string with the control name plus a VBScript function to get
the value from the record set, and then a trailing unbalanced double quote, to make up
for the first string that you "closed" with a double quote earlier.
60
CLARION/ASP User’s Guide
Assume that you're in an order record, and you wish to pre-fill a new order details record
with the OrderID. Set the appropriate target procedure (probably UpdateOrder_Details),
set it to pass static text, leave the static text box blank, and enter the following in the
additional parameters box:
&txtOrder_DetailsOrderID=" & MID(TRIM(oRSOrders("OrderID")),1,50) & "
In the above example, txtOrder_DetailsOrderID is the control name. The MID/TRIM
functions screen any NULL values, and the oRSOrders is the name of the record set
(oRS, plus the table name). Then the trailing double quote is appended.
CLARION/ASP How-To’s
61
Help and Popup Windows
Help authoring may be done via generated help file shells which include a “place your
text here” area in which you may include your help text. You may use Notepad or an
HTML editor. Be sure to turn off HTML help generation in the Clarion/ASP template after
customizing! You may also use an HTML authoring tool, or Microsoft Word. In general,
however, creating help files is not within the scope of this manual.
Within each of the procedures which you’ve Clarion/ASP enabled, on the Page tab, you’ll
find a Help URL box. Normally, the simplest way to provide help is to create a separate
HTML document containing the help text for each procedure. Simply place the name of
the help file in the Help URL box. Should you place the help file in a separate directory,
use the relative path with slash delimiters. If your help is in a subdirectory below your asp
directory called help, the help URL’s should be in the format “help/helpfilename.htm.”
Note that for a small ASP application, you may wish to store all the help in one HTML file.
You may then use anchors (e.g., http://www.mydomain.tld/myhelppage.htm#myanchor)
to load the help page and jump to the section containing the appropriate help topic. Your
HTML editor should allow you to insert anchor tags.
Dynamic Runtime Templates
Clarion/ASP, by virtue of its use of runtime HTML templates, offers you the ability to
present a radically different layout at runtime depending on the value of a runtime
variable, just by changing the underlying runtime template. You can use this ability to
change the color scheme, the positioning of the data, whether to show all the data or
some of the data, whether to make some data “editable” and other read only... and so on.
You can base which template to use on any variable/value you wish. You may, for
example, base the choice on a security access level variable (as in displaying all fields of
a table for a supervisor, and only some fields to an ordinary user, or to display edit boxes
for a supervisor and read only text to an end user). In these cases, you simply make a
copy of the default template, and delete edit fields, and optionally place @symbols@ for
the data you prefer to display as text.
Or you may get a user preference stored in a cookie, for example. To change only the
colors you may simply make a copy of a template, change the one line referencing the
style sheet to reference a different style sheet, and then “call” the second template
instead of the first.
The alternate runtime HTML template files should be stored in the asp\html directory,
alongside the generated runtime HTML templates. It’s your responsibility to create the
alternate HTML files for the alternate runtime templates. The application generator will
have no knowledge of these alternates; if you start with a generated runtime template,
change the fields and regenerate, you’ll need to edit any previously made copies of that
should you wish to propagate the changes.
62
CLARION/ASP User’s Guide
You’ll “indicate” which template to call either by passing an alternate file name for the
template as a URL parameter, or by placing vbscript embed code in a procedure which
tests for a condition and assigns the desired template file name to a specific variable.
The URL parameter is called ?HTMLT. The template variable is called HTML_Template,
and is actually a variable declared in appdata.asp whose scope is limited to each
separate .asp page.
The following provides for examples of this functionality.
Example 1: Different Color Scheme Based On a Cookie
Assume two style sheets: styles1.css and styles2.css. Styles1 provides for standard
colors and Styles2 provides for pastel colors and a different font. Styles1 is set as the
style sheet in the global template option. This then, would be the default.
Assume that the site cookie has already been created by some other page, and that a
value exists called MyColorChoice. Assume that value is always 1 for Styles1 or 2 for
Styles2. You’ll want to read that value as soon as the end user accesses the application,
and store it in a session variable. Step one is to set a user defined variable in the global
extension. That will take care of declaring the session variable. For the purpose of this
example, we’ll name the variable ud_MyColorChoice.
Next you’ll need to get the value from the cookie. The logical point at which to get this is
in login.asp, because that is called by every single page; this way the application sets the
color choice before the end user sees any pages. the place within the login code to place
this is easy to locate. Search for the text “we have a record and all is good” comment.
The next several lines store the various session variables used to keep track of the user.
You must insert whatever code you wish to insert BEFORE the line containing: else
‘password is incorrect.
The ASP statement for retrieving the cookie is Request.Cookies. Inserting the following
line of code will get the value and store it in the session variable:
Session("ud_MyColorChoice") = Request.Cookies(“MyColorChoice”)
Now, once the end user is logged on, you’ll always have the color choice value stored in
the session variable.
Now the logic to set the alternate template must be inserted into every procedure.
Remember that each procedure has its own runtime HTML template file, and that they all
have different names.
For this example, we’ll use a procedure called UpdateCustomers. The default template
for the edit form would be called UpdateCustomersEdit.htm. We’ll say that a value of 1 in
the cookie/session variable means that the end user wants to use this template. The
value of 2 should call a separate template, which had previously been copied from the
first, and then modified. We’ll call the second template UpdateCustomersEdit2.htm.
CLARION/ASP How-To’s
63
To modify the edit procedure to call that template, you’ll need to place the following lines
in the Clarion/ASP > Edit Mode > Builder Page > Before Merge Call embed point in the
UpdateCustomers procedure:
IF Session(“ud_MyColorChoice”) = “2” Then
HTML_Template = “html/UpdateCustomersEdit2.htm”
End If
The “trick” here is that the very next line, generated by the template, is:
CALL MergeTemplate(HTML_Template)
Therefore, the page will appear with the second template if the cookie stored a value of 2,
and with the first (default) template, if 1.
Example 2: Different Template Based On Access Level
Note: this example is more easily followed if you’ve already read example 1.
The login code already reads the access level from the security table upon login. It
automatically stores this in a session variable called “UserLevel.”
For this example, we’ll assume that the same form we used as an illustration above
(UpdateCustomersEdit) has three different three different HTML runtime templates; one
for end users, one for “workers” and one for supervisors. Workers will have an access
level set between 50 and 75, and the runtime template will be named
“UpdateCustomersEdit_worker.htm.” Supervisors will have an acess level set at 76 or
higher, and the runtime template will be named “UpdateCustomersEdit_supervisor.htm.”
Assume that end users simply use the default template, and always have an access level
set below 50.
You may “imagine” that the end user template provides two enabled edit controls and
eight disabled fields, the worker template eight enabled edit controls and two text fields,
and the supervisor template, ten enabled fields. In this case the easiest way to set up the
templates would be to rename the default template to the supervisor template, make a
copy, change two fields and save it to the worker template, then change the other six
fields, and save it to the original default template file name. The actual HTML change
involved would be to add the DISABLED attribute (no quotes) at the end of the <input>
tag (just before the closing bracket). Note that DISABLED is not universally supported by
all browsers, but is supported by current versions of Internet Explorer and Mozilla.
The only “trick” in this example is converting the string value stored in the session
variable for the access level to an integer, so you can use mathematical operators to test
the value. For that, you simply use the CINT (convert to integer) function. There would
only be one embed to deal with, since the “UserLevel” session variable was already set in
login.asp.
64
CLARION/ASP User’s Guide
To modify the edit procedure to call that template, you’ll need to place the following lines
in the Clarion/ASP > Edit Mode > Builder Page > Before Merge Call embed point in the
UpdateCustomers procedure:
IF CINT(Session(“UserLevel”)) > 49 And CINT(Session(“UserLevel”)) < 76
Then
HTML_Template = “html/UpdateCustomersEdit_worker.htm”
ELSEIF IF CINT(Session(“UserLevel”)) > 75 Then
HTML_Template = “html/UpdateCustomersEdit_supervisor.htm”
End If
CLARION/ASP How-To’s
65
Testing How-To’s
Testing on Your Local Machine
If you have not already done so, you should install and test that Internet Information
Server is running correctly on your local machine. You’ll find instructions that will help you
with this task in the section of this manual called “IIS Setup.”
Following IIS setup, the next step is to create a virtual directory for the project/asp
directory. When you generated a Clarion/ASP application, it automatically creates an asp
subdirectory beneath your Clarion project directory. By creating a virtual directory, you
save yourself the trouble of creating a directory under the local web root and copying
your files there.
Internet Services Options
To allow the web server to “serve” your application, you’ll take the following actions:
You must set three items pertaining to permissions using either the Internet Services
Manager or the Microsoft Management Console, depending on which version of Windows
you’re running.
1.
Open up whichever of the above tools is applicable to your operating system.
(Windows NT: Start > Programs > Administrative Tools > Internet Services
Manager; Windows 2000/XP: Start > Settings > Control Panel > Administrative
Tools > Internet Information Services).
2.
In the left hand pane, locate an icon called “default web site” and expand it (the
node order should be something like: Internet Information Services > your
computer name > Web Sites > Default Web Site).
Your application directory is probably not already listed, assuming that you haven’t
changed the default root directory. If you’re already an IIS expert, and it doesn’t affect
any other web development work, feel free to change your web root to whatever directory
you normally place your Clarion projects under. In the majority of cases, however, that
won’t be the case, so follow these additional steps:
2a.
Right-click the default web site and choose New > Virtual Directory.
2b.
The wizard requires only two prompts: a name for the virtual directory (which will
be off the site root), and the physical location of the directory (which you may
choose from a directory chooser dialog).
66
CLARION/ASP User’s Guide
2c.
Navigate to your project directory. Assuming that you’ve already generated your
project once with the ASP templates enabled, you’ll find an asp directory
immediately under your project directory. Select the ASP directory. (If you have
not yet generated, you can create a new directory called ASP under the project
directory, and then choose it).
Resuming the tasks to set the permissions:
3.
Locate your application directory underneath the web site root, right click it and
choose Properties.
4.
Set the Execute Permissions to Scripts Only.
CLARION/ASP How-To’s
67
5.
Flip to the Directory Security tab and press the “Anonymous Access and
Authentication Control” button.
6.
Turn Anonymous Access on if not already on (top checkbox), and Windows
Authentication off if not already off.
6a.
If you’re running on Windows XP with recent security patches, you must now
take one additional step. Click on the Default Web Site directory in the left hand
pane. Locate a file called localstart.asp in the right hand pane and right click on
it. Choose properties. Select the Directory Security tab and press the
“Anonymous Access and Authentication Control” button. Turn Anonymous
Access back off for this one file.
68
CLARION/ASP User’s Guide
7.
Close the two open dialog boxes, click on the web site root icon, and press the
stop, and then the start buttons on the tool bar, thus stopping and restarting the
web server to apply your changes.
Internet Information Server should now be configured correctly. Open your browser and
type http://localhost in the address box. You should see a default web page.
Important: Windows XP users should see the window illustrated below. If not, check the
security permissions described in the IIS Setup section.
CLARION/ASP How-To’s
69
The /Images Virtual Directory
Many sites store images to be used throughout the site in a single directory off the root,
usually called /images. This saves disk space because the image files need not be
repeated throughout. The Clarion/ASP button images are a good candidate for storing in
a central location because they are repeated from application to application.
The install program copies the images to a default directory called
\CLARION6\images\asp (assuming your root is Clarion6, your name may vary). This
section instructs you to create a virtual directory called images, pointing to that directory.
If you already have a /images virtual directory on your “localhost” site, you may simply
copy the images to it and skip over the following instructions:
1.
Open up whichever of the IIS administrative tools is applicable to your operating
system. (Windows NT: Start > Programs > Administrative Tools > Internet
Services Manager; Windows 2000/XP: Start > Settings > Control Panel >
Administrative Tools > Internet Information Services).
2.
In the left hand pane, locate an icon called “default web site” and expand it (the
node order should be something like: Internet Information Services > your
computer name > Web Sites > Default Web Site).
3.
Right-click the default web site and choose New > Virtual Directory.
70
CLARION/ASP User’s Guide
4.
Press the Next button, and when prompted, name for the virtual directory
“images.”
5.
Press the Next button, and when prompted, navigate to your the
\CLARION6\images\asp directory by pressing the Browse button. (or to whatever
the relative path should be if you installed Clarion to a directory other than
\CLARION6.
When ready to deploy, don’t forget to copy the images from the \CLARION6\images\asp
directory to your server’s virtual /images directory.
Note: the Clarion/ASP install provides for a default set of blue buttons (enabled), all 20
pixels by 20 pixels. Disabled state is grayscale images (of the same buttons). Below the
images directory, you'll find alternate button sets in green and brown. Since the blue
buttons are repeated in a subdirectory, should you wish to experiment, you can simply
copy over one set of buttons with another.
GLOBAL.ASA
You may be required to create a new Global.ASA file in the web root directory, or cut and
paste lines from the one that Clarion/ASP generate for you in your application\asp
directory into your existing one.
This will depend on whether your application’s application\asp directory is a virtual
directory, or if it is physically located below the web root directory. If it is a virtual
directory, skip this section entirely. If it physically resides below the web root, then you
must follow these instructions.
The GLOBAL.ASA file stores application settings (data variables) for ASP. Items in the
file are read one time only: whenever someone starts the very first instance of an ASP
application. (Note: if you shut down and restart the web server, it has to be read again).
The GLOBAL.ASA file can hold function code, code to execute at specific events and
data declarations. Clarion/ASP uses GLOBAL.ASA only to store data declarations.
The GLOBAL.ASA is stored in the root web directory if the IIS Server is hosting only one
site. This will almost certainly be the case for your development machine. IIS, however,
can support multiple “webs” on the same machine (using multiple IP addresses/NIC
cards), in which case the GLOBAL.ASA should be located in the application root
directory.
CLARION/ASP How-To’s
71
In either case, you must paste six lines (not counting the comment) into your web’s
GLOBAL.ASA file to support your application. Clarion/ASP creates the file and stores the
following GLOBAL.ASA data in your project\asp directory:
''--Project Data Connection
Application("YourAppName") = "DSN=YourDSNName; USER
ID1=YourUserName; PASSWORD=YourPassword; SERVER=YourServer;
DATABASE=YourDatabase; ADDRESS="
Application("YourAppName_ConnectionTimeOut") = 15
Application("YourAppName_CommandTimeOut") = 30
Application("YourAppName_CursorLocation") = 3
The name of each variable is the string in the Application() method. As you can see,
Clarion/ASP stores the ConnectionString, connection timeout, command timeout, cursor
location, runtime user ID and password. Each is prefixed by the name of your application,
to minimize the chance of name clashes with other ASP applications. The first line,
starting with the two single quotes, is a comment.
Note that recent versions of Internet Services manager allow you to right click on the
Global.ASA file, then specify that you wish to open it in Notepad. Otherwise, locate your
root web folder (if you’re not sure of the location, right click the default web root in the
Internet Services Manager, choose properties, and find the true name of the root
directory). Open the GLOBAL.ASA file in notepad, and paste the lines from the file in
your project/asp directory into it, then save the file.
Be sure that the GLOBAL.ASA information is also correctly transferred to the server
when transferring your .ASP and other resource files. If when testing an application for
the first time (if you haven’t tested the test page), your browser simply times out without
providing a login, the first item to check is that the GLOBAL.ASA exists and is in the
correct place.
Note that should the application time out the very first time that you test it, the first thing
to consider is whether you forgot to paste the application’s data into the proper
GLOBAL.ASA file. This is quite common. Unfortunately, there’s no way in which
Clarion/ASP can provide a routine to display an error message: in this situation, the
Clarion/ASP application never starts.
72
CLARION/ASP User’s Guide
Loading the Test/Debug Page
To test begin testing Clarion/ASP, open the URL
http://localhost/yourvirtualdirectorypath/index.htm. Index.htm is the default “start page”
that Clarion/ASP creates for your ASP procedure pages. The default start page is a very
simple list of page names and links, which you’ll no doubt replace when you’re ready for
deployment. (Note: this assumes you’ve already generated the ASP pages after applying
the ASP template to your project. If not, you’ll receive a “page not found” message).
If it did not open a page, then the web server is not working, or you have additional file
security implemented. (Note: there may be some developers who have disallowed the
“everyone” group from the directories in which they work. If it is a file security problem on
the workstation, open the Security tab for the directory in Explorer. You must have read
and write permissions either for the “everyone” group, or the Internet user account, called
IUSR_yourmachinename).
Before clicking any of the procedure links on this page, please run the test/debug page.
This will be the very first link at the top of the index page. This page opens the ADO
connection used by your application, iterates through the tables, displays the ADO
provider and its cursor support, and tests that ASP can correctly access the file system
so that it can output pages via the runtime HTML templates. Any time you create a new
application and testing on a local machine, you should test this page first.
When you deploy to the server, you should not copy this page there. Never leave this
page on a public server; it displays the DBMS server name, address, user ID and
password. If you absolutely must copy it, delete it immediately when you’ve finisted
testing.
When testing locally for the first time, load the page, choose Edit > Find from your
browser menu, and verify that each step detailed in the document succeeded. If any step
failed, the document tells you the most probably causes. In general
•
Any problems documented in the first section indicate a problem with Global.asa.
•
Any problems documented in the last section indicate a security settings issue.
•
Any problems documented in the middle indicate a database connection
problem.
CLARION/ASP How-To’s
73
Application Timeouts
This section is optional, and is placed here because it is managed through the Internet
Services Manager.
While developing, it’s useful to set application timeouts to a low value. In case of ADO
errors, the web server waits for a communication from the OLE DB provider for as long
as the timeout period. A useful value for script error timeouts is fifteen seconds when
testing with a localhost server.
Additionally, should you be testing procedure with security enabled, it’s also useful to set
the session timeout to a low value. With a large value, for example, twenty minutes, a
developer may frequently test, change, and test again within that period. When the
developer tests the application the second time, the login routine will find the user ID from
the previous session still exists, and not request a login.
To set the script and session timeouts, right click the Default Web Site icon in the Internet
Services Manager and choose Properties. Locate the “Configuration” button on the
“Home Directory” tab, press it, and configure the timeouts on the “Options” tab of the
“Application Configuration” dialog.
As a final note regarding testing on your local machine, we must note that IIS provides
limited ability to override its cache settings. The “Options” tab noted above provides a
checkbox for buffering. In general, should you suspect that the changes you make to the
application are not properly being served to the browser client, you may opt to restart IIS;
74
CLARION/ASP User’s Guide
though often, closing Internet Explorer and reopening solves caching problems. Another
alternative, which works every time, but requires you to manually edit the address line of
the URL is to temporarily rename the file you’re testing!
ftp Setup
This section is optional, and is placed here because it is managed through the Internet
Services Manager.
You will most likely wish to have an ftp server on the web server to upload your files.
Setting up the production web server is beyond the scope of this document.
We do suggest, in light of the capabilities of site managers such as DreamWeaver to
manage files via ftp that you create a virtual ftp directory for your application directory,
and allow your account (as developer) access to it. It’s quite easy to use a tool like
DreamWeaver to do any additional editing of the .ASP files, adding your local
development directory as a virtual directory to the local site image, allowing you to create
files and upload them to the server smoothly.
CLARION/ASP How-To’s
75
Integration/Deployment How-To’s
HTML Template
Though it may seem that everything is being called a template, Clarion templates and
HTML templates are different things. This focuses only on the HTML templates. There
are two types. One is a design time template, which is used only at the code generation
step. The other is a run time template, which is used every time an end user requests a
page.
•
Design Time HTML Templates: all the ASP code that Clarion/ASP generates
for data access is a combination of HTML and ASP pages and headers, all
processed by the ASP DLL, and placed in-between the top of a page and the
bottom of a page These “tops,” “bottoms,” and “sides” are your HTML design
time template. You or your web designer will without a doubt wish to create your
own HTML design time template. Because the Clarion/ASP data elements are of
a reasonable size, they should fit well into a site with or without frames.
Clarion/ASP merges the data access elements into the pages it creates at the
time you generate the pages. Therefore, you should plan on copying your HTML
template to your development machine.
This HTML file must reside in a directory called HTML, directly below your application
project directory. You must create the directory and copy the file there. (Note: this is not
to be confused with the project directory\ASP\HTML directory, which is an output
directory).
Use any standard HTML editor to create your template page. At some point within the
page, be it top, middle or bottom, at the place you wish Clarion/ASP to insert the code it
generates (i.e., the place where you want your browses, forms, etc., to appear), place the
text @Clarion/ASP@. (Don’t type the period at the end of the sentence).
76
CLARION/ASP User’s Guide
You must type in the name of your template in the Global Options dialog for the ASP
extension, in the field called HTML Template.
You may use the tops and bottoms to provide a place for company logos, site navigation,
privacy or other important statements, ad banners, or anything else, including links to
various Clarion/ASP generated procedures.
Many sites use HTML includes to create standardized page sections. You may include
these in the HTML template, so that the Clarion/ASP pages will be as easily maintained
as the rest of the site, and will be standardized in look and feel.
•
Run Time HTML Templates: after you’ve chosen your template, when you first
generate your application it produces additional HTML files for your other
procedures. These are also editable. In essence, these runtime templates are the
setting for the individual data fields and prompts. Each data field, prompt, or
element such as the navigation buttons has a symbol which appears in the
runtime template.
When the end user requests a page, the asp code resolves the request for the data, gets
the data, opens the runtime HTML template, replaces each symbol with the appropriate
prompt or data, and that page is then delivered to the end user.
In the browse procedures, for example, you will find tokens in the format
@TablenameFieldname@ occupying the table. Each token stands for the data which will
replace the token. Should you wish to modify the layout, you may modify the html page.
You may not add or remove tokens.
CLARION/ASP How-To’s
77
This therefore means that you may further customize the layouts at this level as well.
Bear in mind that these HTM files are regenerated. Turn off HTML generation at the
procedure level should you wish to make changes and keep them, or set the file to read
only.
78
CLARION/ASP User’s Guide
Style Sheets
HTML style sheets, known as cascading style sheets (because one style may cascade its
characteristics into another, and so forth), play a large role in many sites, and a large role
in the Clarion/ASP pages.
The style sheets declare classes, which consist solely of formatting instructions. You can
then apply the style to a tag (be it a paragraph, cell in a table, a table, etc.), and that
element will then be formatted according to the instructions in the style sheet. This allows
any site to greatly change its look simply by substituting a new style sheet for an old one.
Clarion/ASP allows you to define styles for elements such as table column headers,
update form control labels (prompts), data rows, etc. When you create the style sheet,
you may wish to set their options so that they mimic the color, font, and formatting
choices of your site. Should your site subsequently modify its style sheet, simply update
your Clarion/ASP style sheet to match.
CLARION/ASP How-To’s
79
You’ll find more information on Clarion/ASP’s use of style sheets in the chapter devoted
to the style sheet editor. Note also that web designers may edit the style sheets using
appropriate utilities or a text editor.
Collected Data from Forms on Your Site
It may be that other parts of your site already have forms which gather important data
such as names, customer ID’s, product ID’s etc. If, for example, you already have a first
name, last name and email address, and you wish to allow the end user to create a new
customer record without having to re-type that information, you’ll want to display a blank
update form with those three fields pre-filled in.
To do so, your web administrator will need to post the data as URL parameters to the
form fields on your Clarion/ASP update form. In order to do that, the web administrator
will need to know how the form fields on the Clarion/ASP update form are named (their
ID’s).
If in doubt, it’s a simple matter to look at the html code. The formula for each form field
name is txt + Table Name + Field Name. If the table is called Customers, then the form
control names for the fields FirstName, LastName and CustomerNumber would be
txtCustomersFirstName, txtCustomersLastName, and txtCustomersCustomerNumber,
respectively, for a form using edit boxes. Then the other form simply provides a url such
as http://domain/updateform.htm?txtMyTableUserName=abcd &txtMyTableUserID=1234.
This manual assumes that if your existing web already uses HTML forms the web
administrator is familiar with working with forms, naming the fields and forming the link
properly.
Passing Data to Other Parts of Your Web
In cooperation with your web administrator, you may optionally edit the generated
Clarion/ASP files. Each .asp file includes a form declaration. The form tag includes a
“target” which is the next page the end user “goes to” after pressing the Submit button.
This page also receives the POST data, i.e., what the end user filled out in the form on
the previous page.
it’s a simple matter to change the form tag so that the action “targets” an existing or new
page in your site. Thus, a line taken from one of the pages generated by Clarion/ASP
below:
FormDeclaration = "<form name='form1' id='form1' method='POST'
action='BrowseviewContactsList.Asp'>"
In this case the “action” points to the next page that should appear after submitting the
form. Simply change the file name in the action tab to a different page in order to post the
form data to that page and display it to the end user.
80
CLARION/ASP User’s Guide
In the above example, changing the action page is as simple as:
FormDeclaration = "<form name='form1' id='form1' method='POST'
action='/mysite/otherpage.asp'>"
(Note that the ASP page will be regenerated the next time you generate the project!
When you must edit the .ASP page, set the file property to Read Only using Explorer).
The “otherpage.asp” may then process the posted data, though the developer must
inform the web administrator of the names of the form fields. The formula for each form
field name is the “txt” + TableName + Field Name. If the table name is called Customers,
then the field names for the fields FirstName, LastName and CustomerNumber would be
txtCustomersFirstName, txtCustomersLastName, and txtCustomersCustomerNumber,
respectively. By referring to the Clarion/ASP produced HTML equivalent of the ASP page
(in the html directory below the ASP page), the web developer may easily view all the
form field names.
CLARION/ASP Integrating with Your Site
Ch. 6:
81
Integrating with Your Site
It’s anticipated that most developers will use Clarion/ASP to produce a small number of
data access enabled web pages to fit into existing sites. For these developers, the
following steps will be necessary:
•
Manage the look and feel so that the Clarion/ASP pages fit perfectly into the site,
and may be easily maintained so that overall site updates will not leave them
behind.
•
Correctly integrate links to and from various site pages and other applications
(insofar as these are consistent with the rest of the site).
•
Test that at an operating system level, the files (ftp uploads, access to the
database, directory names, securities and permissions) are correct.
•
Verify that the server resources are adequate for the application.
•
Verify that security is adequate.
Links
Links are the conduits through which one page leads to another on the Internet. There is
no program flow like a desktop application.
An important concept for database developers to grasp about ASP is that, like web
pages, the browser and web server do not maintain a continuous connection (it’s
stateless). Further, the web server and the database do not maintain a continuous
connection per each user.
For this reason, the links on the index.htm page generated by Clarion/ASP can be used
from anywhere within the site, or from anywhere within the Clarion/ASP pages. The only
limitation is a logical one: if you wish to display a form containing only one record, or
display a filtered browse, you must supply a way to identify the record(s) within the link.
You can do this as a simple HTML parameter. The parameter will always be called “ID1”
(plus “ID2” if a multi component key). The field it refers to will be the unique ID field which
you defined for the procedure extension.
Note that though the index.htm page generated by Clarion/ASP is not meant to be a table
of contents for end users (it’s intentionally kept very plain), it does provide a handy
reference to the page names you may wish to link to from other parts of the web. Its
primary purpose is to provide the developer with a quick and dirty means of testing the
Clarion/ASP generated pages.
82
CLARION/ASP User’s Guide
Persistence of Data
It’s important to understand that each time a Clarion/ASP page makes a request to the
database for data, ASP creates a new connection object, gets the data, and closes the
connection object. Note: it does not necessarily open a new ODBC connection to the
database per each user, depending on the ODBC driver. Using a single logon to the
database is known as connection pooling.
The only persistent data lingering from page to page are the application data and session
variables, which solely reside on the web server. This is limited to a unique ID maintained
by IIS for each user’s session, plus the session variables that Clarion/ASP declares.
When, for example, a user opens a browse, ASP creates a connection object, queries the
database, receives a result set, sends some number of rows to the end user, and closes
the connection object. Additionally, IIS may hold the result set until the next request or a
time out.
Therefore, if you’re a developer thinking about program flow, and worried that you’re
leaving an open application behind if you jump from a browse to a completely different
browse: there’s no need to worry. In fact, even if the user jumps from a browse to a
completely different part of the site and never goes back to the application, all that
happens is that the session will eventually time out. Leaving an application open does not
waste a large amount of resources: at worst, it requires a few session variables and
perhaps a cached result set on the web server. Note also that you have control of the
timeout value.
Here are the main points to understand so that you can link into any part of the
Clarion/ASP pages from inside or outside the pages:
Page Naming Conventions
•
Browse: clarionbrowseprocedurenameList.asp
•
Update Form: clarionupdateprocedurenameEdit.asp
•
Blank Update Form: clarionupdateprocedurenameAdd.asp
•
Read Only Update (View) form: clarionupdateprocedurenameView.asp
•
Delete Confirmation Form: clarionupdateprocedurenameDel.asp
•
Query Form: clarionupdateprocedurenameSearch.asp
•
Processor Pages: (contain the asp code for database access) same names as
above, ending in X.asp.
CLARION/ASP Integrating with Your Site
•
83
HTM Pages: (contain the elements in which the asp pages place their data; you
may change some layout characteristics by editing these pages, but not all)
same names as above, ending in .htm.
Linking Conventions
Reminder: to pass a parameter via URL append ?ID1=value to the URL, where the value
is the value of the unique ID column.
In the examples below, we’re assuming links relative to the root of your site. Note that
“link text” is the text that the end user sees and clicks on to arrive at the page.
•
Browse, no filter: URL only, such as:
<A href="/path/clarionbrowseprocedurenameList.asp">link text</A>
•
Browse, filtered: URL plus unique field value as parameter, such as:
<A href="/path/clarionbrowseprocedurenameList.asp?ID1=1093">link text</A>
•
Query form: URL only, such as:
<A href="/path/clarionupdateprocedurenameSearch.asp">link text</A>
•
Update form, new blank record: URL only, such as:
<A href="/path/clarionupdateprocedurenameAdd.asp">link text</A>
•
Update form, update a specific record: URL plus unique field value as parameter,
such as:
<A href="/path/clarionupdateprocedurenameAdd.asp?ID1=1093">link text</A>
•
Update form, delete a specific record: URL plus unique field value as parameter,
such as:
<A href="/path/clarionupdateprocedurenameDel.asp?ID1=1093">link text</A>
•
Update form, view a specific record: URL plus unique field value as parameter,
such as:
<A href="/path/clarionupdateprocedurenameView.asp?ID1=1093">link text</A>
84
CLARION/ASP User’s Guide
Site Standard Page Format
If you already use a standard HTML template (in the sense of a template used by layout
tools such as Dreamweaver, in which application specific tags specify to the layout editor
what parts of the page are to be “editable,” you will have no problem adapting these
templates.
In general, such templates provide the “top,” “bottom,” and “sides” of the page, and the
layout tool then allows you to (essentially) “fill in the blanks” with the text and images
specific to that page.
In Clarion/ASP, we call this a design time template. All that you need do is open the
template, insert the symbol @Clarion/ASP@ in the spot where the template normally
places the “fill in” text, and save an HTML file to the project\HTML directory. Then in the
Global Extensions, declare the page as your design time template.
At generation time, all Clarion/ASP generated elements will appear in the place in which
you put the symbol.
With apologies to the very popular site whose page was “borrowed” for the example
below, this represents what happens when you take an existing page and place the
@Clarion/ASP@ symbol inside it. Note that the colors in the style sheet were designed to
mimic those in another table found at the site:
CLARION/ASP ASP Template Reference
85
Ch. 7: ASP Template Reference
ASP Global Template Options
The template options in the global extension dialog allow you to define the look and feel
of all the pages generated for your procedures and to define the location, access method,
and security of the database.
Fill in the template prompts on each of the tabs in the global template dialog.
Global Options/Global Tab
The global tab allows you to set the look and feel for the generated pages, using HTML
templates and style sheets. It provides access to dialogs that allow you to customize all
the prompts and messages (except for the help text pages, which you must write
separately, of course). It also allows you to specify debug mode.
Because all the messages are set in the template, it makes it simple for you to customize
your applications for specific languages.
You may override your global options at the procedure level. Note that when you check
the option to override in a procedure, should you change a global option afterwards, the
global change will not affect any of the options in the changed procedure.
86
CLARION/ASP User’s Guide
Target Language
All default Clarion/ASP help and prompt messages (not including the prompts in your
dictionary and application files, of course) are provided in English, Spanish and French.
Typically, these messages are basic instructions, such as “Add a record.” You may
override all these messages at the procedure level.
To choose a set of prompts, select “English,” “French,” or Spanish from this dropdown
list.
If you wish to customize the default prompts, edit the .TRN files in the Clarion template
directory. Each of the files is named ASP_LG??.TRN, where ?? is a two letter
abbreviation for a language. “EN” = English, “FR” = French, “NL” = Dutch, “DE” =
German, and “SP” = Spanish. The format is template symbol=text. Note that no % sign
precedes the template symbol, that no space should exist on either side of the = sign,
and the text string is unquoted.
Show Help Button
Providing a help link specifies that individual pages should display a hypertext link to a
help page. You must, of course, indicate the help page address in the individual pages’
template options should you elect not to use the auto-generated names.
CLARION/ASP ASP Template Reference
87
Tooltips
Clarion/ASP generates ALT text for its button images, which are displayed as tool tips in
Internet Explorer (ALT text only displays in other browser if the image is missing). You
may enter the following tooltips:
•
Help Link: default text is “Help.”
•
Back Button: default text is “Back.”
Global Options/Cascading Style Sheets
These buttons allow you to create the cascading style sheets for use in the web pages
created for your procedures. You can specify separate style sheets for each type of page:
global, list, form, and help. Note that the global choice applies to any pages such as the
index, message pages, etc., not in the category of the other four.
An HTML style sheet is not unlike a word processor style sheet: it contains style names,
each of which contain information about the font face, size, weight and color. By storing
this information in a single file, and then indicating the style for a given paragraph inside
all the documents at the site, the administrator gains the ability to change a style sheet
and change the look of all the text within the site.
Clarion/ASP makes use of the CSS 1.0 (Cascading Style Sheet, as defined by the W3C)
specification except for one feature: should you elect to specify a local Windows color
setting (e.g., desktop background) for an item, that is a CSS 2.0 feature, and requires 5.x
browsers and higher.
Please see the following chapter, “Style Sheet Editor” for instructions on customizing your
style sheet.
HTML Design Time Templates
All the data controls generated by Clarion/ASP will appear within a page you specify. This
is convenient, for example, for placing a navigation bar at top, and other elements below.
The Clarion/ASP elements are not limited to the top or bottom. This HTML file must
reside in a directory called HTML, directly below your application project directory.
You should think of Clarion/ASP as responsible for generating only the data elements
and/or data access related messages, and your HTML design time template to provide a
setting in which these elements appear.
Use any standard HTML editor to create your template page(s). At some point within the
page, be it top, middle or bottom, at the place you wish Clarion/ASP to insert the code it
generates (i.e., the place where you want your browses, forms, etc., to appear), place the
text @Clarion/ASP@. (Don’t type the period at the end of the sentence).
88
CLARION/ASP User’s Guide
You may use different templates for different types of procedures: list (browse), form
(update), global (all others). Press the button and enter the file name for your template(s).
You may specify separate templates for browse lists, select browse lists, forms, and all
others (help, index page, any choices not filled in). Note that you may override the default
template at the procedure level.
List Defaults
The list defaults set the global options for the amount of rows to show in the list boxes,
whether to place a navigation bar in the list, navigation bar options, and tool tips related
to list boxes. Press the button to display the dialog, and enter your preferences in the
dialog.
Data Records per HTML List
The value you specify for Data Records per HTML List sets the maximum number of
rows which you wish to appear within the HTML tables which will represent your browse
boxes. The default is 16.
Pad Table with Blank Rows
Clarion/ASP’s default behavior is to provide a standard number of rows per browse page.
If the last page does not contain the maximum number of records (for example, for a
browse procedure on a table with 93 records, presenting ten records per page, the last
page would have three records), then the page presents the extra rows, but fills the rows
with spaces. The result is that the page elements below the browse don’t appear to “jump
up” the page, because the “length” of the browse table is still the same. Should you wish
to disable this behavior, check this box.
Automatically Create Detail Link
This option automatically adds a graphic at the end of each row of each browse box
providing for a link to an update form for that row. When checked, you may specify that
the update be either view only (View) or edit. You may also specify a custom image for
the “button.”
CLARION/ASP ASP Template Reference
89
Place Database Navigation Bar on List Pages
ASP creates navigation icons similar to the Clarion application toolbars, allowing the end
user to easily view the next page of the browse. You may specify custom images for the
navigation buttons on the Images tab.
Note that the normal mode of operation (see Cursor Location, below) is for the web
server to cache the result set from the database. Therefore, when pressing the
“PageDown” or “PageUp” buttons, no further communication between the web server and
database is necessary; the only communication is with the web server and the web
browser. This provides for a very fast means of browsing the database as perceived by
the end user.
Show Add Button on DB Navigation Bar
Use this checkbox to enable or disable adding records from the browse, and specify the
tool tip text.
Show Query By Form Button on Database Navigation Bar
This provides a fast, efficient means of locating a record in a large database. The end
user merely has to fill in the data to search for in a page arranged in the same layout as
an update form. Note: you’ll specify the query form within each browse properties dialog.
In addition to checking the box, enter the tool tip text for the button.
90
CLARION/ASP User’s Guide
Navigation Button Tool Tips
Clarion/ASP generates ALT text for its button images, which are displayed as tool tips in
Internet Explorer (ALT text only displays in other browser if the image is missing). You
may enter the following tool tips for the navigation buttons:
•
First Page
•
Prior Page
•
Next Page
•
Last Page
•
Add Button
•
Query by Form Button
Note that the browses are page loaded; each page will display as many records as you
set in the Data Records per HTML List box, above.
No Records Found Message
This allows you to specify the message text the end user sees if the user chooses a
browse for which no rows are returned by the database, or queries it but no data
matching the query exists.
Clear Filter Prompt
Should you choose to populate a locator control in your table, this provides the link text
for the end user to clear the filter. The locator acts as a query limiter, tied to a specific
field. When the end user types in a value, it adds a LIKE% clause to the current where
clause. Thus, if the browse is already limited to products in category 13, the locator is on
product name, and the end user type “T” into the locator box, the results returned will be
only those products in category 13 starting with “T.” If the end user wishes to return to the
previous list/query, the end user must click on this link. The default text is “All Data.”
This message also appears following a query submitted via a search form.
CLARION/ASP ASP Template Reference
91
Form Defaults Button
The form defaults set the text for the tool tips and message text related to forms, plus
allows you to specify whether to allow popup calendar entry for date fields.
Enable Javascript Calendar Popup
This will automatically place an ellipsis button next to all your date fields. When pressed,
the button will display a popup calendar, with which the end user can select a specific
date. The default is checked. Uncheck the box to disable the calendar and choose a
default date format from the dropdown list.
Enable DB Navigation on View Forms
When displaying a view only update form, Clarion/ASP automatically provides “back” and
“forward” buttons to navigate through the table in the key order specified by the parent
browse. When viewing a single record update form, therefore, the user may press a
button to view the next or previous record. This checkbox allows you to disable the
feature.
92
CLARION/ASP User’s Guide
Additionally, you may specify the tool tip for the next and previous buttons by typing it in.
The default text is “Previous Record,” and “Next Record,” respectively. You may also
define a custom message to display when the end user presses the next or previous
button after reaching the last or first rows, respectively.
Required Field Indicator
To indicate a required field, you may optionally include you may optionally place an
asterisk (commonly used) or other character after either the field prompt or the control.
By default, Clarion/ASP provides for an asterisk following the prompt label.
To customize, check or uncheck the “display indicator” checkbox, type in the character in
the “indicator value” box, and choose the “indicator location” using the dropdown list.
Selected Field background
To change the background of any field that currently has focus, check the “Change
Background” box.
Search Mode Select Control Text
If you’ve populated your update form with a list box, that list box appears on the search
form (unless you specify otherwise). When adding a record in which a “Must Be In List”
validity option was checked, the list properly defaults to the first item in the list. But when
displaying a a list within a search form, in order to allow the user to specify no value
(instead of a single value), this text displays a “None” option, i.e., no choice was made for
the query for this field.
This text box sets the text for the list box selection signifying “any value.” The default text
is “None.”
CRLF to HTML
This checkbox allows you to specify that any carriage return/line feed characters found in
a text field in the database should be translated to HTML <br> tags. This therefore allows
you to preserve the line formatting of such fields on your HTML screens. Note this does
not affect how the data is stored in the database, and is only one way, from the database
to the screen.
CLARION/ASP ASP Template Reference
93
Form Button Text Tab
These allow you to specify text for the form buttons; both for the button text, and for the
tool tip text (using ALT). Enter your preferred text for the Submit, Reset, Delete, and Edit
buttons and their respective tool tips.
Form Button Titles Tab
These allow you to specify text for the page titles (which appear in the caption bar of the
browser). You may specify separate titles for each update mode, i.e., insert, edit, delete,
view and search.
Form Message Text Tab
These boxes allow you to enter custom text that will appear to the end user in a message
page should the condition described in the list below apply:
94
CLARION/ASP User’s Guide
•
Status Text: a label before the text that describes the current process to the end
user (i.e., te word “Status” in “Status: Updating a record”.
•
Record Not Found: a ID field for the form did not match a row in the database.
•
Return to List: a navigational aid.
•
Return to List from Search: a navigational aid.
•
Insert Failed: ADO was unable to add a new record.
•
Insert Succeeded: a new record was added.
•
Update Failed: ADO was unable to edit and save a value in an existing record.
•
Update Succeeded: ADO was able to edit and save a previously existing record..
•
Delete Failed: ADO was unable to delete a record as requested.
•
Delete Succeeded: ADO was able to delete a record as requested.
•
Delete Confirmation: asks the end user if they’re sure they wish to go ahead with
a deletion.
CLARION/ASP ASP Template Reference
95
Form Validation Text Tab
This tab allows you to specify a short message that will appear in the status bar for any
fields on an update form for which client side validation is set up. You may specify the
text for required, numeric, or in-list validation. The default strings are “Required Field,”
“Numeric Field,” or “Must be in List,” respectively. Should you wish to override the
defaults, we suggest that your replacement message be as short as possible.
Include Defaults Button
This button displays a dialog that allows you to specify a virtual file path for your includes.
There are two methods to include resources, using the “file” and “virtual” keywords. “file”
is the default, but if your ISP requires the “virtual” keyword, you can toggle the setting
here.
Global Options/Generation Tab
The options on the Generation tab allow you to optionally specify and control the
additional non-ASP pages be generated when the Generate All command is executed,
and whether the resulting ASP pages should enable debug mode.
96
CLARION/ASP User’s Guide
Enable Debug Mode
Debug mode specifies that the pages generated should be for debug purposes. Be sure
to choose this option only during development, and to turn it off before deployment due to
the possibility of a security risk because of extra information in the HTML source sent to
the browser.
Note: the debug mode instructs ASP to output a page showing as much of what it’s
instructed to produce as possible, plus important information such as the SQL statement
used to produce the data. Note, however, that if an ASP or ADO error is severe enough
so that no page is generated at all, the debug information will simply not appear. As an
example, if the ADO settings point to a DSN on the server which doesn’t exist, ASP will
simply time out, and no page at all will appear. On the other hand, should you expect a
browse with many, many records, and none appear, the SQL statement produced by the
debug option can be useful.
In debug mode, Clarion/ASP passes all IIS and/or ADO errors through to the page. In
non-debug mode, Clarion/ASP attempts to provide a “friendly” explanation.
In general, the Test/Debug page described in the Testing on Your Local Machine section
is a far more efficient means of testing the critical parts of your ASP application.
Suppress File Generation
The three components besides ASP that are produced by Clarion/ASP are the style
sheet, HTML pages and Help skeleton pages. You may enable or suppress these pages
using these controls.
•
Style Sheet (CSS): suppressing cascading style sheet generation is useful when
using a style sheet created in a previous application, which you manually copied
to your project’s project\asp\styles directory. Note that because the style sheet
options are template symbols stored in the .app file, if you copied a sheet
produced by another project, you will not have access to the settings from that
sheet through the Clarion/ASP style sheet editor. More importantly, you will wish
to turn off style sheet generation so as not to overwrite that style sheet with a
blank one.
•
HTML Pages: each of the .ASP pages that Clarion/ASP produces corresponds
to a procedure. The .ASP pages each require a corresponding .htm page that
provides a “setting” for the controls and data that the .ASP page places there.
The ASP page merges the logic from the .ASP code with the HTML layout placed
in the corresponding .htm page, merges the two of those into the HTML template
(usually providing just a top and bottom part of the page), and finally links the
style sheet to format all the text and input objects througout. You may edit the
.htm pages to custom format or change the layout of control elements. After
editing, suppress HTML Pages generation so that the next time you generate the
project you do not overwrite your customizations.
CLARION/ASP ASP Template Reference
•
97
Help Pages: Clarion/ASP automatically generates skeleton pages for your help
text. These pages contain formatting according to your style sheet options, and
javascript functions to automatically size the popup windows which appear when
the end user presses the help button. To add your text to the help pages, simply
open a page in Notepad or Wordpad and type your text in the line that says
“Customize your help text here.” For large blocks of text with complicated
formatting and/or illustrations, we recommend loading the skeleton help files into
an HTML editor.
Once you’ve created the help files, suppress help page generation so that the next time
you generate the project you do not overwrite your customizations.
Popup Help Window Size
Clarion/ASP generates help document templates for each procedure and places a help
button in your procedure pages. When the end user presses the help button, the help
window sizes to the values you set in the template interface. Set the Height and Width in
pixels by typing values in these boxes.
Popup Select Window Size
In a select browse procedure, an end user can fill in an entry with a value from a related
table by clicking on a button, viewing the related table (which displays whatever fields the
developer includes, not just the one with the specific value). To fill in a customer ID field,
for example, the end user may (1) click a button, (2) locate a customer by name in a
popup window which then appears, (3) click on the customer name. When the window
closes the customer’s ID appears in the entry box.
The developer may set the Height and Width in pixels of the window which pops up by
typing the values in these boxes.
Global Options/Database Tab
The database tab helps you define the connection settings for the ADO connection from
the web server to the database server. This makes it the equivalent of your global driver
settings.
98
CLARION/ASP User’s Guide
ASP depends on your application providing a connection string in the Global.ASA file for
your application. The connection string simply tells ASP what ODBC driver or OLE DB
provider it must use to access the database, plus any necessary options for that
database.
If using ODBC, it’s highly recommended that you set up an ODBC data source name on
your development machine that matches the data source name you set up on the web
server.
You will use the connection builder to build the connection string. The connection builder
simply runs the data link libraries supplied with either the operating system or your
database client software, depending on your operating system.
Your ASP application will not function if you omit the connection string, runtime user ID,
or password. Without them, the server will not be able to access the DBMS. There is no
means to display a dialog to retrieve the values from the end user at runtime.
To specify these settings, you’ll press the Connection Properties button on the Database
tab of the ASP global options. This will display the Build Connection String dialog, which
provides prompts for the runtime user name, password, and other connection
parameters, plus a button to call the Connection Builder dialogs.
Connection Properties Dialog
This dialog contains the following options:
Connection Timeout
Enter a value (in seconds) for the connection between IIS and the database. This
governs the timeout property for an ADO connection object.
Command Timeout
Enter a value (in seconds) for the connection between IIS and the database. This
governs the timeout for a command (such as a query) response between the web server
and the DBMS.
Note: when testing, we recommend you keep the connection and command timeout
values low. This allows you, in case of error, to more quickly start another application
session to test again.
CLARION/ASP ASP Template Reference
99
Read/List Operations
The four dropdown lists in this group box allow you to manually set the connection string
parameters for ADO operations for browse procedures. You may manually override each
at the procedure level.
The default list choices should work well with most databases. We recommend that you
change the settings only after consulting the documentation for your particular database,
should you wish to change them.
The settings are:
•
Lock Type : provides for the isolation level. The default setting is read only.
•
Cursor Type: The default provides for a static cursor. In some cases, a
“ForwardReadOnly” cursor may provide optimized access.
•
Cursor Locations: in general, a client side cursor will provide for better use of
resources. In this case, the “client” is the machine running IIS/ADO, not the
browser client.
•
adCommand Type: the default “adCommandUnknown” instructs the ADO
provider to use its defaults.
Form Operations
The four buttons in this group box allow you to manually set the connection string
parameters for ADO operations for each mode (update, edit, delete) of the form
operations. You may manually override each at the procedure level.
100
CLARION/ASP User’s Guide
The default list choices should work well with most databases. We recommend that you
change the settings only after consulting the documentation for your particular database,
should you wish to change them.
The settings are:
•
Lock Type: provides for the isolation level. The settings are optimistic for the
write operations, and read only for the view mode.
•
Cursor Type: The settings are static for the write operations, and read only for
the view mode.
•
Cursor Locations: in general, a client side cursor will provide for better use of
resources. In this case, the “client” is the machine running IIS/ADO, not the
browser client.
•
adCommand Type: the default “adCommandUnknown” instructs the ADO
provider to use its defaults; for add operations, adCommandTable provides for
adding a row to the table.
CLARION/ASP ASP Template Reference
101
Call Connection Builder
The Connection Builder button calls the Data Link Properties dialog. The specifics of this
dialog vary according to which OLE DB provider you choose. You may choose items and
fill in four tabs within this dialog. The illustrations below may not match those on your
system. Note also that the publisher of the particular library you’re using probably
supplied a help file that can be accessed via the help button in the Data Link Properties
dialog.
•
Provider Tab: this presents a list of OLE DB providers on your machine. When
developing on a workstation, you must be sure that the server you deploy to has
the same provider you choose here. You may choose an OLE DB provider
specifically provided for your database (as in the illustration below, “Microsoft
OLE DB Provider for SQL Server”), or the OLE DB provider for ODBC, which
allows you to choose any ODBC DSN previously set up on your system. In
general, if your database provides an ODBC driver, but not an OLE DB provider
library, you should be wary. It may be that the ODBC driver does not support the
features which will be required of ADO access.
102
CLARION/ASP User’s Guide
•
Connection Tab: this allows you to input the server name, user information, and
default database. You must save the password, otherwise your application will
not work because it will have no access to the database. Note also that the tab
should include a “Test Connection” button. You should always test to make sure
that the information you’ve entered is valid.
CLARION/ASP ASP Template Reference
•
103
Advanced Tab: this provides database specific access options, which may
include network/access permissions and timeouts. Note in the illustration below
(from MS SQL Server), all user controls are disabled except for the connection
timeout. In general, we recommend that you not modify the defaults on the
Advanced tab unless you are certain that your customizations will be correct.
104
CLARION/ASP User’s Guide
•
All Tab: this provides a property sheet showing all basic and advanced settings.
In the case of MS SQL Server, below, it also provides additional properties not
on the other tabs. In general, we recommend that you not modify the defaults
unless you are certain that your customizations will be correct.
Note that after calling the Connection Builder, the connection string appears at the
bottom of the Connection Properties dialog. The following is a sample of an MS SQL
connection for the Northwind sample database using MS SQL Server’s OLE DB provider:
Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security Info=True;User
ID1=UserID;Initial Catalog=northwind;Data Source=servername
The following describes the remaining settings on the Database tab of the ASP Global
Options:
Using Access Database
Checking this box allows you to specify that the data source is MS Access, which does
not use standard SQL syntax. Access should be perfectly acceptable for testing and for
deployment for very low traffic sites. We strongly recommend a client server SQL
database for deployment for normal or busy sites.
CLARION/ASP ASP Template Reference
105
When specifying MS Access, runtime user names and passwords are not required unless
you have password protected the database. Note that to password protect a database in
Access 2000 and higher, you must have installed the (optional) user level security wizard
when installing MS Office.
SQL Delimiters
Clarion/ASP automatically uses a single quote character to delimit text and date values
when communicating with the DBMS. Should your DBMS require a double quote
character instead, for text, dates, or both, you may use the drop down choice to set the
delimiter.
Global Options/Security Tab
The security model built into Clarion/ASP is user based, and assumes a database table
consisting of user names and security levels. Upon login, Clarion/ASP checks the user
name and password against this table. It is flexible enough to allow up to two columns to
store the user name. Another column stores the access level. This may be a digit up to
100. By assigning users from the same department the same access level number, you
may mimic to some extent the use of security groups.
Within the browses and forms on your site, upon a request by the user, the ASP code will
compare the users access level ID to the options you’ve specified in the template. Thus,
if you’ve specified that an access level of 75 is necessary in order to change the value in
a form, anyone with an access level below that will simply see the form as read-only.
The fields on the Security tab are as follows. Note that the ellipsis buttons next to each
field allow you to select a column/field from the dictionary as appropriate:
106
CLARION/ASP User’s Guide
Provide User Based Security
Check this box to enable security. When checked, the fields below will be enabled.
User Table
Select the name of the table within your database containing the security information. All
fields should be character fields, except the user password column, and should contain at
least the following structure: one of FullName/FirstName + LastName/Email Address, set
as a primary key. A password column, and a security level column.
Unique ID Column
Select the name of the primary key column, or another unique key.
Login Name Column
The name of the column containing this information.
Login Password Column
Select the name of the column containing the password.
User Security Level Column
Select the name of the column containing an integer between 0 and 99 containing this
value.
On the Optional tab:
User E-Mail Column
Select the name of the column containing this information. E-Mail is only a suggested
column. This may be used to store a user name.
Second User Name Column
This allows for FILE structures containing separate columns for first and last names.
User Company Name Column
Optionally store the company name in a session variable for use in embeds or to set My
Records filtering. Choose a column from your security table.
CLARION/ASP ASP Template Reference
107
User Defined Values
Optionally store up to three values in session variables for use in embeds or to set My
Records filtering. Choose the column(s) from your security table.
Note that the ASP code generated containing these items remains on the IIS server at all
times, and is not visible to the browser. Be sure, of course, to set the database server up
with proper security, so that no one is able to browse this table.
Login Screen Text
This button opens a dialog box which allows you to enter the text for your user login
pages, plus the messages to display should the login be unsuccessful.
Fill in the following text:
•
Login Prompt Text: (self explanatory)
•
Instructions: text to explain the login procedure
•
Bad User ID: text to notify the user that the login failed
•
Bad Password: text to notify the user that the login failed
•
Insufficient Access: text to notify the user his security level is lower than that
required for the page they requested
108
CLARION/ASP User’s Guide
•
Enter Retry: text to instruct the user how to retry the login
On the Button and Field prompts tab:
•
Submit and Reset button labels: (self explanatory)
•
User ID, Password and Save Information prompts: the labels for the text boxes in
which the end user enters the information.
Login Persistence/Cookies
Cookies are ASCII files stored on the local drive of the end user, allowing you to save
variables locally, for retrieval the next time the end user logs visits your site. Clarion/ASP
allows you to store the user ID/password in a cookie, so that the end user, whenever
logging into your application from the same machine in which they stored a cookie
previously, can automatically login without having to type the user ID and password.
You may store the user ID only, or both the user ID and password. Check the “Allow
saving user identifier as cookie” box for to store the user ID, and optionally, the “allow
saving password as cookie” for the password.
You may also set the text for a message which prompts the end user to decide whether
to store the information or not. The default text is “Save Information.”
Note, of course, that should the end user’s browser security settings prevent the ability of
your site to store cookies that the cookie will not be created. The default expiration time
for the cookie is December 31st of the current year; this is (more or less) a standard. No
option is provided in the design time interface to change the expiration time; if this
necessary for your site, you may edit the login.asp page (search for the string “mydate”).
Additionally, please note that the user name and password are stored as plain text within
the cookie file.
CLARION/ASP ASP Template Reference
109
Global Options/Administration Tab
The Administration tab provides global options for the pages you create.
Site Title
Fill in a string that you wish to appear in the top frame of the Clarion/ASP generated
index page.
Email ADO Errors—Administrator Email
Allows you to optionally specify that errors and logs are forwarded to the email address
you specify. Be sure to configure an email client on the IIS server. Note that this also
requires the CDONTS library and the MS SMTP service on the web server. The former is
installed along with the latter.
Message to Display on ADO Error
You may specify a custom error message to display to the end user should the
application receives an ADO error. The default error message states “A Database error
has occurred and the administrator has been notified. Thank you.” The ADO error details
will then be appended below that.
110
CLARION/ASP User’s Guide
Note that this error displays only if the ASP library reports back an ADO error. If the
database operation simply times out, which can often be the case, then ASP may not
receive back an error message. Then the application will appear to freeze until the
timeout is reached, and then an entirely different error message appears over which you
have no control.
Enhanced ADO Error Reporting
You may choose to provide additional to the end user in case of error should you feel it is
useful. To do so, check the box on this tab. The information reported is as follows:
•
Server Name
•
Server Port
•
Web Server Software
•
IP Address
•
User
•
Host Address
•
ASP Script File Name
•
Script URL
•
Query String Parameters
•
Referring Page
•
Local IP Address
•
Fully Qualified ASP Script File Name
CLARION/ASP ASP Template Reference
111
Images
The Images tab allows you to define the location of the various button images that will
appear in your pages.
The labels for the template prompts for these images are self-explanatory. Note that
several buttons provide for two images: one enabled, one disabled.
Image Relative Path
By default, the images are expected to be stored one level below the site root directory,
in a directory called /images. The web server must be able to find this directory, else your
“buttons” and other images will not display. See the section called “Internet Service
Options/Creating the /Images Virtual Directory” for instructions on creating your /images
directory on your “localhost” web server. Be sure to copy the Clarion/ASP images to the
/images directory should you not be using /CLARION6/images/asp as your default. When
deploying to your production server, be sure to copy them to its /images directory.
If you don’t wish to use “/images” as the image location, change the default. To change
the default, simply type a new directory name into the box. Be sure to copy the files to
whatever directory you indicate.
112
CLARION/ASP User’s Guide
Image Sizes
It’s assumed that all your navigation and help icon images will be the same size. You
may enter the width and height in pixels here. If they are different sizes, enter zero and
zero. It is to your advantage to enter the pixel widths, else the browser client may redraw
the table after completing the entire download. Note: the back and help buttons are not
affected by this parameter. You may also specify a border size in pixels for the images.
Image Type Tabs
Because there are many images, these are divided into:
•
Navigation
•
Help
•
Sort Indicators
•
Database Navigation
•
Calendar
Should you wish to substitute your own .gif or .jpg images, feel free to locate the button
image you wish, and change the file name by either typing a new file name, or pressing
the ellipsis button to browse for an alternate file. Don’t forget to copy your custom images
to the images directory on the web server.
User Data
This tab allows you to define user variables for use in embedded code. Please refer to
the chapter on Embeds for information on embed points and VBScript.
Once you define a variable, you are responsible for adding the symbol name (in the
format @symbolname@) to any HTML runtime template which you wish to display the
variable. Or you may optionally name a custom control with the same name as the
variable, and Clarion/ASP will generate the symbol into the runtime template.
When you define a variable name, AppGen will automatically declare the variable at run
time, in the appdata.asp page. It is the developer’s responsibility to put the symbol to use.
To add a variable, press Insert, and type the name of the variable into the User Data
dialog. We suggest prefacing any user defined variables with a distinct preface, such as
“ud_,” in order to distinguish them within the generated code.
To edit a variable name, select the variable in the list and press the Properties button. To
delete a variable, select it and press delete.
CLARION/ASP ASP Template Reference
113
Includes
Includes allow you to specify external files which will be merged into the document at the
time the end user requests it. Because this is a somewhat advanced topic, we’ve
provided a separate chapter to explain the process and its usage. Please refer to Chapter
9 in this manual for additional information.
114
CLARION/ASP User’s Guide
The ASP Browse Extension Template
Because the ASP templates do not assume that you wish to create pages for all the
procedures in your application, you must manually apply the proper procedure template
to those procedures for which you wish to generate ASP pages.
To add the Clarion ASP Browse extension template to a browse, open the Procedure
Properties dialog for the browse, and press the Extensions button. In the Select
Extension dialog, press Insert, locate the ASP Browse template and press Select.
The ASP Browse Extension template provides the following options, on the following
tabs:
Browse Options/Globals Tab
You may override the global options for an individual browse procedure by checking the
Override box in the browse procedure. Additionally, you may specify a green bar effect or
conditional row formatting on this tab. By default, the templates provide “green bar”
formatting for browse tables.
Important: once you check the override box for any procedure, no further changes you
make to a global option will affect the procedure. This is in order to prevent the system
from overwriting any of your custom settings. If, therefore, you change a global option,
and mean to change the setting for every procedure, you must remember to execute the
same change on every overridden procedure.
CLARION/ASP ASP Template Reference
115
Among the settings you can override are the following:
•
Style Sheet
•
HTML and Help file generation
•
HTML Template
•
Showing a Help Link
•
All Database Connection options
•
Number of Rows to Show in the Browse Table
•
Include an Add Button in the Navigation Bar
•
Include a Query by Form Button in the Navigation Bar
•
Include an Automatic Detail Link in Each Row of the Browse.
•
Security
•
Navigation button “tool tips”
•
Status Messages
•
Includes
Please see the Global Options section for specific explanations of the above options,
except Includes, for which you may refer to chapter 9.
•
Row Style: to specify conditional row formatting, press the Row Style button (see
“Conditional Row Formatting,” below). When set, the row is set to one style if it
meets the condition, and another if it does not. Note: you must already have
defined at least two data row styles using the Style Sheet editor to specify
conditional row formatting.
•
Security: the “Enable security for this procedure” checkbox option allows you to
turn security off for this procedure. Note that the checkbox is only available if
you’ve turned security on at the global level. Additionally, by overriding the global
security option you may add ‘My Records” functionality, as explained below.
116
CLARION/ASP User’s Guide
Conditional Row Formatting
Conditional row formatting allows you to specify either that alternating rows will be
formatted with two row style options you previously specified in the Style Sheet’s option
for data rows, or, that rows meeting a condition you specify in this dialog will be formatted
with one row style option, and rows not meeting the condition will be formatted with
another row style option. See the chapter on the Style Sheet Editor.
Before you can set conditional row formatting options, you must check the override global
settings checkbox for the procedure, and then select the style sheet for the procedure. If
you only wish to provide conditional formatting, but keep the other global style sheet
settings, choose the same style sheet selected in the global options.
Press the Row Style button and then fill in the following options to provide the desired
behavior:
•
Default Row Style: select one of the Data Row Style Options you previously
defined in the Style Sheet as the default row formatting. Default refers to the
formatting for the odd rows should you choose a green bar option, or the rows
that don’t meet the condition if you choose conditional. The options appear in a
drop down list.
•
Use Additional Row Style: select either No, Green bar, or Conditional. ‘No”
indicates that you wish to use the row style selected above for all rows, without
condition. “Greenbar” specifies that you wish to alternately format rows using two
styles (and neither has to be green). Conditional selects one or the other row
style dependent upon a field value, chosen below.
•
Additional Row Style: select the “other” row style. This will format either the
even rows (greenbar style) or the rows that meet the condition.
•
Column to Test: when specifying a conditional option, select one of the fields in
the browse to test, by choosing from the drop down list.
•
Operator: choose an operator for the test from less than or equal to, equal to,
not equal to, or greater than or equal to.
•
Value: enter the value for the comparison.
CLARION/ASP ASP Template Reference
117
Browse Options/Global Tab/Database Tab
This sub tab allows you to override the ADO parameters, which you set on the Database
tab of the global ASP extension. The default list choices should work well with most
databases. We recommend that you change the settings only after consulting the
documentation for your particular database, should you wish to change them.
The settings are:
•
Lock Type : provides for the isolation level. The default setting is read only.
•
Cursor Type: The default provides for a static cursor. In some cases, a
“ForwardReadOnly” cursor may provide optimized access.
•
Cursor Locations: in general, a client side cursor will provide for better use of
resources. In this case, the “client” is the machine running IIS/ADO, not the
browser client.
•
adCommand Type: the default “adCommandUnknown” instructs the ADO
provider to use its defaults.
118
CLARION/ASP User’s Guide
Browse Options/Global Tab/Security Sub Tab
This tab contains options for security level access to the entire procedure, and for “My
Records” access to individual data records:
My Records
The Clarion/ASP “My Records” support allows you to specify ownership of records by
user. Each user then views and edits only those records for which they have ownership.
The general process is as follows:
•
At login the end user uniquely identifies themselves. This is stored in a session
variable (usually, UserEmail is used, because many sites have adopted the email
address as a common identifier; it’s unique to each person and easy to
remember).
•
When the user adds a record to a “My Records” update procedure, one of the
table columns receives the session variable (email); this is done without showing
the field on the form.
•
In a browse procedure, a filter is placed on all records limiting the rows viewed to
those with the email (or other session variable) in that particular column.
•
Similarly, delete, search and view form procedures limit their scope to the users’
records.
To enable all this functionality, first turn security on globally. You must enable “My
Records” support on a procedure-by-procedure basis (both browses and forms). Then, to
enable “My Records” on a browse, check the Override box on the Browse Options
Globals tab, and then fill in the Security sub tab, as described in the following section.
To enable ‘My Records” filtering, as described step by step:
1.
Check the Enable Security for this Procedure box.
2.
Check the Enable “My Records” filtering box.
3.
Select the data column which is to store the user information to test against. This
column should be present in the browse procedure’s primary table. When you
design the database, be sure to provide that your master security table and any
tables you wish to provide “My Records” support for all include a field of the
same data type and length which you will use for these purposes. You may name
the columns whatever you wish; you need not specify the same name for the
column in every table for which it appears.
4.
Select the session variable to test against it.
CLARION/ASP ASP Template Reference
119
In many cases, web sites use an email address as a unique identifier. Clarion/ASP’s
global level security dialog. Therefore in many cases, you’ll simply pick the UserEmail
session variable.
You may use the “My Records” variable to flexibly filter records, not only by user, but by
type of user (allowing for access by group), as in the following examples:
•
The Northwind sample database’s employee table contains a “reports to” column.
You may filter a browse which allows “managers” to see only their “direct reports”
by specifying the “reports to” column as the data column to compare, and using
the employee table as the security table, the employee ID as the user ID, and
then using the “UserID” session variable to test against the “reports to” column.
•
Similarly, you may declare an additional session variable, such as “Department,”
edit the login.asp page to assign the session variable based upon department
data which you would store in the security table, and then choose that session
variable to compare to a department value in your primary browse table. You
could similarly substitute “region,” “sales territory,” etc.
Once you’ve correctly set up the “My Records” options for each procedure, you need do
no more; Clarion/ASP automatically hides the necessary fields, applies the necessary
query filters, and takes care of setting the data defaults for new records.
Note that should you be applying the functionality to existing data and are adding a
column to a table that you must add the values necessary for the existing records, else
they will not appear within any users’ “My Records” filter.
Finally, note that you may place “My Records” on a form yet not place it on a browse, due
to the fact that each “procedure” within Clarion/ASP is isolated from the other due to the
nature of the web. This means that you may allow an end user to view all records within a
browse, but restrict editing, deleting, or viewing details to each owner by placing the “My
Records” filter on the form. This, as an example, could be useful for sales personnel
allowing only an owner to see the account details, but allowing everyone else to see an
account summary.
Security Level Required to Access Page
Specifying a level requires typing a number (1 – 99), which will then be checked against
the user database (as specified in the Global options). If the user meets or exceeds the
requirement, the page is then accessible to the user.
Note that this setting controls the display of the page in its entirety, i.e., whether the end
user may view the data within the browse. The options on the Security tab at the form
level provide further control for subsequent options; for example, whether the end user
will be allowed to call an update form from the browse.
Please refer to the previous sections in this manual, which deal with Security for an
overview of the topic.
120
CLARION/ASP User’s Guide
Browse Options/Page Tab
Page Title
This allows you to specify the name of the page, as it will appear in the caption bar of the
browser.
Help URL
This specifies the name of the help page. Note that this assumes the page is located in a
directory called help one level below the asp page.
The help text appears in a popup window when the end user presses the help button in
the browse. You must produce the help text using an HTML editor. The popup help
window sizing is specified in the global options.
QBF Procedure
Select an update form in the application tree to provide a basis to lay out the QBF form.
This allows the end user to see a familiar form, and enter the data to search for in the
form.
After filling in a QBF procedure, the end user will view a browse containing records that
match the query, and can then, if you’ve provided a link to a form within that browse, view
or edit an individual record by selecting from the browse.
CLARION/ASP ASP Template Reference
121
Add Procedure
Specifies the update procedure for the record. Choose from the dropdown list.
Select Mode Procedure
Check to indicate that this browse is a select browse, i.e., a list of records which should
appear in a popup window, and of which the end user should select a single record. After
the selection a value should then be returned to the calling procedure (not necessarily the
same field as that selected by the end user, but possibly another column of the same
row).
When checked, additional options will appear.
•
Column to Use as Hyperlink: receives the end user choice, i.e., is clicked upon
•
Column Assignments: this button leads to a dialog which allows you to specify
which column values to return to the calling procedure and in what order. Press
the button to open the Column Assignments dialog, and once the dialog opens,
press the Insert button to specify the column to fill from, and the target column (in
the calling procedure).
Select browses can be called with an optional range select or a ?WHR clause. No action
is necessary in the “browse side” of the template interface. You may set the range select
from the “update side,” by selecting a field on the update form, and a field on the select
browse. This will call the select browse with a WHERE limiting the browse to only those
rows in which the column matches the current value of the field on the update form. See
the instructions for the Update/Controls/Validation tab, Must be in File option.
Browse Options/HTML Table Tab
This tab controls the overall functionality of the HTML table which will contain your
browse data.
Populated From
This specifies the browse control within the window contained in the procedure. The
dropdown list displays the FEQ’s (Field Equates) of any browse boxes it finds.
122
CLARION/ASP User’s Guide
Remember that the template limits you to the display of a single browse; however, it’s
easy to provide a link to a separate browse.
Clarion/ASP allows you to select a browse that may include fields from more than one
table. It will automatically generate the proper JOIN syntax necessary.
Note: if when debugging your application a browse composed of fields from multiple
tables creates an error, but browses from single tables do not, examine the SQL select
statement, copy and paste it into an SQL command line tool provided by your database
vendor, and verify that the syntax is correct for that particular database. If not, you must
customize the SQL statement (see below).
HTML Table Title
This box allows you to specify a string to appear at the top of the HTML table containing
the browse data.
List Box Primary Table
This allows you to select the primary file selected for the browse control.
Unique Key
This allows you to select a key to uniquely identify each record. If you pick a key allowing
duplicate values, the procedure will return with a “not found” message. this box will
default to the key in the dictionary with the primary attribute.
CLARION/ASP ASP Template Reference
123
Populate an Entry Locator
This specifies that Clarion/ASP should generate a text box which shall appear above the
table, which allows the end user to type in a value and re-query the database. This is
useful for quickly applying a filter to a browse. This is particularly helpful in allowing a
user, for example, to quickly see all the names starting with a specific letter or
combination of letters.
When the value is entered, and the Locate button pushed, an SQL statement with a
WHERE fieldname LIKE ‘whatevertheusertypes%’ is sent to the database. The % is a
wildcard which includes any characters to the right side of what the user types.
For Clarion developers familiar with standard Clarion locators, please note that this is
very different. The end user cannot jump to the first record, and then browse backwards
from it, or past the end of those records that satisfy the filter. The resulting records are
only records that match the new query.
To un-apply the query filter, the end user may press the “All Data” link which appears in
the caption area whenever a query filter is active. After returning from the locate query,
the browse will reflect the query that existed before the end user typed anything in the
locator box.
Note that if the end user types additional text in the locator box when a query is active,
the new query will be applied only against the results of the previous query.
Locator Column
This allows you to specify a search column by choosing a field from a list. There are four
items to note:
•
For best performance, the search column should be a key component, or an
index should exist.
•
In the case of a string search, the search clause will take the form ‘where
searchfield like WhatTheUserTypes%’ which means that if the end user types in
‘A,’ then the search will return all values beginning with the letter ‘A.’
•
Any end user searches will append an SQL where clause to the clause which
populated the browse. If, for example, the original browse page included a filter
such as “State = ‘NY’,” and the search was for “CompanyName like ‘A%’” then
the search page results will be for “State = ‘NY’ and CompanyName like ‘A%’.”
•
The resulting search page will include a link back to the previous browse. You
may specify the precise text that the end user sees for this link (the Clear Filter
Prompt on the Messages tab of the Global and/or Page Overrides). The default
text is “All Data.” The resulting page will include any previous filter that was in
effect for the page prior to the search; therefore if your browse includes a default
where clause or other filter, it’s recommended that you change the text.
124
CLARION/ASP User’s Guide
Final Note: should you wish to duplicate the functionality of an end user search, calling
the search results page from outside the Clarion/ASP pages, you may use parameters:
BrowsePageURL?Locate=TRUE&Field=FieldName&SearchValue=SearchValue"
In the example above, note that the browse must have a Locator specified for the field
named.
Browse Options/Default SQL Tab
Because the SQL to access the data is vitally important, Clarion/ASP allows you to view
the Select statement and customize it if necessary. This also provides a convenient way
to customize a browse filter (the Where clause) or ordering, should you wish.
Regenerate SQL
Should you insert or delete any of the columns on the Table Columns Tab (below), the
template will regenerate the SQL for the browse select only after closing and reopening
the Procedure Properties dialog. Some developers therefore may wish to immediately
press the Regenerate SQL button after making a change to the table column list, should
they wish to check the generated SQL.
Note, however, that should you edit the SQL by hand, then add or delete a column from
the list, Clarion/ASP will not change your hand-edited SQL; you must either change your
SQL statement by hand, or press the regenerate button (and then re-do your
customization).
CLARION/ASP ASP Template Reference
125
Default SQL Select
This text box provides the base select statement. Note that should your browse contain
fields from more than a single table, it will automatically provide for a JOIN.
Important Note: if you’ve populated a field in the Data Columns tab for which Clarion/ASP
can’t resolve the proper syntax (for example, if you’ve populated a data variable in the list
box control for your browse), and the resulting page doesn’t display properly, examine
the SQL statement here. Should you find a statement with a blank for the field name (look
for an extra comma in the order that the suspect field appears in the data columns list, as
in Select fieldname,fieldname,,fieldname...), you may edit the statement here, or delete
the suspect column from the list. Such a problem should be very rare; for example,
should you have more than three JOINs.
Default SQL Where
The text in this box provides the Where clause, which is concatenated to the Select
statement. Important: because it’s possible that the developer may customize the
WHERE clause, the “Regenerate SQL” button does NOT erase this box. You must do so
manually if need be.
Default SQL Order by
The text in this box provides the Order clause, which is concatenated to the other parts of
the statement.
Browse Options/Data Columns Tab
The table columns tab allows you both to specify which columns should appear within the
browse, and their properties. Those controls initially auto populated correspond to the
listbox columns in the browse box which you selected as the “Populated From” choice on
the HTML Table Tab. To insert a column, press the insert button and choose a column
from the list. If the column does not appear in the listbox, it will not be available from this
list. To insert it into the listbox, open the window formatter, right click the listbox, choose
the listbox formatter, press the add column button, click on the table select the column. If
the column is from another table, click on the table, press the insert button, choose the
related table, then the column, and press the select button. After saving the listbox and
window changes, the new column will be available in the list. Clarion/ASP automatically
writes the correct JOIN clause in the SQL statement.
126
CLARION/ASP User’s Guide
In general, you should approach the inclusion of data in ASP browse tables more
conservatively than desktop applications. When serving data over the Internet, it may be
more helpful to limit the number of columns in a browse, which results in less time waiting
for network transfers and a more readable page, than including many columns.
Clarion/ASP makes it easy to provide a view link, so that the end user needs only to click
once in order to see a page containing an update form, showing all or most fields, and
the page may be opened in view only mode, disallowing changes to the data.
Moreover, remember that these are HTML tables, not list boxes with horizontal scrolling
capability as in a desktop application. Therefore, populating a browse table with many,
many fields is liable to result in very narrow columns, compromising readability of the
data.
You can, however, group a column with the data from a previous column, in effect
making a cell into a multi line element. Place an HTML <br> tag in-between the fields to
provide this “stacking” effect. Place the HTML code for a non-breaking space, which is
nbsp; including the semi colon, to place two fields together with a space between them.
The illustration below contains multi-line data for the “Company” column. All fields
following “company” were specified as grouped with the previous field. The <BR> tag
precedes the first name, title, and address line 1, and city fields. the nbsp; keyword
precedes the last name, state, and zip code fields.
CLARION/ASP ASP Template Reference
127
Additionally, note what we think may become a common error for experienced Clarion
programmers: when adding a date column, do not include the date component of the
Clarion group which the dictionary import procedure automatically places over the
date/time field. Use the date/time field. A simple way to detect this is to scan the data
columns list for any column named columnname_DATE, since the import automatically
appends the _DATE at import to the Clarion date field. The SQL date/time field should by
default not have the _DATE appended to it, and should have a picture of @s8.
The Data Columns Properties dialog allows you to specify both appearance and
functionality for the data in your ASP browse columns. The dialog is divided into tabs.
128
CLARION/ASP User’s Guide
Data Columns/General Tab
This tab allows you to hide a column yet still include it in the SQL statement, and to
provide that the browse can be called with a range limiter.
•
Data Column: the field name as it appears in your dictionary.
•
Include in the SQL Select But Do Not Display: there may be situations in
which you wish to provide a custom SQL select statement, and not display a
particular field, as in, for example, a browse populated from two tables: you may
wish an ID number common to both tables to be present in the SQL statement,
but not within the displayed data, for which you wish to display only a last name
from the second table.
•
Include With Prior Column: this allows you to place two or more values within
the same “cell.” If one value is null, then the other values will still be displayed.
You may separate the values via HTML entered in the “Preceding Text” box. To
insert a space between the values, enter &nbsp; (including the semi colon) which
indicates a non breaking white space.
•
Range Limit on the Column: should you wish to call the browse from elsewhere
within the application or from elsewhere within your site, and to use a value
parameter to pass a value as a range limiter, you may check this box. When
calling the browse, be sure to provide the ID1 parameter, as in
http://mysite/mybrowse.asp?ID1=’Smith’. You must only select this option for one
column only.
Checking this box will allow you this browse to be called with a range limit/filter,
such as Where columnname = parameter value. The browse will then display
only those records which match the filter. This allows you to match the
functionality of a Clarion parent/child linked browse box combination in ASP
(spread across two pages). To enable such a link, check this box in the child
browse. Be sure to check this box for only one column.
You can also easily create a browse to browse link, by specifying that your field
be a procedure link, passing the value of the range limiting field, choosing the
other browse procedure, and specifying List for the type of procedure. (see the
“Appearance” tab, below). Once the child browse is configured with the range
limit option, you may also call it from any other page on the site by passing the
?ID1= parameter with a range limit value.
You may also create the same functionality a different way; from the parent
browse, add a custom link on the table data columns or static columns tab, and
include the field value as a parameter to this page, passing the value of the
current row of the current field (for example,
“http://www.mydomain.com/browsepagename.htm?ID1=” &
CLARION/ASP ASP Template Reference
129
CSTR(Request(“Customer_ID”)). Note that the first part of the URL is double
quoted.
Once you’ve added this option, you must insure that all calls to the browse page
include the ?ID1 parameter.
Should you check this option, and then later uncheck it, you must manually edit
the Where clause on the Default SQL tab. If the template were to clear the
clause, it might also delete any customize SQL you had previously placed in the
Where clause as well.
Data Columns Properties/Actions Tab
The Hyperlink groupbox allows you to specify that when the end user clicks on a data
item in this column, the browser will open another page.
130
CLARION/ASP User’s Guide
To enable the link to open an update procedure (or another procedure, for that matter),
check the “Procedure Link” box and specify the name of the procedure from the
dropdown list. Remember to apply the ASP form procedure to the procedure you select.
Indicate in the second dropdown box the action to apply to the procedure: whether it’s to
view data only, or to add, edit, or delete a record, or to list data, as in the case of opening
up a browse on a child file.
The Custom Link choice allows you to add an HTML, VBScript, or Jscript link in the
Custom Link edit box below. You must provide the text of the complete link, from the <A>
to the </A> tag, as in, <a href="URL">Link Text</a>, or <a href="URL"><img
src="Image.GIF"></a>
•
Create column as a Link: optionally specify the link type (procedure or custom).
If not a link, the table merely displays the data as static. The default choice is
“No.”
•
Pass this Data: allows you to define which value to pass. choose Key Value,
Data Column, Session Variable, or Static Entry (text). Your choice will enable
one of the following four controls.
•
Key to Pass: allows you to define which key to pass the value(s) of. This allows
you to link to a form on a table with a multi component key.
•
Data Column to Pass: allows you to define a link on one column, yet pass a link
value from another. For example, to allow an end user to click on a product
name, but to pass the product ID as a parameter to a product update form. This
can be combined with hiding the Product ID in the browse, making the operation
“friendlier” to the end user.
•
Session Variable to Pass: allows you to define a session variable to pass to a
procedure.
•
Static Entry: allows you to pass a string to a procedure.
•
Additional Parameters: allows you to pass additional parameters when
specifying a procedure link with static entry. Fill in in the format
parametername=value, or parametername1=value1&parametername2=value2.
•
Procedure Link: to enable the link to open an update procedure (or another
procedure, for that matter), check the “Procedure Link” box and specify the name
of the procedure from the dropdown list. Remember to apply the ASP form
procedure to the procedure you select. Indicate in the second dropdown box the
action to apply to the procedure: whether it’s to view data only, or to add, edit, or
delete a record, or to list data, as in the case of opening up a browse on a child
file.
CLARION/ASP ASP Template Reference
131
•
Type of Procedure: specify the type of Clarion/ASP the target procedure is (list,
view, add, edit, or delete).
•
Custom Link: allows you to add an HTML, VBScript, or Jscript link in the
Custom Link edit box below. You have complete control of the link, which means
that you may specify custom tags such as Flash files. The link will also not
automatically display your data; you must manually place it
Your code must include the <a> and </a> tags. It’s important to note that the text
you enter in this box will be temporarily stored in and ASP string variable, and
therefore will be surrounded with double quotes. The code surrounding yours
enclose it with double quotes, as in:
mylink = “<a href=’/HomePageContent.htm’>this is some text</a>”
When using a custom link for the data column, the value of the data column does
not appear in the browse table unless you place it there manually. In general, the
only reason to use a custom link for a data column instead of creating a custom
column (see below) is if you must include a custom link in-between columns,
rather than at the left or right of the table.
Please see the section on custom columns, below, for further information on
creating the actual link text for data columns acting as custom links.
Data Columns/Properties/Column Sorting Tab
•
Column Header Text: the text you wish to appear at the top of the column.
•
Enable Sorting by this Column: allows the end user to click on an image on the
column header to sort the column. Note that the default is sortable for all
columns, but in general, good DBMS management suggests that it’s best to
remove the “sort” capability from columns not part of any key components or for
which there’s little rationale for allowing a sort.
132
CLARION/ASP User’s Guide
•
Ascending/Descending Sort SQL boxes: the template automatically includes
ORDER BY clauses (one for ascending, one for descending) in the text boxes
below. Note that you may manually override the default by typing in your own
clause.
•
Ascending/Descending Sort Images: the image files used to add a directional
icon for the sorts.
CLARION/ASP ASP Template Reference
133
Data Columns/Properties/Appearance Tab
•
Alignment: because all data in the HTML form is a string, the cell alignment
options are left, center and right.
•
Width: this allows you to set a custom width (in pixels or percent) for this column.
Bear in mind that should the totals for all the columns exceed either 100% or the
available space in pixels, the browser’s rendering engine will adjust the column
size as necessary.
•
Formatting Function:
In the same way that you may specify conditional formatting by style for rows, you may
specify conditional formatting by style for columns, in effect allowing you to highlight
specific grid cells based on the data value. Simply check the box, pick a style and specify
the condition.
You may format a date/time (using standard VB functions), number, currency, or percent.
For each choice, an options tab will appear offering specific formatting options, such as
decimal places, currency signs, etc. The options are self-explanatory.
134
CLARION/ASP User’s Guide
•
Enable Cell Style: check this box to enable conditional formatting for this cell
(i.e., within when the table grid appears in the end user’s browser, a value in this
column that meets certain conditions may optionally use a different style than
other columns, or even values in the same column above or below it. In this way
you may highlight a particular value with a red background, make the value bold,
etc. Note that you must have previously defined more than one Data Row Style
in the Style Sheet Editor to display a contrast between this cell and others. You
may make the visual differences as subtle or as overt as you wish.
•
Default Cell Style: select one of the Data Row Style Options you previously
defined in the Style Sheet as the default row formatting. The options appear in a
drop down list.
•
Use Additional Cell Style: select Conditional. ‘No” indicates that you wish to use
a single style. Conditional selects one or the other style dependent upon a field
value, chosen below.
•
Additional Row Style: select the “other” style. This will format the cells that meet
the condition.
•
Column to Test: when specifying a conditional option, select one of the fields in
the browse to test, by choosing from the drop down list.
•
Operator: choose an operator for the test from less than or equal to, equal to,
not equal to, or greater than or equal to.
•
Value: enter the value for the comparison.
Browse Options/Custom Columns Tab
This tab allows for similar functionality to the table columns tab, except that it does not
display row/value data. No field chooser drop down list appears, because it’s not
designed to display field data.
The custom columns are useful, for example, to display a small graphic to link to another
procedure. As an example, an ellipsis button in a parent browse can be added on this
tab, which could then link to a child browse, as explained in the Table Columns
Properties section, immediately above this text.
Likewise, the custom column could contain a graphic which might link to a page at the
site which was not generated by Clarion/ASP. For example, you might use a shopping
cart graphic to link to a shopping cart page, and pass a product ID as a parameter.
Or, the static column could provide a graphic containing any other type of custom link,
such as a link to create a blank email message in the end user’s email client, filling in the
subject line (mailto:[email protected]?subject= some subject).
CLARION/ASP ASP Template Reference
135
By default, Clarion/ASP automatically populates one custom column, the Automatic
Detail Link, when you populate a browse. This places a graphic at the end of the row
which the end user may click on to view an update form (view only by default, or edit, by
option) for the selected row. This automatic population may be overridden on the browse
procedure’s overrides tab, and afterwards, the custom column deleted.
Use the Insert, Properties, or Delete button to add, edit, or delete static columns from the
list box, and edit the columns’ properties via the Custom Columns properties dialog,
detailed below:
Custom Columns Properties/Appearance Tab
•
Column Name: merely provides a convenient way to reference this column.
•
Alignment: right or left align the cell.
•
Location: the static column(s) must always appear either to the left of, or the
right of your data columns. Choose one.
136
CLARION/ASP User’s Guide
•
Create this Column as Link: this group box allows you to specify that when the
end user clicks on an item in this column, the browser will open another page.
The default choice is “No.”
To enable the link to open an update procedure (or another procedure, for that
matter), check the “Procedure Link” box and specify the name of the procedure
from the dropdown list. Remember to apply the ASP form procedure to the
procedure you select. Indicate in the second dropdown box the action to apply to
the procedure: whether it’s to view data only, or to add, edit, or delete a record,
or to list data, as in the case of opening up a browse on a child file.
•
Hyperlink: allows you to add an HTML, VBScript, or Jscript link in the Custom
Link edit box below.
Note that the custom link capability is useful for more than just linking to a static
HTML page. You may provide, for example, an HTML parameter, such as
http://www.mydomain.com/page.htm?parametername=value. Or, you may
include field data as a parameter, passing the value of the current row of the
current field (in the following example, called “ID,” such as
“http://www.mydomain.com/page.htm?parametername=” & CSTR(Request(“ID”)).
Note that the first part of the URL is double quoted.
You are responsible for everything including the <A> to the </A> tags for this link.
You may concatenate strings and VB functions, and reference session and data
variables using VB Script functions.
It’s important to note that the text you enter in this box will be temporarily stored
in and ASP string variable, and therefore will be surrounded with double quotes.
The code surrounding yours will appear with yours as:
mylink = “YourText/CodeGoesHere”
This means that if you mix string and functions, you must watch your
concatenation. If your custom link is (1) string only, just type your string and not
worry about the quotes:
MyString
If your custom link is (2) a string with a function concatenated behind, don’t forget
to close the opening quote, concatenate your function, and then open the
following quote:
Mystring” & MyFunction(param) &”
CLARION/ASP ASP Template Reference
137
If your custom link is (3) a function with a string concatenated behind, don’t forget
to close the opening quote, concatenate your function, and then don’t close the
following quote:
“ & MyFunction(param) & “mystring
If your custom link is (4) a function only, don’t forget to close the opening quote,
concatenate your function, and then close the following quote:
“ & MyFunction(param) & “
If you have several elements, just remember where the quotes will be.
To reference a session variable, use the VBScript function SESSION().
To reference a data element in the current form, use a VBScript function to return
it from the recordset: oRStablename(“fieldname”). You may use text functions to
trim and insure against returning a null variable, as in:
MID(TRIM(oRStablename("fieldname")),1,50).
Because the custom link options are almost completely free form, they serve as
very nearly a way to place embedded VBScript in your applications. Note that the
custom link capability is useful for more than just linking to a static HTML page.
You may provide, for example, an HTML parameter, such as
http://www.mydomain.com/page.htm?ID1=value. Or, you may include field data
as a parameter, passing the value of the current row of the current field. The
following example shows concatenating strings and VBScript functions to make a
dynamic URL incorporating the data from each cell as a parameter:
<A HREF=UpdateSuppliersView.asp?ID1=" &
MID(TRIM(oRSviewContacts.Fields("EditSupplier").Value),1,50) &"> <IMG
alt='Supplier Details' src='/images/supplierdetail32x32.GIF' border=0>
</A>
•
Image Button: press to provide details for displaying an image in this cell, when
selecting either a procedure or custom link.
If you’ve chosen to display an image in this column, you must fill out Image
dialog after pressing the button:
•
Populate From: specify whether the image resides as an external file or a binary
column in the database. Note that Clarion/ASP has tested binary images stored
in the MS SQL Server database.
•
File Name: if the Populate From option points to an external file, specify the file
name. An example use of a static image might be a small pencil image,
symbolizing a link to an update form. Remember that the file name must be
either relative to the application’s web directory, or to the web root directory.
138
CLARION/ASP User’s Guide
•
ID Value Column: if the Populate From option points to an image stored in the
database, specify the unique ID column for the row.
•
Table With Image: if the Populate From option points to an image stored in the
database, specify the column containing the image. Making this a separate
option, allows the DBA to store the images in a table separate from the table
used for the browse.
•
ID Column: if the Populate From option points to an image stored in a separate
table in the database, specify the unique ID column for that table.
•
Image Column: if the Populate From option points to an image stored in the
database, specify the column containing the binary image data.
•
Image Type: if the Populate From option points to an image stored in the
database, specify jpg, gif or png.
An additional tab, called Column Header allows you to place a column text label
at the top of the column in which the images will appear.
•
Column Header Text: the text which should appear at the top of this column.
CLARION/ASP ASP Template Reference
139
The ASP Form Extension Template
As noted previously, because the ASP templates do not assume that you wish to create
pages for all the procedures in your application, you must manually apply the proper
procedure template to those procedures for which you wish to generate ASP pages. The
application of the ASP browse template to a browse, however, will automatically build in a
link to the update form for that browse. You must separately apply the ASP form template
to the update form.
To add the Clarion ASP form extension template to an update procedure, open the
Procedure Properties dialog for the form, and press the Extensions button. In the Select
Extension dialog, press Insert, locate the ASP Form template and press Select.
The ASP Form Extension template provides the following options, on the following tabs:
Form Options/Global Overrides
You may override the global options for an individual form procedure by checking the
Override box in the browse procedure.
Important: once you check the override box for any procedure, no further changes you
make to a global option will affect the procedure. This is in order to prevent the system
from overwriting any of your custom settings. If, therefore, you change a global option,
and mean to change the setting for every procedure, you must remember to execute the
same change on every overridden procedure.
140
CLARION/ASP User’s Guide
This allows you to override the following for this procedure:
•
Style Sheet
•
HTML Template
•
Generation of Help and/or HTML Files
•
Show Help Link
•
Show Navigation Buttons
•
Database Connection options
•
Titles and messages Associated With This Form (for example, instead of “Your
Insert Failed,” a message such as “Due to a database error your order was not
posted. If the error continues please contact the administrator” might be more
helpful to your users.
•
Includes
Please see the Global Options section for specific explanations of these options, except
Includes, which are explained in detail in chapter 9.
Note that the checkbox for security is only available if you’ve turned security on at the
global level. The “Enable security for this procedure” checkbox option allows you to turn
security off for this procedure. Note that the checkbox is only available if you’ve turned
security on at the global level. Additionally, by overriding the global security option you
may add ‘My Records” functionality, as explained below.
My Records
The Clarion/ASP “My Records” support allows you to specify ownership of records by
user. Each user then views and edits only those records for which they have ownership.
The general process is as follows:
•
At login the end user uniquely identifies themselves. This is stored in a session
variable (usually, UserEmail is used, because many sites have adopted the email
address as a common identifier; it’s unique to each person and easy to
remember).
•
When the user adds a record to a “My Records” update procedure, one of the
table columns receives the session variable (email); this is done without showing
the field on the form.
•
In a browse procedure, a filter is placed on all records limiting the rows viewed to
those with the email (or other session variable) in that particular column.
CLARION/ASP ASP Template Reference
•
141
Similarly, delete, search and view form procedures limit their scope to the users’
records.
To enable all this functionality, first turn security on globally. You must enable “My
Records” support on a procedure by procedure basis (both browses and forms).
To enable “My Records” on a form, check the Override box on the Globals tab, then fill in
the Security sub tab, as described in the following section.
Form Options/GlobalsTab/Security Sub Tab
To enable ‘My Records” filtering:
1.
Check the Enable Security for this Procedure box.
2.
Check the Enable “My Records” filtering box.
3.
Select the data column which is to store the user information to test against. This
column should be present in the form procedure’s primary table. When you
design the database, be sure to provide that your master security table and any
tables you wish to provide “My Records” support for all include a field of the
same data type and length which you will use for these purposes. You may name
the columns whatever you wish; you need not specify the same name for the
column in every table for which it appears.
4.
Select the session variable to test against it.
In many cases, web sites use an email address as a unique identifier. Clarion/ASP’s
global level security dialog. Therefore in many cases, you’ll simply pick the UserEmail
session variable.
You may use the “My Records” variable to limit record access not only by user, but by
type of user, as in the following examples:
•
The Northwind sample database’s employee table contains a “reports to” column.
You may filter a form so that “managers” may edit only their “direct reports” by
specifying the “reports to” column as the data column to compare, and using the
employee table as the security table, the employee ID as the user ID, and then
using the “UserID” session variable to test against the “reports to” column. By not
enabling “My Records” on the browse, the managers can see a listing of all
employees, but then can only link to an edit form for their own employees.
•
Similarly, you may declare an additional session variable, such as “Department,”
editing the login.asp page to assign the session variable based upon department
data which you would store in the security table, and then choose that session
variable to compare to a department value in your primary form table. You could
similarly substitute “region,” “sales territory,” etc.
142
CLARION/ASP User’s Guide
Once you’ve correctly set up the “My Records” options for each procedure, you need do
no more; Clarion/ASP automatically hides the necessary fields, applies the necessary
query filters, and takes care of setting the data defaults for new records.
Note that should you be applying the functionality to existing data and are adding a
column to a table that you must add the values necessary for the existing records, else
they will not appear within any users’ “My Records” filter.
Form Options/Global Tab/Database Tab
This sub tab allows you to override the ADO parameters which you set on the Database
tab of the global ASP extension. The default choices should work well with most
databases. We recommend that you change the settings only after consulting the
documentation for your particular database, should you wish to change them.
The four buttons in this group box allow you to manually set the connection string
parameters for ADO operations for each mode (update, edit, delete) of the form
operations.
The settings are:
•
Lock Type : provides for the isolation level. The settings are optimistic for the
write operations, and read only for the view mode.
•
Cursor Type: The settings are static for the write operations, and read only for
the view mode.
CLARION/ASP ASP Template Reference
•
Cursor Locations: in general, a client side cursor will provide for better use of
resources. In this case, the “client” is the machine running IIS/ADO, not the
browser client.
•
adCommand Type: the default “adCommandUnknown” instructs the ADO
provider to use its defaults; for add operations, adCommandTable provides for
adding a row to the table.
143
Security Levels
You may set separate security levels to permit adds, changes, deletes and viewing the
form. Specifying a level requires a number between 1 and 99 which will then be checked
against the user database (see Global Options). if the user meets or exceeds the
requirement, the page is then accessible. If not, a message is displayed, which is
configurable by the developer in the global settings.
Titles (Insert/Edit/Delete/View/Search)
These boxes allow you to specify the name of the page for each of the actions. The page
title appears in the caption bar of the end user’s browser.
Messages
These boxes allow you to override the default status messages which display following
the completion of the update procedure.
Navigation
These boxes allow you to override the navigation button “tool tips” as well as providing a
custom “first” or “last record reached” message.
Includes
You may include your HTML/JavaScript files at the following locations by entering the
include file name in the appropriate prompt.
Before/After <html> tag
Before/After </head> tag
Before/After <body> tag
Before/After </bg div> tag
144
CLARION/ASP User’s Guide
Form Options/ActionsTab
The Actions tab allows you to set the update functionality, and whether following an
update the end user should see a status page or a custom page.
Allow (Insert/Edit/Delete/View)
Check the boxes for the actions you wish to enable. Note that View provides for a read
only form.
CLARION/ASP ASP Template Reference
145
Page to Return To
Normally after an update, change or delete, the end user views a status page stating that
the update succeeded or failed, as below:
If instead you prefer that the end user is sent to a page of your choice, type a URL in the
box(es) marked “Page to return to” next to the action you wish to tie the page to. This
provides, for example, a convenient way to provide for “repeat adds,” via which the end
user is presented with a new blank add form following a successful insert. Or it may
simply return the end user to a “table of contents” page.
The “return” mechanism provides additional functionality in that you may add a template
symbol to your own HTML or ASP page, if you’ve defined it as the target, and
Clarion/ASP, following the insert, will merge the values of any known symbols into that
page, using a mechanism similar to the HTML runtime template technology. If you do not
insert any symbols, there will be no effect on the page the end user sees. The “return”
mechanism thus provides for the following additional functionality:
146
CLARION/ASP User’s Guide
•
Display Security Variables or User Defined Variables in the Target Page: by
default, if security is active, the symbols available for insert are the security
session variables (@UserID@, @UserEmail@, and @UserName@). You may
insert any of these into the target HTML page and the merge routine will
substitute the values. Additionally, any user defined variables which you defined
at the global level, and which you stored values in (at previously executed embed
points) are available.
•
Return to Calling Browse or Query Form: you may also use the “return”
mechanism to deliver the end user back to a browse or query form after a
successful insert. Note that should you wish to return the end user to a browse
which had previously been filtered, you must add a URL parameter:
?SUBSET=TRUE.
•
Repeat Add Mode With Prefilled Fields: in some cases the developer may
wish to set certain fields on the add form to repeat the previous value, so that the
end user, in effects, fills in “half” the form, and each subsequent add only
requires that they fill in the other “half.” This requires embed code in the add
form. The general process for executing this would be: (1) declare user defined
variables for each of the repeated fields at the global variable, (2) examine the
ASP source for the Add page and identify the variable name used in the ASP
code (normally TableNameFieldName, found on a line such as):
TemplateText = Replace(TemplateText, "@CustomersCompanyName@",
CustomersCompanyName)
Then, (3) in an embed point such as prior to closing the record set, assign the
value of that variable to your user defined variable such as:
SESSION(“myUserDefinedVariable”) = CustomersCompanyName
Finally, (4) at an embed point after opening the record set, assign the opposite of
the above.
Note: Repeat Add Mode does not depend on the “return” mechanism; following
these guidelines this same functionality works for any add linked to from any
page (not necessarily a previous add), automatically retrieving the values
previously stored in user defined variables for that session. The “return”
mechanism merely provides a convenient entry point in that in many cases the
developer wishes the Repeat Add Mode functionality for a series of “rapid fire”
adds.
CLARION/ASP ASP Template Reference
147
Builder Page Information
The Form Actions tab provides a convenient point at which to document the Builder
functions, though not directly controlled by the template interface.
The Add, and Edit actions are each divided into two separate ASP pages: a Builder and a
Processor. The Builder page retrieves the data and places the form before the end user.
These are the procedure pages ending in “add.asp,” or “edit.asp.” The Processor page
executes the update or change, then displays the status message or routes the end user
to the next page as defined in the Actions tab. These procedure pages end in “addx.asp,”
and “editx.asp.”
The merge function opens the HTML runtime template, locates all @symbols@, and
replaces each with the data and formatting instructions corresponding to each symbol.
The result is a complete HTML page, and that is what is output by IIS to the browser.
Within the Processor page, a variable called “mystatus” holds the “your insert/update
succeeded or failed” message which the end user normally sees after an operation. The
Processor page therefore performs the operation, and then displays that message.
If you wish to display that message in a page of your own, or to a different Clarion/ASP
generated target page (for example, displaying the “success” message at the top of the
next update form in a repeat add), you must use one of the Processor embeds (see
chapter 8) to store the message in a user defined variable (at the last embed point in the
Processor, simply assign ud_YourVariable = mystatus).
Whether or not you display the message in your page, by entering a page of your own in
the target action, as described above, after the update operation the Processor page will
open that file, search for any user defined @symbols@ (as listed in the user variables tab
of the global extension), merge/replace those symbols with the corresponding variables,
and then output your page to the end user.
This provides you with a flexible means of routing and informing the end user through
each update or insert operation.
Generate QBF
If checked, specifies the generation of an additional page containing a Query by Form.
Upon user entry, the form will automatically run the query and display the results in a
parent browse.
Parent Browse
Specify the name of the browse procedure which will link to the form, as well as the
browse which will appear subsequent to the Query by Form (if the previous box checked.
148
CLARION/ASP User’s Guide
Form Options/Help
The Page tab allows you to set the help links for the page.
Help URL (Insert/Edit/Delete/View/Search)
Specify a URL for each of the appropriate actions. When the end user clicks on the link,
the help page you specify will appear in a popup window. Note: if your help text is
extensive, the window may cover the application window. Should this be the case you
must educate your users so that they know to close the help window to return to the
application pages.
Form Options/Data Access Tab
This tab allows you to customize the SQL used to manage the update form. It contains
the following three sub tabs:
CLARION/ASP ASP Template Reference
149
Table Sub Tab
The form template is designed to retrieve and update a single table at a time. You may
not include fields from other tables (even as display only fields) on your form, except (1)
by populating the file drop control template in the window formatter, or (2) by editing the
.asp file post generation, modifying the FROM clause. Note that the latter process is
demonstrated in the Annotated Examples book.
•
•
•
•
Form Primary Table: the table to be updated. Choose a table from the
dictionary, using the ellipsis button to select from a list.
Unique Key: a unique key which identifies the row.
Enable range limit option should be checked when using a range limited
Browse procedure that calls this form. Press the ellipsis button and select the
valid Column that is used to range limit. This feature permits you to identify a
value (not necessarily the primary key) which will be "persisted" at several levels
and used for; returning to a list that is a subset, applying the range to a search
condition automatically, view form navigation of a subset, and priming of newly
inserted rows with the range value.
Regenerate SQL: should you change the form controls (using the WINDOW
structure), you may press this button to immediately update the SQL select
statements, else the SQL will regenerate only after you close and then reopen
the procedure properties.
SQL to Delete Row Sub Tab
This edit box displays the SQL statement to delete the row. You may edit the statement;
however, the programmer assumes full responsibility because there is no error checking
of your changes.
SQL for Selection Sub Tab
This displays the SQL statement to retrieve the row. You may edit the statement;
however, the programmer assumes full responsibility because there is no error checking
of your changes. Moreover, manually changing the select statment does not edit the
columns that the page will contain. If, for example, the programmer deletes two columns
from the select statement without deleting them from the window or choosing the “do not
populate” option, the runtime template will still display the columns as empty edit boxes.
Note that the default syntax will include both SQL and ASP code. The first part of the
select statement is the main select, but the second part is comprised of ASP, and forms
the value for the where clause, using the ASP Request function and the column name.
Thus, “SELECT (fieldlist) FROM Person WHERE Person.ID = “ & CSTR(Request(“ID”)).
Note the double quotes for the first part of the statement. The concatenated part provides
for a VBScript function to obtain the unique value for the ID field, as requested by the
calling page.
150
CLARION/ASP User’s Guide
Form Options/Controls Tab
The Controls tab allows you to specify the properties for the columns which appear within
the form. Those controls auto populated correspond to the controls in the procedure’s
window, in the order they appear in that structure.
Important: if you wish to add or subtract a control, add it to or delete it from the window. If
you wish to change the control order, you must either edit the window structure as text
(using the ... button next to the Window button in the Procedure Properties dialog) or
change the tab order using the Window Formatter.
Note that the column properties for the control are picked up from the Dictionary with
some limitations due to the differences in available properties for HTML controls. It is
important to review the properties for each control. Example: formatting pictures do not
come from the dictionary; instead, they come from ADO. The MS SQL Server Northwind
sample database, as an example, includes a price field in the Products table. This data
type is “money.” Therefore, a Clarion/ASP application will correctly display a currency
symbol for this value, using the local currency symbol as set on the SQL Server. This
particular field is also defined in the database as having a precision of four. Therefore,
the ASP page correctly displays the value with four decimal places.
To review the control properties, select a control from the list and press the Properties
button. This presents the Controls dialog, which contains the following sub tabs and
options:
CLARION/ASP ASP Template Reference
151
Appearance Sub Tab
•
Populate: enable or suppress (don’t generate) the control on the generated ASP
page.
•
HTML Form Element: the control type. Choose from Input (entry box), Check
(Checkbox), Radio, Select (List box), and Text area (multi line text box). Note
that the control type choice will affect the options in subsequent tabs. Bear in
mind that these are the native HTML control types, and the names used are
those used when populating an HTML form.
•
Caption: the equivalent of the prompt text for the control. Note that mnemonics
and accelerator keys are not possible.
•
Tool Tip: the “tool tip” will be inserted as an ALT tag for the control. Internet
Explorer and the latest version of Netscape utilize this text as a tool tip. Note that
older versions of Netscape do not.
•
Formatting Function: optionally select DateTime, Number, Currency or Percent
to specify formatting. Each choice provides additional appropriate options such
as the number of decimal places for number formatting, or short/long date format.
The pictures apply to both display and input; therefore it is vitally important that
on input, the end user must be educated on what the acceptable input is. If, for
example, a picture provides for two decimal places, but the end user types in
three, or if a long date is provided for but the end user types in a short date, the
server will return an ADO error.
Please note the following regarding the pop-up javascript calendar which
appears next to date fields. Clarion/ASP will add this pop-up (assuming you
152
CLARION/ASP User’s Guide
haven’t disabled it in the global list defaults) under two conditions: (1) if the
dictionary provides for a date picture, such as @d1 or @d2 for the field, or (2) if
you you’ve specified a DateTime format in this dialog.
Note also that this is a change in behavior introduced in Clarion/ASP 1.2.
Previously, the template generated the the calendar lookup if the field name
included “date” in its name.
•
Case: optionally specify case conversion to normal, lower case, or upper case.
•
Password: optionally specify password field entry.
•
Read Only: check this box to disallow editing of the selected column.
•
Omit From QBF Page: this deletes the field from the Query by Form page.
There are excellent reasons for omitting fields from the Query by Form. Firstly,
the less fields, the simpler; chances are 80% of the queries will only require 20%
of the fields or less. Secondly, querying a non-indexed field may require greater
effort on the part of the DBMS.
Note: remember when populating a checkbox control on a query form that
unchecked does not mean null (or no choice for that field). It means the query
seeks records for which the value for that field is false. This concept could be
confusing for many end users; therefore we recommend that when using Queries
as a main navigation aid for your applications that you review the use of
checkboxes.
•
Maximum Characters: allows you to size the controls (width only).
•
Rows and Columns: for text area controls, allows you to specify the width in
characters and the height of the control in lines. Note that the typeface in all text
area controls in monospaced (the text looks like typewriter text). This is a
limitation of HTML, and there is no method of changing this.
Note that “My Records” filter fields will appear in the controls list as normal; however,
they will be hidden from the end user in the update form.
CLARION/ASP ASP Template Reference
153
Validation Tab Sub Tab
This tab is enabled only when the HTML Element (on the Appearance tab) is an entry or
text box. This allows you to specify client side validation, which will help reduce network
traffic. Choose the validation options, and fill in the edit boxes according to the choice.
•
No Validation: self explanatory.
•
Cannot be Null: self explanatory. Be sure to fill in the Validation Alert Text
Message.
•
Must be in Numeric Range: self explanatory. Fill in at least one of the Numeric
Range options, and the Alert text. For the numeric ranges, check either lowest,
highest, or both, and fill in numeric values. If lowest is checked, than the
validation is greater than the value; highest, lesser than, and both, the value must
be in between low and high.
•
Must Be In List: this works in conjunction with the List options set in the
dictionary. You may not edit the list values here; they are provided only for
display. Should you wish to change the options you must change the dictionary.
•
Alert Text Message: this provides you with the ability to type in a string, which
will be presented to the end user in a message (or popup) box.
•
Must Be In File: allows you to specify a primary/foreign key relation as set in the
Clarion dictionary. You must additionally choose a select browse from the
dropdown list. This behavior (on an entry field or HTML input) mimics the Clarion
Lookup behavior. It automatically populates a select button next to the entry field.
154
CLARION/ASP User’s Guide
The end user may then press the button, choose from the select browse popup,
and the entry box then receives the proper value according to whichever row in
the select browse the end user chooses.
You must manually choose the proper select browse for all the “Must be in File”
columns which appear in the update form; the procedures dropdown list will
default to the first browse in the application tree. If you forget to make a choice, it
is likely that the lookup button will display an entirely different browse in the
popup, one which may not even contain “clickable” fields from which to choose a
value. You must also apply the browse extension template to the Select Browse
procedure in order for Clarion/ASP to generate an ASP page for the select
browse.
You may specify a range limit for the select browse, utilizing the current value of
any of the entry fields in the current update form, matching it to a column in the
select browse. As an example, if the select is to choose a product ID, and the
end user has already specified a category ID, the select browse can range limit
to that category ID. Press the Insert button in the “Lookup from File” tab to
choose the source and target columns.
The Value to Pass dialog allows you to select a source column. This will call the
select browse with a WHERE limiting the browse to only those rows that match
the current value of that field on the update form. You must also specify the
target column of the select browse whose value should match this column. You
may have to insert the related table into the field chooser dialog.
CLARION/ASP ASP Template Reference
155
Select Options Sub Tab
This sub tab is displayed only if the HTML Element (on the Appearance tab) is a SELECT
(listbox). As an alternative to placing a link to another browse to perform a “Select”
lookup, you may use a file loaded list box for your control (selecting it in the HTML
Element for Insert choice on the previous tab).
To initiate the automatic use of this feature (i.e., so that Clarion/ASP supplies it when you
apply the template extension to the form), place a FileDropCombo or a FileDropList into
the window. Clarion/ASP will then add the column in the related table to the controls list.
The HTML element will appear as a combo.
156
CLARION/ASP User’s Guide
The Combo Options Sub Tab offers these options:
•
Unique ID Column: the column in the related table providing the unique value by
which to identify a choice selected from it.
•
Value Column: the column in the related table providing the value for the target
column in the form’s primary table.
•
Display Column: the column in the related table from which you which to display
data for the user to select.
•
Target Column: the column in the form’s primary file into which you wish to save
the value selected by the user from the related table.
•
Lookup SQL: if you’ve placed the template as above, you’ll see the SQL
statement to retrieve the values from the related table. In some cases it may be
necessary to edit this statement.
Form Options/Custom Controls Tab
The Custom Controls tab allows you both to specify that additional non-data columns
should appear within the form, and their properties. They may appear as images or
strings. To insert a column, press the insert button and define its properties.
To review the custom control properties, select a control from the list and press the
Properties button. This presents the Controls dialog, which contains the two sub tabs and
options. On the appearance tab:
•
Populate: this checkbox indicates that you wish to generate code for this custom
control.
•
Control Name: merely provides a convenient way to reference this column.
CLARION/ASP ASP Template Reference
157
•
Caption: provides for a label which appears to the left of the field.
•
Control Location: specify that it appear either at the top of the form or at the
bottom of the form.
•
Populate From: specify static text (including null) or a session variable.
•
Enter Display Text: enter the text the end user should see, or a null string (leave
it empty) should you wish to display a graphic.
On the Actions tab:
•
Create this as a Link: specify the link type (procedure or custom) or not as a
link. In general, not creating a link is simply a means to populate a picture on the
form that doesn’t do anything. To populate a picture that leads the user to
another page, specify a procedure or custom link.
•
Pass this Data: allows you to pass the value of this control to a procedure.
•
Data Column to Pass: allows you to define which column from the form contains
the data to pass.
•
Session Variable to Pass: allows you to define a session variable to pass to a
procedure.
•
Static Entry: allows you to pass a string to a procedure.
•
Additional Parameters: allows you to pass additional parameters when
specifying a procedure link with static entry. Fill in in the format
parametername=value, or parametername1=value1&parametername2=value2.
•
Procedure Link: to enable the link to open an update procedure (or another
procedure, for that matter), check the “Procedure Link” box and specify the name
of the procedure from the dropdown list. Remember to apply the ASP form
procedure to the procedure you select. Indicate in the second dropdown box the
action to apply to the procedure: whether it’s to view data only, or to add, edit, or
delete a record, or to list data, as in the case of opening up a browse on a child
file.
•
Type of Procedure: specify the type of Clarion/ASP the target procedure is (list,
add, edit, or delete).
•
Custom Link: allows you to add an HTML, VBScript, or Jscript link in the
Custom Link edit box below. You have complete control of the link, which means
that you may specify custom tags such as Flash files.
158
CLARION/ASP User’s Guide
You are responsible for everything starting with <A> to the </A> tags for this link.
You may concatenate strings and VB functions, and reference session and data
variables using VB Script functions.
It’s important to note that the text you enter in this box will be temporarily stored
in and ASP string variable, and therefore will be surrounded with double quotes.
The code surrounding yours will appear with yours as:
mylink = “ YourText/CodeGoesHere “
This means that if you mix string and functions, you must watch your
concatenation. If your custom link is (1) string only, just type your string and not
worry about the quotes:
MyString
If your custom link is (2) a string with a function concatenated behind, don’t forget
to close the opening quote, concatenate your function, and then open the
following quote:
Mystring” & MyFunction(param) &”
If your custom link is (3) a function with a string concatenated behind, don’t forget
to close the opening quote, concatenate your function, and then don’t close the
following quote:
“ & MyFunction(param) & “mystring
If your custom link is (4) a function only, don’t forget to close the opening quote,
concatenate your function, and then close the following quote:
“ & MyFunction(param) & “
If you have several elements, just remember where the quotes will be.
To reference a session variable, use the VBScript function SESSION(). To
reference a data element in the current form, use a VBScript function to return it
from the recordset: oRStablename(“fieldname”). You may use text functions to
trim and insure against returning a null variable, as in:
MID(TRIM(oRStablename("fieldname")),1,50).
<a href='BrowseProductsList.asp?WHR=dbo.Suppliers.SupplierID1=" &
MID(TRIM(oRSSuppliers("SupplierID")),1,50) & "'><img
src='/IMAGES/products.GIF' width='32' height='32 alt='Products'
border='0'></a>
Because the custom link options are almost completely free form, they serve as
very nearly a way to place embedded VBScript in your applications.
•
Image Button: press to provide details for displaying an image in this cell.
CLARION/ASP ASP Template Reference
159
If you’ve chosen to display an image in this column, you must fill out Image
dialog after pressing the button:
•
Populate From: specify whether the image resides as an external file or a binary
column in the database. Note that Clarion/ASP has tested binary images stored
in the MS SQL Server database.
•
File Name: if the Populate From option points to an external file, specify the file
name. An example use of a static image might be a small pencil image,
symbolizing a link to an update form. Remember that the file name must be
either relative to the application’s web directory, or to the web root directory.
•
ID Value Column: if the Populate From option points to an image stored in the
database, specify the unique ID column for the row.
•
Table With Image: if the Populate From option points to an image stored in the
database, specify the column containing the image. Making this a separate
option, allows the DBA to store the images in a table separate from the table
used for the browse.
•
ID Column: if the Populate From option points to an image stored in a separate
table in the database, specify the unique ID column for that table.
•
Image Column: if the Populate From option points to an image stored in the
database, specify the column containing the binary image data.
•
Image Type: if the Populate From option points to an image stored in the
database, specify jpg, gif or png.
160
CLARION/ASP User’s Guide
CLARION/ASP ASP Embeds
161
Ch. 8: ASP Embeds
The Clarion/ASP template provides the developer with the opportunity to write their own
VBScript, ADO and/or SQL code (dependent upon the embed selected) which will
execute inside and along with the code that Clarion/ASP generates, without fear of the
developer’s custom code being overwritten at generation time.
Clarion/ASP accomplishes this through embed points in the browse and form procedures.
The developer chooses an embed point (each is described below), and presses an Insert
button. The source code editor appears, and any VBScript added will be saved in the app
file.
In conjunction with user defined template symbols (which the developer is responsible for
inserting into the run time templates), the source code is executed when the page is
processed, and the output of the developer code (as assigned to the user defined
variable matching the template symbol) is merged into the output page, for the end user
to see.
The developer adds any user defined variable on a tab in the global extension;
Clarion/ASP inserts session variable declaration in the appdata.asp file, which means
that the variable and its value can be accessed by every page that executes. We suggest
using a prefix to your variables such as ud_ (user defined), as in ud_MyVariable. This
could make it easier to understand your generated pages and avoid name clashes. As an
example declaration:
IF IsNull(SESSION("ud_myDataVar")) THEN
SESSION("ud_myDataVar") = ""
END IF
In the code above, we first check that there’s not a variable already declared (since this is
called by every page), and if not, then we declare it.
As another example, the developer may declare a user defined template symbol called
ud_MyVariable. The developer might then insert a column into the runtime template for a
browse, and place the corresponding symbol there. The symbol should be the variable
name preceded and suceeded by an @ sign, as in @ud_MyVariable@.
Continuing the example, within the embed tree the developer locates the node labelled
“After start build (html) rows.” The end user inserts code that calculates whatever the
value should be for ud_MyVariable, and assigns it. (Remember that the ASP code written
by the developer has access to the values in the current record; thus, a running total, for
example, can be coded. The developer should also recall that they should destroy any
objects they create. Session objects may also be created and used).
162
CLARION/ASP User’s Guide
At run time, that code executes, it gets merged, the value appears alongside the other
values in that row, and in all the other rows of the browse, according to what the proper
value should be. Other embed points are available; the embed point within a browse row
was just an example.
The templates exercise no limits on the ASP code you insert. You may, for example,
reuse a connection object, create a new SQL statement and recordset object, and add,
say, a count and grand total of all orders for a customer by opening a details table and
using an aggregate query, even though the ASP page generated by the template never
opens that particular table.
Global Template Declarations
To declare a user defined variable, open the ASP global extension. Scroll to the tab at
the extreme right called “User Data.” Press the Insert button and enter the user variable
name in the User Data dialog. Do not add @ signs to the variable name.
Assuming the developer wishes to display the results of their code within a page, the
developer or web designer edits the desired runtime template and inserts the
@variable@, i.e., the variable name surrounded by the @ sign at the appropriate place in
the page.
CLARION/ASP ASP Embeds
163
Accessing the Embed Points
To access the embed points, the developer selects a browse or form procedure with the
Clarion/ASP extension already populated, double clicks the embeds node in the right
hand pane of the Application tree, or right clicks the procedure in the left pane and
chooses embeds from the popup menu, or opens the Procedure Properties dialog and
presses the Embeds button.
By expanding the list of Embeds, the developer may then locate the top level
Clarion/ASP embed node. The nodes underneath represent the embed points.
To insert a new piece of code, the developer may select a CODE node underneath the
node with the description of the execution point desired and press the insert button. To
edit an existing embed, the developer may double click the node showing the first line of
their code. The Select Embed Type dialog appears. The developer should select Source
to write ASP code. The source code editor (also referred to as the Embeditor) appears
when inserting or editing code. The code is automatically saved when closed.
To delete existing embed code, select the node showing the code and press Delete.
Remember that any embed code will be evaluated by the VBScript engine, and must
therefore be valid ASP code.
Global Embed Points
The Clarion/ASP Global extension contains the following embed opportunities:
AppData include file (this file is included in all generated asp files)
•
•
After Opening file
Before Closing file
Login include file (included in all generated file when security is enabled)
•
•
•
•
•
•
•
•
After Opening file
Merge function - Before write
Login form - Before Merge
Login form - Before UserID fail Merge
User Table - Before closing
Before Password fail
Before User Level fail
Before Closing Login file
164
CLARION/ASP User’s Guide
Browse Embed Points
The Clarion/ASP browse extension contains the following embed opportunities:
Connection Object
•
•
After Opening the Connection Object
Before Closing the Connection Object
Recordset Object
•
•
•
•
After Opening the RecordSet Object
After Starting to Build the Data Rows (this refers to the loop for each record
within the browse table, during which Clarion/ASP gets the contents of each field,
formats it, and stores it in the symbol for output. Use this embed point when
using a variable that should display a different value for each row of the browse
table. This allows you to execute your code before the first column value is
assigned; the record set is already open at this point).
Before Ending the Building of Data Rows (same as above, except after all the
column values have been assigned).
Before Closing the RecordSet Object
CLARION/ASP ASP Embeds
165
Merge Call
The merge call refers to the point at which the ASP code replaces the symbols in the
runtime HTML template with data values from the row. This allows, for example, the
ability to calculate a user defined variable which is to display in the page.
•
•
•
Before the Merge Call
Inside Merge Before Token Assignments Call
After the Merge Call
Form Embed Points
The form embeds have four separate subnodes for the four update modes: Add, Edit,
Delete and View. You may see the implementation of this when looking at the asp
directory, and seeing four separate pages for each procedure, in the format
UpdateProcedureNameMode.asp, with mode being “Add,” “Edit,” “Del,” and “View.”
Should the developer wish the same code to execute on more than one mode, the
developer must copy the code from one to the other.
Moreover, the Add and Edit modes each have two “phases:” Builder and Processor. You
may see the implementation of this when looking at the asp directory, and seeing two
pages each, ending in “Add.asp”, “AddX.asp”, “Edit.asp”, and “EditX.asp.” The page
without the X “builds” the html interface for the end user, in effect, retrieving the data and
presenting the entry controls. Hence, this page is called the “Builder.” The “X” page
receives the edits and processes them, submitting the update and providing the status
message with the results, and is called the “Processor.”
The embed opportunities in the form procedures can be organized as follows:
Connection Object
This allows the developer to insert code before and after connecting to the database,
allowing, for example, modifying the connection string.
•
•
•
After Opening the Connection Object
Before Closing the Connection Object
Before Executing the Delete (Delete mode only)
Recordset Object
This allows the developer to insert code before and after accesses to the record set,
allowing, for example, calculation of values for hidden fields, such as extended totals,
before saving.
•
After Opening the Recordset Object
•
Before Closing the Recordset Object
•
Before the Update (Add and Edit modes only)
166
CLARION/ASP User’s Guide
•
After MoveFirst (this executes after opening the recordset and moving the cursor
to the first record; Edit and View modes only).
Merge Call
•
•
•
Before the Merge Call
Inside Merge Before Token Assignments Call
After the Merge Call
Status Merge Call (Delete Only)
The merge call for a delete procedure has no interaction with an HTML runtime template;
however, the status message that appears is indeed a “merge.” This embed category
provides the developer with the opportunity to insert code before and after the status
message which appears at a delete operation.
•
•
•
Before Status Merge Call
Inside Merge Before Token Assignments Call
After Status Merge Call
CLARION/ASP ASP Embeds
167
Examples
Form Embed
The example below modifies the customer view only update form from the Orders
example (see the Annotated Example book). The custom code uses the current
connection, declares a new recordset, defines the SQL select using the current customer
value, opens the Orders table (which otherwise would not have been open), retrieves the
orders for that customer, sorts them by date descending, gets the first (most recent) date,
assigns it to the user defined variable, then closes the record set. In the runtime template,
a symbol corresponding to the variable is placed at the bottom of the form, and at
runtime, the most recent order for that customer appears.
In effect, your custom code therefore performs a “related” task to that performed by the
Clarion/ASP procedure. It could just as easily have called a stored procedure, done some
other maintenance, etc.
Step One: Define the User Variable
•
Press the global extensions button.
•
Select the ASP extension.
•
Select the User Data tab.
•
Press the Insert button.
•
Name the variable to be used (ud_lastpurchase), press OK and return to the
application tree.
Step Two: Add the Code
•
Select the UpdateCustomers procedure in the application tree. Right click and
choose Embeds from the popup menu.
•
Locate the Clarion/ASP view mode nodes in the embed tree.
•
Select the ViewMode/BuilderPage/RecordSetObject/AfterMoveFirst/Code node
and press Insert.
•
Select Source Code/Source.
168
CLARION/ASP User’s Guide
We’ve commented the embed code (note that should you wish to cut and paste it into the
embed point you must clean up any word wrapping!):
' display last purchase date
' declare a new recordset and SQL string variable
' use some unique prefix to prevent name clashes
' with generated variable names
'
' Declare the new record set variable and the string
' for the new SQL select statement
DIM ud_oRSTemp, ud_MySQL
' Prepare the record set
SET ud_oRSTemp = Server.CreateObject("ADODB.Recordset")
' Initialize the SQL select statement
' Concatentate the current customer ID from the Customers recordset
' which is already open. Do not forget that that value is a string
' so you have to add the single quotes!
ud_MySQL = "SELECT dbo.Orders.OrderDate FROM dbo.Orders WHERE
dbo.Orders.CustomerID = '" & _
oRSCustomers.Fields("CustomerID").Value & "' ORDER BY
dbo.Orders.OrderDate DESC"
'
' Open the recordset using the existing connection object
' and move to the first record
ud_oRSTemp.Open ud_MySQL , objCN, adOpenStatic, adLockReadOnly
ud_oRSTemp.MoveFirst
' Test that it is not empty otherwise the customer never ordered
' anything and display the word never
IF (IsEmpty(ud_oRSTemp.Fields("OrderDate").Value) OR
IsNull(ud_oRSTemp.Fields("OrderDate").Value)) THEN
ud_LastPurchase = "Never"
ELSE
ud_LastPurchase =
FormatDateTime(ud_oRSTemp.Fields("OrderDate").Value, vbShortDate)
END IF
' Do not forget to clean up!
ud_oRSTemp.Close
SET ud_oRSTemp = NOTHING
•
Save the embed.
•
Within the extension properties for the procedure, check the “Do Not Generate
HTML” on the overrides tab (you must now edit the runtime template, and you
don’t wish to overwrite the changes at the next regeneration).
CLARION/ASP ASP Embeds
169
•
Save the .app and generate the ASP source.
•
Open html\UpdateCustomersView.htm in your HTML editor.
•
Add a symbol (perhaps at the bottom of the current form) for
@ud_lastpurchase@. Note that the ASP merge routine is case sensitive, so it
must match your declaration. If you wish it to match the rest of the fields on the
view form, be sure that to use the “input” class. Add a prompt, such as “Last
Purchase” to the runtime template, and optionally use the “label” class for the
prompt.
•
Deploy and test. The end result should look something like this:
Additional Form Embed
Since it’s a useful code snippet, and to better aid your understanding, the following code,
inserted at the same point above, and using a user defined variable called
ud_SumPurchases, queries the necessary tables and places the sum of all this
customer’s purchases (from the Order Details) into that variable. As before, we apologize
for any extraneous word wrapping:
'
'
'
'
'
display total purchases
declare a new recordset and SQL string variable
use some unique prefix to prevent name clashes
with generated variable names
170
CLARION/ASP User’s Guide
' Reuses the record set variable and the string
' for the new SQL select statement from the last embed
' DIM ud_oRSTemp, ud_MySQL
' Prepare the record set which was previous set to nothing
SET ud_oRSTemp = Server.CreateObject("ADODB.Recordset")
' Initialize the SQL select statement
' Concatentate the current customer ID from the Customers recordset
' which is already open. Do not forget that that value is a string
' so you have to add the single quotes!
ud_MySQL = "SELECT SUM([Order Subtotals].Subtotal) AS SumTotal,
Orders.CustomerID " & _
"FROM Orders INNER JOIN [Order Subtotals] ON Orders.OrderID =
[Order Subtotals].OrderID " & _
"WHERE Orders.CustomerID = '" &
oRSCustomers.Fields("CustomerID").Value & _
"' GROUP BY Orders.CustomerID"
' Open the recordset using the existing connection object
' and move to the first (and presumably only) record
ud_oRSTemp.Open ud_MySQL , objCN, adOpenStatic, adLockReadOnly
ud_oRSTemp.MoveFirst
' Test that it is not empty otherwise the customer never ordered
' anything and display the word none
' and use the vb format currency function with 2 decimals
IF (IsEmpty(ud_oRSTemp.Fields("SumTotal").Value) OR
IsNull(ud_oRSTemp.Fields("SumTotal").Value)) THEN
ud_sumPurchases = "No Orders"
ELSE
ud_sumPurchases = FormatCurrency(ud_oRSTemp.Fields("SumTotal").Value,
2, 0 )
END IF
' Do not forget to clean up!
ud_oRSTemp.Close
SET ud_oRSTemp = NOTHING
CLARION/ASP ASP Embeds
171
Browse Embed
The example below provides a line item total for the Order_Details table of the MS SQL
Server Northwind sample database. The fields used in the example are Quantity,
UnitPrice and Discount (Quantity times UnitPrice, minus Discount, equal the
LineItemTotal). Should you wish to create an equivalent example, wizard an application
on this table, set the Order_ID field as the range select (be sure that your URL includes a
valid ?ID1 parameter, such as ?ID1=10248), apply the global and browse template, and
then follow these steps:
Step One: Define the User Variable
•
Press the global extensions button.
•
Select the ASP extension.
•
Select the User Data tab.
•
Press the Insert button.
•
Name the variable to be used (ud_LineItemTotal), press OK and return to the
application tree.
Step Two: Add the Code
•
Select the BrowseOrder_Details procedure in the application tree. Right click and
choose Embeds from the popup menu. The “concept” for this example is that you
wish to calculate the value at the point for each row at which the code is ready to
place the values into the symbols in the HTML embeds, hence, the record set is
open to each of the records in turn, and your embed code can do a calculation on
the fields.
•
Select the RecordSetObject/AfterStartBuild/Code node and press Insert.
•
Select Source Code/Source.
172
CLARION/ASP User’s Guide
We’ve commented the embed code (note that should you wish to cut and paste it into the
embed point you must clean up any word wrapping!):
‘ First check that Quantity isn’t 0
IF oRSOrder_Details.Fields("Quantity").Value > 0 THEN
‘ Now you can get the recordset variables and calculate
ud_LineItemTotal = (oRSOrder_Details.Fields("Quantity").Value *
oRSOrder_Details.Fields("UnitPrice").Value) oRSOrder_Details.Fields("Discount").Value
ELSE
‘ otherwise, clear the variable
LineItemTotal = ""
END IF
Step Three: One More Line of Code
To make this work properly in case you’re at the end of the table, have only three rows of
data, but ten rows of “browse,” you’ll need to make sure the variable is cleared after each
pass. To do so:
•
Select the RecordSetObject/BeforeEndBuild/Code node and press Insert.
•
Select Source Code/Source.
Type the following code. All this line does is clear the variable after we’ve merged it into
the form:
ud_LineItemTotal = ""
CLARION/ASP ASP Embeds
173
The simple browse below contains no customizations, data formatting nor style sheet
customizations, but merely demonstrates the code. Note that the HTML runtime template
was edited with an HTML editor, a column inserted at the end with no style tag, and the
symbol @ud_LineItemTotal@ placed in the cell in that column.
174
CLARION/ASP User’s Guide
CLARION/ASP HTML Includes
Ch. 9:
175
HTML Includes
Clarion/ASP includes the ability to specify include files which will be incorporated into the
runtime HTML template, at the time the data is merged into the page. This provides for
server side include functionality. The include file may contain either HTML or javascript
(for client side execution).
Though not limited to only these three, the general areas of functionality that these
include points may provide for are:
•
Javascript function libraries for client side execution.
•
Standard “boiler plate” HTML sections such as company contact information or
even banner ads, which allow for a single update throughout a site whenever
something changes.
•
An almost “componentalized” approach to the HTML layouts for your application.
Through use of the HTML includes you can include different sections above and
below the Clarion/ASP elements on a procedure by procedure basis, allowing
you to provide related functionality to any procefure, based on the procedure.
Understanding the Process
The actual mechanism simply opens the include file and writes it into the runtime HTML
template at the time the end user requests the document; however to understand when
and where the include occurs will help you to use this feature to extend your applications.
To take advantage of this feature, your design time template must include the HTML
comments highlighted below. If you don’t use the includes feature, then they’re not
required. Note that it’s a simple matter to take a “blank.htm” file, auto generated by the
templates, and cut and paste the lines into an existing design time HTML template.
Finding the correct places in your design time template to insert the comments should be
a simple matter; just locate the proper tags (<html>, <head>, <title>, <body>) which will
no doubt be located in your design time template.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!--@HTML_AFTER_OPEN@-->
<head>
<!--@HEAD_AFTER_OPEN@-->
<title></title>
<!--@HEAD_BEFORE_CLOSE@-->
</head>
<body>
<!--@BODY_AFTER_OPEN@-->
<!--@BG_BEFORE_OPEN@-->
@Clarion/ASP@
<!--@BG_AFTER_CLOSE@-->
176
CLARION/ASP User’s Guide
<!--@BODY_BEFORE_CLOSE@-->
</body>
<!--@HTML_BEFORE_CLOSE@-->
</html>
The illustration below displays the template interface:
A note on the <bg> tags: the “after open” and “before close” <bg> tags in the template
interface refer to tags which will be inserted at the time the runtime templates are
generated (when you run the Generate All command in the development environment),
and are not present in the design time template. This allows you to provide for an include
inside the portion of the page which will include the Clarion/ASP components.
The template interface includes a tab on the Global extension called Includes. It provides
edit boxes corresponding to all the insertion points above. Type in a file name in a box or
boxes. Remember that the path must be a relative reference to the location of your asp
page within your web. (For example, should you place a file called myinclude.htm in the
project/asp/html directory, then the box should read html/myinclude.htm.
At the time that the end user requests the asp page that corresponds to the HTML
runtime template page, the script in the asp page will be executed, the merge function will
CLARION/ASP HTML Includes
177
read the runtime template and any “included” files, placing the content of the included
files into the spot chosen, and then turn the combined document over to IIS to output the
page.
What to Use it For
The most obvious uses are HTML boiler plate, javascript function libraries, include files
with meta tag keywords, and server side commands:
•
For boiler plate such as a standard site footer, simply include the file at the
@BODY_BEFORE_CLOSE@ symbol. Some may prefer to place the static
HTML directly in the design time template; it’s simply a matter of preference on
the developer’s part. Many web designers prefer to use includes for standard
boiler plate elements, and if that is the standard operating procedure at your site,
it’s a good idea to do it this way, and not incorporate it in the design template;
else, you must regenerate when the boiler plate information changes.
Should you wish to merely experiment, feel free to include the index.htm file
which will be automatically generated by Clarion/ASP, and you’ll see a “table of
contents” below your Clarion/ASP elements.
•
For java script function libraries, simply make sure that the <script> tags are
present in the include file, and place the include at the
@HEAD_AFTER_OPEN@ include. Note that should you wish to include more
than one file in one include point, you’ll create an include file that merely includes
the other include files, and that will be the file you place in the template interface.
•
For non printing HTML items such as meta tags, it may very well be the case that
you wish to define these on a procedure by procedure basis rather than on a
global basis (which might normally be done in the design time template).
Remember that you may override the includes on a procedure by procedure
basis, allowing you to create an include file only with the meta tags that you wish
for a specific procedure. By using the includes, the developer need not edit the
individual runtime HTML template for the procedure (saving the necessity of
editing four templates for an update procedure). The keyword usage of the meta
tag might typically be something like the following, and should be placed within
the <head> tags:
<META NAME =”keywords” CONTENT=”lions, tigers, bears>
It may also be the case that you wish to set cookies on a procedure by procedure
basis, which can also be done with an include, such as:
<META HTTP-EQUIV=”Set-Cookie”
CONTENT=”cookievalue=xxx;expires=Tuesday, 31-Dec-02 16:14:21 GMT;
path=/”>
178
CLARION/ASP User’s Guide
Note that IIS does not support HTML server side commands and functions such as those
typically used to obtain system environment variables such as the current time, the end
user’s IP address, and so forth. The preferred means to do this in IIS is ASP scripting.
You can access these through vbscript embed points, and output to a user defined
variable.
Final Notes
The procedure overrides provide exactly the same insertions as the global; the only
difference is that the explanatory text does not appear above the edit boxes. Remember
to check the override box to enable access to the sub tab.
CLARION/ASP ASP Source Procedure
179
Ch. 10: ASP Source Code Procedure
The function of the ASP Source Procedure template is to allow you to execute VBScript
code in-between pages. This provides for any number of possible applications that may
not be desired to execute until after a procedure is finished, such as redirection to other
pages of interest to the end user based on the outcome of the previous page, updating
counters, analysis pages which might summarize data after the end user has entered
data... because the developer may place any code whatsoever in the source code
procedure, you may use the source code procedure for whatever you can think of.
This is not meant as a substitute for triggers, but if the application uses MS Access, for
example, you may utilize the source code procedure for trigger-like functionality.
Additionally, the source code procedure provides an alternative to writing VBScript
embed code in multiple procedures, allowing you to place the code in a single page,
though this may not always be useful should the code need to reference elements such
as recordsets, which would still be in the procedure.
Application
To create an ASP source code procedure, add a procedure to the Application Tree by
selecting an existing procedure, then choosing Procedure > New from the development
environment menu. Name the procedure and choose Source as the type of procedure.
Once the Procedure Properties dialog opens, press the Extensions button, and apply the
ASPSource extension. (Note: you can apply the extension to existing procedures; we
simply suggest a new procedure for organizational purposes, and to make it easier to
remember where you placed the code.)
180
CLARION/ASP User’s Guide
Once the extension is applied, you will see a new embed node called Clarion/ASP for the
procedure, and you may use the Embeditor to write the ASP code.
At the time you apply the extension, you will also note a “page to return to” box. This will
be the page that the end user is redirected to after the source code procedure page
executes. This can be overwritten via a page parameter (?toURL).
CLARION/ASP ASP Source Procedure
181
At generation time, the page generated will be named in the format
ProcedureNameSource.asp. Note that a default security level of 1 is applied to the page,
should security be applied to the application. To change the security level, edit the
generated code.
Usage
The normal means of routing the end user to the source code page is either linking to it
as a normal HTML link from within the referring page, or setting the source code page as
the “page to return to” for the Actions of an Insert, Edit, or Delete page. The latter method
is more appropriate, since this is designed as something to execute between actions.
Assume a case in which a session variable is used to keep a running total of daily sales
by a particular representative for that session. It would be a simple matter to insert
embed code to display a user variable at the top of every page, and query the database
each time a new page displayed; but there’s no necessity to tax the DBMS with a query
which returns the same result every time except if an insert, edit, or delete was made
(this assumes no other operator may change the representative’s records). In this case,
the query could be stored as a source procedure, the result stored in the session
variable, and the source procedure could be called only after an edit change or delete.
The procedure to accomplish this would require the following steps:
•
Declare a the user defined variable for the running total, such as
ud_MyRunningTotal. When added in the global extension, Clarion/ASP
automatically creates the session variable.
•
Insert the @ud_MyRunningTotal@ symbol in the design time template, assuming
that the intention is to display the running total on every single procedure. (for
example, in this case the designer might create a box in a top corner of the page
in a bright color, and in the box, display the running total).
•
Create a source code procedure (named, for example, DisplayMyRunningTotal).
Set the “to URL” to whatever page is desired to be viewed after an operation, for
example, “MyStartPage.asp.”
•
Apply the ASP Source Code extension to the procedure.
•
Add embed code to the procedure declaring a connection object, running the
query, and storing the return value in the session variable (note: we apologize for
any word wrap problems):
182
CLARION/ASP User’s Guide
‘
‘Declare connection object, recordset, and query string
DIM objCN, oRSMyRecordSet, mySQL
‘
' create the connection object
Set objCN = Server.CreateObject("ADODB.Connection")
objCN.ConnectionTimeout = Application("app_ConnectionTimeOut")
objCN.CommandTimeout = Application("app_CommandTimeOut")
objCN.CursorLocation = Application("app_CursorLocation")
objCN.Open Application("app_ConnectionString")
CheckError
‘
‘Create the record set
SET oRSMyRecordSet = Server.CreateObject(“ADODB.Recordset”)
‘
‘ store the query in a string; assume this is representative # 123
‘ if this were a real application, we’d probably store the rep ID
‘ in a session variable and concatentate it to the query string!
mySQL = “SELECT SUM(ExtendedTotal) AS RunningTotal FROM dbo.ORDERS WHERE
dbo.ORDERS.RepID=123”
‘
‘ Open the recordset using the connection object
‘ and move to the first (and only) record
oRSMyRecordSet.Open mySQL , objCN, adOpenStatic, adLockReadOnly
oRSMyRecordSet.MoveFirst
‘
‘ Use the vb format currency function with 2 decimals
‘ and store it in the session variable
Session(“ud_MyRunningTotal”) =
FormatCurrency(oRSMyRecordSet.Fields(“RunningTotal”).Value,
2, 0 )
‘
‘ Clean up!
oRSMyRecordSet.Close
SET oRSMyRecordSet = NOTHING
‘
•
Save the embed, and then open the update procedure for Orders. On the Actions
tab, set the “Page to return to” for insert, update, and delete to (in this case)
DisplayMyRunningTotalSource.asp.
•
Generate and test.
CLARION/ASP ASP Source Procedure
183
184
CLARION/ASP User’s Guide
CLARION/ASP Style Sheet Editor
185
Ch. 11: Style Sheet Editor
The style sheet editor allows you to create your own style sheets and specify the fonts,
formatting, alignment, and positioning formatting for the parts of the tables and forms
you’ll be creating with Clarion/ASP. The concept is very simple: each of these parts has a
style class name which we’ve defined. The style sheet editor lists all the parts and allows
you to set the appearance options. These options are stored in a file (with an extension of
.CSS) for your use. You may make a style sheet in which the table background is blue.
You may create a different one for which the style sheet is red. It may be that you use the
one style sheet for one project, and the other for another. Or you may specify that one
browse use the first, and a second use the other. You may specify that two applications
use the same style sheet (just give it the same name and copy it to the styles directory),
promoting a uniform look. The only things which don’t change are the style classes
themselves; just the formatting options associated with them, which can vary from style
sheet to style sheet. You can create as many style sheets as you wish.
Note that the Annotated Examples manual provides a great deal of detail, including step
by step instructions for matching the colors and other formatting options used in the
sample applications.
For creating pages which seamlessly merge into an existing site, we recommend that you
collaborate with your web designer and have on hand the RGB values for the preferred
site colors and the font names used at the site. You may then duplicate those using the
style sheet editor.
Overall, the process by which you work with the style sheet editor is:
•
Create a new style sheet by name within the global extension template.
•
Use the style sheet editor to walk through the list of browse and form
components, and choose your formatting.
•
Deploy the .CSS file to your site when deploying the .ASP pages.
•
Should you wish to change only the site appearance, you may create another
.CSS sheet at any time, and simply place it at your site, overwriting the original
style sheet.
•
If you wish to use a style sheet from one project in another project, you must
copy it into the current styles directory and enter the style sheet file name, plus
the name of the data row style(s) into the new project. Turn off CSS generation in
the new project.
To begin the process of editing your style sheet, open the ASP global extension template,
and on the global tab press the Style Sheet Editor button.
186
CLARION/ASP User’s Guide
If editing an existing style sheet, select it and press Properties. To create a new style
sheet, press the Insert Button. To delete an existing style sheet, select it and press
Delete.
After choosing Insert or Properties, you may now format the individual elements in the
Style Sheet dialog.
There is one important thing to remember when choosing colors, through this dialog.
Because we’re using the default color pickers within the Clarion template interface, at the
top of the color picker dialog you’ll see the choice for Windows component colors (such
as the window background, button highlights, etc). As you know these are valid choices
for a Windows program, but invalid for an HTML application, unless using Cascading
Style Sheet specification 2.0, which means that older browsers will not be able to resolve
that color choice. Be sure to choose either a color box or a custom color. The template
system will resolve your choice to a hexadecimal value (red/green/blue).
CLARION/ASP Style Sheet Editor
187
Style Sheet Tab
The first tab provides an option of changing the style sheet name plus the ability to set
hyperlink formatting.
•
File Name: type in a valid file name. It will automatically receive a .CSS
extension.
•
Hyperlinks: you’ve probably observed that the default hyperlink colors for most
browsers are blue for unvisited, red for visited, and that the link appears
underlined. Other than that, a plain text link simply appears as plain text.
There are four possible states of a hyperlink which you may format individually.
For each state a button appears, and you may choose the exact formatting in the
subsequent dialog. The states are:
•
Normal: The hyperlink is unvisited, does not have the keyboard focus, and the
mouse is not over it.
•
Active: The hyperlink had keyboard focus. The normal browser behavior is to
display a dotted rectangle around it.
•
Hover: The mouse has paused over the hyperlink.
188
CLARION/ASP User’s Guide
•
Visited:The page pointed to by the hyperlink has been visited previously.
To format each of the options, press the appropriate button (labelled for each). The dialog
which appears contains a check box which specifies that you wish to override the default
browser settings (to undo your customizations at any time, simply uncheck the box).
The formatting options for each of the above categories are as follows:
•
Color: provides access to the Color picker dialog. Select a color from the boxes
or specify a custom color. Remember that should you choose an item from the
Standard Colors dropdown, such as desktop color, that this will be supported
only by CSS 2.0 compliant browsers (browser versions 5.x and higher). Please
note also that in some browsers, and in most operating systems, if the color
depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexidecimal (the Windows
Color Picker uses decimal, but HTML uses hex), in blue-green-red order,
prepended with a zero, and followed by an ‘h.”
•
Text Decoration: this provides simple text effects, i.e., underline, over-line (line
above), line through (crossed out) and blinking text.
•
Text Transformation: this provides simple character formatting options, i.e.,
capitalize, upper case, lower case, none, and inherit (from whatever tag this tag
is embedded in, i.e., from any page, table, etc. in the default template).
•
Font Style: normal or italic. Note that “bold” is provided for via Font weight.
CLARION/ASP Style Sheet Editor
189
•
Font Weight: note that this setting is comparative to the default browser font
settings. Choose from normal, lighter, bold, or bolder.
•
Font Size: note that this setting is comparative to the default browser font
settings. Choose from larger or smaller, or from extra-small to double-extra-large.
Body Tag Tab
The body style is particularly important in that it sets the width plus other major aspects of
the “background area” in which the browses and forms will display. If you set the body to
only 400 pixels wide, than your forms will be no wider than 400 pixels.
This tab presents the following options:
•
Width: specify a value either in pixels (the number you wish, followed by “px”
without the quotes, or, as a percent. To specify that the body should fill the
maximum width of the browser window (or of the frame, should you place the
generated ASP page inside a frame), enter 100%.
•
Background Color: choose a color from the color picker. Remember that your
browses and forms will be placed on top of the background; therefore don’t select
clashing colors. Note: to choose no color, delete any value in this box, or type
COLOR:NONE.
•
Text Alignment: choose left, right or center.
190
CLARION/ASP User’s Guide
•
Font Button:
Whenever you choose a font for web content, the formatting options must be
limited to what the majority of browsers will support. A web developer can’t
simply choose a font from their machine and specify it for a page element. The
end user may not have the same font. You should not even presume that fonts
that are standard with Windows, such as Arial or Times New Roman will exist on
the browser, because the browser may not be on the Windows platform.
Therefore, generic font lists can be specified, such as serif or sans-serif. Serifs
are the small hooks and curls at the ends of individual letters in some fonts. They
make fonts more readable, the theory being that the hooks and curves help the
eye move from letter to letter in a quicker motion. In the print world, traditionally,
large portions of text, such as articles usually are printed in a serif font, such as
Times, which is what this paragraph uses. Small bits of text such as headlines,
which stand out best for being “cleaner,” without the hooks, are usually
composed in a sans-serif font such as Helvetica, which is used in the section
headlines in this document. Note: “sans” is French for “without.”
For web development, what has generally transpired is that you provide a list of
fonts separated by quotes. For example: “Times New Roman, Times, SansSerif.” The browser checks to see if Times New Roman is present on the system.
If not, then it checks for Times. If there is still no match, then it checks the
browser preferences for the default serif font, of which there will certainly be one.
You can specify anything in such a font list, but in the real world, given the
penetration of the Windows platform, most font lists have settled on a few
Windows names such as Arial and Times New Roman.
Clarion/ASP adds Tahoma and Verdana to these. Tahoma comes with Microsoft
Office, and so is present on many machines. Verdana was specially designed as
a screen font (i.e., it looks good at low resolutions), and is distributed with
Internet Explorer, and thus present on even more machines than Tahoma.
CLARION/ASP Style Sheet Editor
191
The following options are present in the Font dialog:
•
Color: provides access to the Color picker dialog. Select a color from the boxes
or specify a custom color. Remember that should you choose an item from the
Standard Colors dropdown, such as desktop color, that this will be supported
only by CSS 2.0 compliant browsers (browser versions 5.x and higher). Please
note also that in some browsers, and in most operating systems, if the color
depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexidecimal (the Windows
Color Picker uses decimal, but HTML uses hex), in blue-green-red order,
prepended with a zero, and followed by an ‘h.”
•
Style: choose normal or italic.
•
Weight: choose lighter, bold or bolder.
•
Size: choose smaller or larger, or between extra-small to double-extra-large.
•
Family: as described above. The choice lists are: “Verdana, Arial, Helvetica,
Sans Serif,” “Tahoma, Arial, Helvetica, Sans Serif,” “Arial, Helvetica, Sans Serif”
“Times New Roman, Times, Serif,” “Courier New, Courier, monospace,” “serif,”
“sans-serif,” “cursive,” or “monospace.”
You will see the Font dialog at many points within the style sheet editor.
•
Margins Button:
The margins button sets up the spacing on the side of the text, top of page,
bottom of page, and left/right sides of the page.
You may choose a value from zero to ten in pixels for each side.
192
CLARION/ASP User’s Guide
Background Class Tab
The “class” refers to the browse and form tables; in other words, this tab sets the base
options for the tables which display your data.
This tab presents the following options:
•
Width: specify a value either in pixels (the number you wish, followed by “px”
without the quotes, or, as a percent for the data background area.
•
Color: provides access to the Color picker dialog. Select a color from the boxes
or specify a custom color. Remember that should you choose an item from the
Standard Colors dropdown, such as desktop color, that this will be supported
only by CSS 2.0 compliant browsers (browser versions 5.x and higher). Please
note also that in some browsers, and in most operating systems, if the color
depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
Data Tab
All your data is presented as a table within a table. The outside table is governed by the
Background Class, described previously. Placing tables within tables is a solution to the
limited page layout possibilities of HTML.
CLARION/ASP Style Sheet Editor
193
Therefore the Data tab is particularly important in that it provides the most immediate
place setting for your data. Within this tab are buttons that format all the data elements:
header (a header for the entire table), column headers, data rows, footer area (for
navigation) input labels (prompts), and inputs (the entry boxes and data controls
themselves).
Each of the buttons leads to additional options appropriate to formatting each of the
elements in turn.
•
Width: specify a value either in pixels (the number you wish, followed by “px”
without the quotes, or, as a percent for the actual data area of the HTML table.
•
Color: choose a color from the color picker. Remember that your browses and
forms will be placed on top of colors selected previously for other elements;
therefore don’t select clashing colors.
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
Borders Button - Data Tab
This formats the rules (or lines) that surround the data grid. You may format the top,
bottom and sides separately, specifying:
194
CLARION/ASP User’s Guide
•
Width: specify thin, medium, thick, or zero to ten pixels.
•
Style: specify dotted, dashed, solid, double, groove, ridged, inset, outset or none.
•
Color: provides access to the Color picker dialog. Select a color from the boxes
or specify a custom color. Remember that should you choose an item from the
Standard Colors dropdown, such as desktop color, that this will be supported
only by CSS 2.0 compliant browsers (browser versions 5.x and higher). Please
note also that in some browsers, and in most operating systems, if the color
depth is not set to 24 or 32 bit, there may be color substitutions.
Margins Button - Data Tab
The margins button sets up the spacing on the side of the data grid, top, bottom, and
left/right sides.
You may choose a value from zero to ten in pixels for each side.
Padding Button - Data Tab
This sets interior margins for the data cells. You may choose a value from zero to ten in
pixels for each side. Note that padding differs from margins, in that padding values may
be added to the normal height and width values for the particular element, whereas
margins may not, depending on the element and possibly, the browser.
CLARION/ASP Style Sheet Editor
195
Header Button - Data Tab
The header is the equivalent to a caption bar area, in effect being the place in which the
data grid’s “title” appears.
You may set the following options:
•
Background Color: provides access to the Color picker dialog. Select a color
from the boxes or specify a custom color. Remember that should you choose an
item from the Standard Colors dropdown, such as desktop color, that this will be
supported only by CSS 2.0 compliant browsers (browser versions 5.x and
higher). Please note also that in some browsers, and in most operating systems,
if the color depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
•
Text Alignment: choose from left, right, or center.
•
Font (button): choose the color, style, weight, size and family from the dialog.
This dialog is identical to other font dialogs throughout the style sheet editor.
•
Padding (button): set the inside padding for left, right, top and center in pixels
from zero to ten. This dialog is identical to other padding choices dialogs
throughout the style sheet editor.
196
CLARION/ASP User’s Guide
Column Label Button - Data Tab
The column label is the header at the top of each column, functioning as the place where
you name the column. Note that Clarion/ASP automatically adds an up/down arrow on
the sorted column to indicate the sort order.
You may set the following options:
•
Background Color: provides access to the Color picker dialog. Select a color
from the boxes or specify a custom color. Remember that should you choose an
item from the Standard Colors dropdown, such as desktop color, that this will be
supported only by CSS 2.0 compliant browsers (browser versions 5.x and
higher). Please note also that in some browsers, and in most operating systems,
if the color depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
•
Text Alignment: choose from left, right, or center.
•
Font (button): choose the color, style, weight, size and family from the dialog.
This dialog is identical to other font dialogs throughout the style sheet editor.
•
Padding (button): set the inside padding for left, right, top and center in pixels
from zero to ten. This dialog is identical to other padding choices dialogs
throughout the style sheet editor.
Data Rows Button - Data Tab
Clarion/ASP allows you to optionally format rows based upon either an odd/even order
(improves readability), or upon a conditional test based upon some value you define,
usually based upon the value in a particular column.
You must name each style option within this dialog (you may think of this as a style name
for each condition), and set the formatting options here. Within the browse properties,
you will set the conditions and choose the conditional style. The first style named in the
CLARION/ASP Style Sheet Editor
197
list within this dialog acts as the default formatting should you not set a condition within
the browse.
Note that these row styles can be applied to individual cells via conditional column
formatting. For example, if you wish to create a style with a red background and yellow
letters, you may specify it here.
Then, when you wish either a row or cell to stand out based upon a data value, you
specify the different style as a conditional style. Therefore, you must define at least two
styles so that one can “stand out.” If you expect to use a green bar effect, but want to
make selected cells or columns stand out, you’ll require a third data row style.
The first step is to create your style option names.
•
Insert: press Insert to create a new name.
•
Properties: press Properties to edit an existing name.
•
Delete: press Delete to delete an existing name.
•
Up/Down: you may use the up and down arrow buttons to move a style name
into the first position, which is the one that acts as the default.
•
Grid Line Size: sets the lines within the data grid. Choose between zero and
nine pixels.
198
CLARION/ASP User’s Guide
Within the Properties for each of the style option names, you may set the following
options:
•
Name: this allows you to rename the style option name.
•
Background Color: provides access to the Color picker dialog. Select a color
from the boxes or specify a custom color. Remember that should you choose an
item from the Standard Colors dropdown, such as desktop color, that this will be
supported only by CSS 2.0 compliant browsers (browser versions 5.x and
higher). Please note also that in some browsers, and in most operating systems,
if the color depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexidecimal (the Windows
Color Picker uses decimal, but HTML uses hex), in blue-green-red order,
prepended with a zero, and followed by an ‘h.”
•
Text Alignment: choose from left, right, or center.
•
Font (button): choose the color, style, weight, size and family from the dialog.
This dialog- is identical to other font dialogs throughout the style sheet editor.
•
Padding (button): set the inside padding for left, right, top and center in pixels
from zero to ten. This dialog is identical to other padding choices dialogs
throughout the style sheet editor.
Footer Button: Data Tab
The footer provides the background area at the bottom of the data grid or form, upon
which the navigational controls appear. You may set the following options:
CLARION/ASP Style Sheet Editor
•
199
Background Color: provides access to the Color picker dialog. Select a color
from the boxes or specify a custom color. Remember that should you choose an
item from the Standard Colors dropdown, such as desktop color, that this will be
supported only by CSS 2.0 compliant browsers (browser versions 5.x and
higher). Please note also that in some browsers, and in most operating systems,
if the color depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
•
Text Alignment: choose from left, right, or center.
•
Font (button): choose the color, style, weight, size and family from the dialog.
This dialog is identical to other font dialogs throughout the style sheet editor.
•
Padding (button): set the exterior padding for left, right, top and center in pixels
from zero to ten. This dialog is identical to other padding choices dialogs
throughout the style sheet editor.
Input Label: Data Tab
The input label is the prompt for your update form data controls. You may set the
following options:
•
Background Color: provides access to the Color picker dialog. Select a color
from the boxes or specify a custom color. Remember that should you choose an
item from the Standard Colors dropdown, such as desktop color, that this will be
supported only by CSS 2.0 compliant browsers (browser versions 5.x and
higher). Please note also that in some browsers, and in most operating systems,
if the color depth is not set to 24 or 32 bit, there may be color substitutions.
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
200
CLARION/ASP User’s Guide
•
Text Alignment: choose from left, right, or center.
•
Font (button): choose the color, style, weight, size and family from the dialog.
This dialog is identical to other font dialogs throughout the style sheet editor.
•
Padding (button): set the exterior padding for left, right, top and center in pixels
from zero to ten. This dialog is identical to other padding choices dialogs
throughout the style sheet editor.
Input: Data Tab
The input formatting options work differently for update forms vs. view only forms. In both
cases, the formatting affects the HTML table cell. For an update form, the table cell
contains not text but an HTML control. The control will take on the appearance of
whatever the host operating system specifies for that type of control; the style sheet does
not format the control. The background of the cell in which the control is contained will
adopt the appearance of the formatting options you place here. In other words, you can’t
specify the font/style/color of the text the user types inside an edit box; you will specify
the background color outside the edit box. This applies to update forms only. For viewonly forms, the html places text formatted exactly to your specifications.
The option of formatting color, etc. appears for data in update forms for three reasons: for
consistency; for those who wish to edit the cell after generating the ASP page; and most
importantly, for View Only forms and fields, which dispense with the control and simply
print the data in the cell.
You may set the following options:
•
Background Color: provides access to the Color picker dialog. Select a color
from the boxes or specify a custom color. Remember that should you choose an
item from the Standard Colors dropdown, such as desktop color, that this will be
supported only by CSS 2.0 compliant browsers (browser versions 5.x and
higher). Please note also that in some browsers, and in most operating systems,
if the color depth is not set to 24 or 32 bit, there may be color substitutions.
CLARION/ASP Style Sheet Editor
201
Note that the color value returned by the picker will be hexadecimal (the
Windows Color Picker uses decimal, but HTML uses hex), in blue-green-red
order, prepended with a zero, and followed by an ‘h.”
•
Text Alignment: choose from left, right, or center.
•
Font (button): choose the color, style, weight, size and family from the dialog.
This dialog is identical to other font dialogs throughout the style sheet editor.
•
Padding (button): set the exterior padding for left, right, top and center in pixels
from zero to ten. This dialog is identical to other padding choices dialogs
throughout the style sheet editor.
202
CLARION/ASP User’s Guide
Style Sheets
After defining at least one style sheet, you may press the button and choose your default
global styles from the dropdown boxes. You may override the choices within each
procedure. The style sheets specify color, style, alignment, and sizing for each of the
components which appear in the generated pages. As you will note in the chapter that
documents the Style Sheet Editor, Clarion/ASP allows you to customize the appearance
of each individual element to if not the maximum allowable with HTML, then very close to
it.
Desktop developers may have to make a slight adjustment in their thinking in regards to
differences between those controls allowed by the Windows operating system, and those
provided under HTML 4.0 standards. We have tried to highlight the most major
differences in this chapter on the Style Sheet Editor.
The choices to implement within this dialog are as follows:
•
Global: sets the global style sheet choice if no other choice is set.
•
List: sets the style sheet choice for browse procedures should the procedure not
override.
•
Form: sets the style sheet choice for update and query procedures should the
procedure not override.
•
Help: sets the style sheet choice for help text windows should the procedure not
override; though should you create your own HTML help pages, they will not
apply unless you link the style sheet and use the style names. Such a task is
much easier with an HTML editor than using a text editor.
CLARION/ASP Index
203
Index:
?WHR...................................................... 158
<a> .......................................................... 131
<A>.................................................. 136, 158
<br> ......................................................... 126
access level............................................... 35
Actions tab............................................... 144
Add Button................................................. 89
Add Procedure ........................................ 124
Additional Cell Style ................................ 134
Additional Parameters............................. 130
Additional Row Style ....................... 116, 134
Administration.......................................... 109
ADO.....................24, 25, 36, 39, 46, 97, 109
Alert Text Message ................................. 153
alignment................................................. 185
Alignment ........................................ 133, 135
All Data.................................................... 123
ALT text ..................................................... 90
Annotated Examples ......................... 37, 185
Anonymous Access............................. 44, 67
Appearance ............................................. 151
application directory .................................. 66
application object ...................................... 29
Application Protection ............................... 23
Application Timeout................................... 73
application wizard...................................... 11
Ascending/Descending Sort.................... 132
ASP Script Timeout................................... 23
Automatic Detail Link .............................. 135
Back Button ............................................... 87
Background Class ................................... 192
Body Tag ................................................. 189
Borders.................................................... 193
Browse extension template ..................... 114
Browse template ....................................... 47
Browse to Browse ..................................... 55
Builder page ............................................ 147
calendar................................................... 151
Calendar Popup ........................................ 91
Cannot be Null ........................................ 153
Caption ............................................ 151, 157
cascading style sheets .............................. 78
Cascading Style Sheets .............................. 9
CDONTS .................................................109
checkbox on query form ..........................152
child browse...............................................55
Clear Filter ...............................................123
Clear Filter Prompt ....................................90
client side validation ....................13, 31, 153
Client/Server..............................................25
Color picker dialog...................................191
Column Header Text ...............................131
column label ............................................196
Column Name..........................................135
Column to Test ........................................134
Column With Value to Return..................121
Combo Options........................................156
Command Timeout....................................98
conditional row formatting .......................115
Conditional row formatting.......................116
connection builder .....................................98
Connection Builder ............................14, 104
connection object ................................25, 82
connection pooling ....................................24
Connection Properties...............................98
connection string ...................................9, 42
Connection String......................................46
Connection Timeout ..................................98
Control Location ......................................157
Control Name ..........................................156
Cookies....................................................108
Create column as a Link..........................130
Create Detail Link......................................88
Create this as a Link................................157
Create this Column as Link .....................136
Custom Controls......................................156
custom link...............................................134
Custom Link.............................130, 131, 157
Data Column to Pass ......................130, 157
Data Columns..........................................125
data dictionary ...........................................11
Data Records per HTML List.....................88
Data Row.................................................134
database dictionary .............................10, 31
Debug mode ..............................................96
Default Cell Style .....................................134
204
Default Row Style.................................... 116
Default SQL............................................. 124
default web site ................................... 65, 69
Delete ...................................................... 143
Delete Form............................................... 54
Delete Row.............................................. 149
Design Time HTML Template ................... 75
Directory Security...................................... 67
Display Column ....................................... 156
do not populate ......................................... 10
Do Not Populate ........................................ 12
DreamWeaver ........................................... 74
Edit .......................................................... 143
email........................................................ 140
Email ....................................................... 109
E-Mail ...................................................... 106
embed point............................................. 147
Enable Buffering........................................ 23
Enable Cell Style ..................................... 134
Enable Security ....................................... 118
Enable Sorting by this Column................ 131
Enhanced ADO Error Reporting.............. 110
Enter Display Text................................... 157
Execute Permissions................................. 66
Execute Scripts ......................................... 43
Field Lookup Buttons ................................ 14
File Drop Lists ........................................... 14
file loaded list box.................................... 155
File Properties ........................................... 12
font .................................................. 185, 190
Font ......................................................... 188
Form Button Text ...................................... 93
Form Defaults............................................ 91
form extension......................................... 139
form fields.................................................. 79
Form Message Text .................................. 93
Form Primary Table ................................ 149
form template ............................................ 48
Form Titles ................................................ 93
Form Validation ......................................... 95
formatting ................................................ 185
Formatting Function ................................ 133
formatting options.................................... 185
formatting tags........................................... 27
ftp server ................................................... 74
Full Pathname ........................................... 12
generation ................................... 61, 77, 185
CLARION/ASP User’s Guide
Generation...........................................95, 96
global extension.........................................85
global extension template..........................14
global template ..........................................46
Global Template ........................................46
Global.ASA ................................................70
GLOBAL.ASA ............................................25
greenbar ..................................................116
header .....................................................195
help..........................................................148
Help ...........................................................61
Help Link....................................................87
Help Pages ................................................97
Help URL ...........................................61, 120
Home Directory..........................................23
Hover .......................................................187
HTML controls ...........................................34
HTML design time template ......................14
HTML editor.........................................35, 75
HTML Element.........................................155
HTML Form Element ...............................151
HTML Pages..............................................96
HTML parameter .......................................81
HTML run-time template............................32
HTML template ................................9, 35, 75
Hyperlink..................................................136
hyperlink colors........................................187
ID Value Column .....................................138
Image Button ...................................137, 159
Image Column .................................138, 159
Image Sizes.............................................112
images .......................................................32
Images.....................................................111
Include in the SQL Select But Do Not
Display .................................................128
Include With Prior Column.......................128
index.htm ...................................................81
input label ................................................199
Insert........................................................143
Internet Information Server..............9, 17, 65
Internet Services Manager ........................65
ISAM databases ........................................11
Javascript ..................................................13
JOIN ................................................122, 125
key .............................................................12
Key ............................................................48
Key to Pass .............................................130
CLARION/ASP Index
LIKE......................................................... 123
link ......................................... 55, 81, 83, 134
Link............................................................ 51
links ....................................................... 9, 27
list defaults ................................................ 88
localhost .................................................... 72
Location................................................... 135
locator........................................................ 90
Locator .................................................... 123
Login Screen Text ................................... 107
Lookup..................................................... 153
Lookup SQL ............................................ 156
margins............................................ 191, 194
Maximum Characters .............................. 152
menu ......................................................... 34
merge ........................................................ 75
Microsoft Access ................................. 11, 25
Microsoft Jet Engine............................ 25, 36
Microsoft Management Console ............... 65
Microsoft SQL Server................................ 40
MS Access .............................................. 105
MS SQL Server ....................................... 104
Must Be In File ........................................ 153
Must be in List ........................................... 95
Must Be In List ........................................ 153
Must be in Numeric Range...................... 153
Must be in table ......................................... 15
Must be in Table.................................. 33, 59
My Records .........32, 35, 116, 118, 140, 152
Navigation Bar........................................... 89
nbsp;........................................................ 127
No Records Found .................................... 90
No Validation ........................................... 153
Northwind sample database.... 119, 141, 150
NT Option Pack......................................... 21
Numeric Field ............................................ 95
ODBC ........................................................ 98
ODBC database drivers ............................ 36
ODBC DSN ............................................... 39
ODBC tracing ............................................ 39
OLE DB ..................................................... 36
OLE DB provider ..................................... 101
OLE Provider for ODBC ............................ 39
Omit From QBF Page ............................. 152
Order clause............................................ 125
override ................................................... 115
Override................................................... 139
205
Padding ...................................................194
Page Naming Conventions........................82
Page Title ................................................120
parent browse............................................55
Parent Browse .........................................147
Pass this Data .................................130, 157
pixels .......................................................133
Populate ..................................................156
Populate From .................................137, 157
Populated From ...............................121, 125
popup calendar........................................112
popup window............................................97
precision ..................................................150
Primary File ...............................................48
Primary Table ..........................................122
Procedure Link ................................130, 157
Processor page .......................................147
Processor Pages .......................................31
project directory .........................................22
Provider ...................................................101
QBF Procedure........................................120
Query by Form.............................50, 54, 147
Query By Form Button...............................89
query form .................................................49
Range Limit .......................................55, 128
range select ...............................................50
Read Only................................................152
read only form..........................................144
Read Permission .......................................43
Regenerate SQL..............................124, 149
repeat add ...............................................147
Repeat Add Mode ...................................146
Request and Response objects ................29
Required Field .....................................92, 95
resultset .....................................................25
return mechanism....................................145
Return to Filtered Browse........................146
Row Style ................................................115
Rows and Columns .................................152
Run Time HTML Template ........................76
runtime user ID ..........................................98
scalable .....................................................36
Search .....................................................143
Search Mode .............................................92
secure http.................................................35
security ..............................................12, 140
Security............................................115, 119
206
Security Level.................................. 107, 143
security model ................................... 32, 105
security options ......................................... 14
security scheme ........................................ 35
select browse ...................... 57, 97, 121, 154
Select Mode Procedure........................... 121
Select Options ......................................... 155
Session Timeout ....................................... 23
session variable ................ 82, 119, 137, 140
Session Variable to Pass ................ 130, 157
SESSION() .............................................. 158
shopping cart........................................... 134
Show Help ................................................. 86
Site Title .................................................. 109
smtp......................................................... 109
SQL .............................25, 36, 122, 124, 149
SQL date/time field.................................. 127
SQL Delimiters ........................................ 105
SQL for Selection .................................... 149
Standard Colors ...................................... 191
stateless ................................................ 9, 81
stateless protocol ...................................... 29
Static Entry ...................................... 130, 157
status message ....................................... 147
status messages ..................................... 143
Status Text ................................................ 94
style sheet ........................................... 9, 202
Style Sheet ................................................ 96
style sheet editor ..................................... 185
style sheets ............................................... 32
Table Title................................................ 122
Table With Image .................................... 159
target ......................................................... 79
Target Column ........................................ 156
Target Language....................................... 86
target page .............................................. 147
template chains ......................................... 13
test/debug page ........................................ 72
CLARION/ASP User’s Guide
Test/Debug page.......................................96
Text Alignment.........................................189
Text Decoration .......................................188
Text Transformation ................................188
timeout.......................................................35
token..........................................................76
Tool Tip....................................................151
Tool Tips....................................................90
tooltips .......................................................12
Tooltips ......................................................87
triggers.......................................................12
TRN file......................................................86
TRN files....................................................36
Type of Procedure...........................131, 157
unencrypted...............................................35
Unique ID Column ...................................156
Unique Key ......................................122, 149
Update Form........................................51, 54
URL ...........................................................49
URL parameters ........................................32
User Based Security................................106
user defined variable ...............................147
User Table ...............................................106
Validity Checks ............................................9
Value Column ..........................................156
variant........................................................29
VBScript.........................17, 27, 29, 137, 158
view ...........................................................12
View.........................................................143
View Form .................................................91
Virtual Directories ......................................22
virtual directory ..........................................65
web designer .....................................32, 185
Where clause...........................................125
Width .......................................................133
window control types .................................13
Window Size..............................................97
Windows XP ........................................40, 67