tags should be in upper case
"Despite being recommended in
the HTML 4.0 standard that tags should be
specified in lower
case, for ease of reading we have chosen to display
HTML tags in
upper case throughout the book and all script in lower
I don't think the WWW Consortium would agree with You
statement. Here's a quotation from the HTML 4.0
"Element names are written in uppercase letters
(e.g., BODY). Attribute
names are written in lowercase letters
(e.g., lang, onsubmit). Recall that in
HTML, element and
attribute names are case-insensitive; the convention
is meant to
So You're text would be more accurate
"As being recommended in the HTML 4.0 standard and
for ease of reading
chosen to display HTML tags in
upper case throughout the book and all
in lower case."
A new ODBC database connection is only establish IF
the pool ...
"it" is there now instead of "if"
On page 60 the screen shot at the top of the
page is accidently duplicated at the bottom of the page. However,
nothing is missing, it was just an accidental repeat.
letter d at start of 4th code block
In the fourth block of
code there is a missing 'd' at the beggining of the
atFirstDay = DateSerial (intThisYear, intThis
datFirstDay = DateSerial
(intThisYear, intThis Month, 1)
Thanks to Gregor McHardy for
pointing out this error.
Then we check to see if the value of intPrintDay is greater
that the last day of the month
we check to see if the value of intPrintDay is greater than
the last day of the month
the wrong way around
the diagram on page 83 under the
Object Model Structure".
direction of the arrows, the diagram seems to indicate that
Request object's data comes from the SERVER and is sent to
and that the Response object's data comes from the
CLIENT and goes to
the SERVER. They should be reversed!
use POST method, not GET in example at bottom of page.
the code example on page 95 you should use METHOD="POST" on the
first line. Not GET as it suggests for the form to work
On page 96 in the second grey box the line which reads
strComps = Request.Form("numComps")
strComps = Request.Form("grpnumComps")
and in the
first grey box on page 97 instead
= sign in VBScript function
On the seventh line of the
second grey box on page 100 the = sign should be ommitted, so
if inStr(uAgent, "4.") >= 0 then
if inStr (uAgent, "4.") >0 then
characters with MapPath
Despite the claims after the last
example on p.129, MapPath does not
support "..", or so my server
Server.MapPath() error 'ASP 0175'
Disallowed Path Characters
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/importnewemp.asp, line 27
The '..' characters are not allowed in the Path parameter
instead of Var
The code fragment incorrectly uses the var
keyword in object reference
assignment instead of the VBScript
set keyword. The text below the code
fragment correctly says
"Notice the use of the set keyword...".
Object diagram should not show properties.
On page 131 the
diagram at the bottom shows Properties for the Application Object.
It should not show this as there are not any.
Stephane Bertin for poitning this out.
names do not match
There is a variable in the first grey box
Application.Value("DateTime") = Now()
which, in the
second grey box is different
these must be changed for consistency so that they both
so the second one should now
not closed in second code box.
The second code box on the
bottom half of page 135 has a closing quote mark missing after
objASPEXT. The box should read:
In the second section of code on page 140,
the session property is incorrect.
For Each staticItem in
For Each staticItem in
Thanks to Brian Becker for pointing out
the Methods window of the ObjectContext box should
SetComplete and SetAbort. Instead of SetAbort the box reads
The text on the following page is correct however.
Stream object example will not show error
In the last
paragraph, we say that the function WriteToLogFile is supposed to
return True on success, and False otherwise. But because of
On Error Resume Next
clause, the last line of the
WriteToLogFile = True
and the function returns True.
You should use:
Err.number<>0 Then WriteToLogFile = True
or as a
4.0 component object call
If you download the Content
rotator component from IIS 4.0 the correct object call should
Set objMyContent =
Todd Lewis for pointing this out.
This note concerns the suggested syntax
TargetFrame property (line 6):
use this syntax, you may find that the the
attribute of the
<A> tag is not generated as
Instead, try the following syntax:
Or, to be more 'tidy', you could use
objAdRot.TargetFrame="TARGET=" & QUOT &
"fraAdFrame" & QUOT
Thanks to Cory Healey
On page 183 of ASP 2.0 the examples on the page
use AdRedirect.asp as
the page used as the redirection file but
the text below refers to
to missing Chapter 12
In the Active Server Components
chapter, there is a reference to a chapter 12 "Building Sever
Components". Unfortunately this chapter was deemed not of high
enough quality to go into the book and was removed before
publication. The information on building server components can be
found at the end of chapter 6 and in chapter 16. There is no extra
information on the Permission Checker Component. Keep your eyes
peeled on the web site for extra information on building server
components which will appear shortly.
is a parameter of the Open method not of an ADO recordset
"Options" is a parameter for the Open method of an ADO
recordset. It is not a property of an ADO recordset. The code as
listed at the top of page 236 generates an error, so you could
define the properties of the recordset, then use the "Options"
parameter of the Open method:
Set oRs =
oRs.ActiveConnection = "Contacts"
oRs.Open , , , ,
Assuming, of course, that you've defined the
constant adCmdTable elsewhere in the page, or have included
Thanks to Todd Lewis for pointing this out.
SkipCurrent to True for successive finds.
???If performing successive finds you would generally
want to set SkipCurrent to False???
performing successive finds you would generally want to set
SkipCurrent to True???
Thanks to Stephen Korow for pointing
In the bottom code section on P 246 there
is one too many closing delimeters, remove the one after the
Thanks to Jakob
Hussfelt for pointing this out to us.
Line near bottom of p263
On page 263, at the bottom, there
is a line gap in the code example.
In the blank line you should
line p270 - incorrect code
The third line of code on page
270 which reads:
Set oRS = oConn.Execute(Query)
Set oRS = oConn.Execute(strQuery)
Stephen Korow for pointing out this error.
In the second grey box at the bottom of page
344 the first SQL statement that reads
strSQL = "SELECT
UserName, UserPword FROM UserDetails WHERE UserName = '" _
Request.Form("txtUserName") & "')"
strSQL = "SELECT Username, UserPword FROM UserDetails
(Username ='" & Request.Form("txtUsername") &
Thanks to Jeff Briggs for pointing out this mistake.
The 1st paragraph of page 428 (after the "code
The dialog box is displayed using the
showModelDialog method of the
window object. It should be the
showModalDialog method (Modal, not Model)
text for TRANSREC table
The TransactionID field should be
declared both Int and
The book only has "Int". If
you leave off the "Identity" when
create the table, the
ODBC error you get is "The column
TransactionID in table
TRANSREC may not be null." Here's the
complete text for creating
the TRANSREC table:
create table TRANSREC (
The relational logic in the shaded box in the bottom of
page is incorrect. The line that reads
Left(CStr(cWithdrawl),5) <> "ERROR" or cWithdrawl
Left(CStr(cWithdrawl),5) <> "ERROR" and cWithdrawl
Similarly, the line that reads
Left(CStr(cDeposit),5) <> "ERROR" or cDeposit <>
<> "ERROR" and cDeposit = xferAmt
Key Not Private
There is an error at page 505 in the schema
"Signed document" :
decrypt must use public key obtained from CA
and not the private as
all of the e-commerce code is printed.
Please note, the
e-commerce case study does not feature all of the code in the
printed copy. It is an accompaniment to the download file.
To see all of the code you need to download the zip file
from the Web site http://webdev.wrox.co.uk/books/1266/
apologise for any confusion that this may have caused.
can also download further installation instructions should you
require them, availabe from the same site.
The third code block reads:
myRSObj.X = "ABC"
myRSObj.Z = "999"
myRSObj.X = "GHI"
myRSObj.Z = "777"