The American President Series

The American Presidents Series - About The SeriesThe American Presidents Series - Book ListThe American Presidents Series - The AuthorsThe American Presidents Series - Interactive Timeline
The American Presidents Series - Bonus MaterialThe American Presidents Series - Email UpdatesThe American Presidents Series - About Henry Holt

" end if end if if IsObject(fp_rs) then FP_Close(fp_rs) FP_Close(fp_conn) end if set fp_dictInputs = Nothing set fp_rs = Nothing set fp_cmd = Nothing set fp_conn = Nothing FP_RestoreLocaleForPage %>

The American Presidents Series
The American Presidents Series
The American Presidents Series
The American Presidents Series

Join the
mailing list



Visit The
History Reader

The American Presidents Series

The American Presidents Series

" end if fp_fError = True Else ' Check for the no-record case if fp_rs.State <> 1 then fp_fError = True Response.Write fp_sNoRecords ElseIf fp_rs.EOF And fp_rs.BOF Then fp_fError = True Response.Write fp_sNoRecords end if end if end if ' determine whether or not provider supports Absolute Positioning if not fp_fError then if IsObject(fp_rs) and not(fp_rs.Supports(&H00004000)) then fp_iPageSize = 0 fp_fShowNavbar = False end if end if ' move to correct position in result set if not fp_fError then if fp_iPageSize > 0 then fp_iAbsPage = 1 fp_sVal = Session(fp_sEnvKey) if fp_sVal <> "" then fp_iAbsPage = CInt(fp_sVal) end if fp_rs.PageSize = fp_iPageSize if fp_iAbsPage > fp_rs.PageCount then fp_iAbsPage = fp_rs.PageCount fp_rs.AbsolutePage = fp_iAbsPage if fp_rs.PageCount = 1 then fp_fShowNavbar = False select case fp_sMoveType case "" ' do nothing case fp_sFirstLabel fp_rs.AbsolutePage = 1 case fp_sPrevLabel if fp_rs.AbsolutePage > 1 then fp_rs.AbsolutePage = fp_rs.AbsolutePage - 1 case fp_sNextLabel if fp_rs.AbsolutePage < fp_rs.PageCount then fp_rs.AbsolutePage = fp_rs.AbsolutePage + 1 case fp_sLastLabel fp_rs.AbsolutePage = fp_rs.PageCount case else ' do nothing end select fp_iAbsPage = fp_rs.AbsolutePage Session(fp_sEnvKey) = fp_iAbsPage end if end if if fp_fError then fp_fShowNavbar = False fp_iCount = 0 Do if fp_fError then exit do if fp_rs.EOF then exit do if fp_iPageSize > 0 And fp_iCount >= fp_rs.PageSize then exit do if fp_iMaxRecords > 0 And fp_iCount >= fp_iMaxRecords then ' MaxRecords didn't work; exit loop fp_fShowNavbar = False exit do end if %>

The American Presidents Series
The American Presidents Series
 

<% Sub FP_SetLocaleForPage On Error Resume Next Session("FP_OldCodePage") = Session.CodePage Session("FP_OldLCID") = Session.LCID Err.Clear if FP_CodePage <> 0 then Session.CodePage = FP_CodePage if Err.Number <> 0 then Session.CodePage = Session("FP_OldCodePage") end if Err.Clear if FP_LCID <> 0 then Session.LCID = FP_LCID if Err.Number <> 0 then Session.LCID = Session("FP_OldLCID") end if End Sub Sub FP_RestoreLocaleForPage On Error Resume Next if Session("FP_OldCodePage") <> 0 then Session.CodePage = Session("FP_OldCodePage") end if if Session("FP_OldLCID") <> 0 then Session.LCID = Session("FP_OldLCID") end if Err.Clear End Sub Function FP_HTMLEncode(str) FP_HTMLEncode = str FP_HTMLEncode = Replace(FP_HTMLEncode,"&","^^@^^") FP_HTMLEncode = Server.HTMLEncode(FP_HTMLEncode) FP_HTMLEncode = Replace(FP_HTMLEncode,"^^@^^","&") End Function Function FP_FieldVal(rs, fldname) FP_FieldVal = FP_HTMLEncode(FP_Field(rs, fldname)) if FP_FieldVal = "" then FP_FieldVal = " " End Function Function FP_Field(rs, fldname) If Not IsEmpty(rs) And Not (rs Is Nothing) and Not IsNull(rs(fldname)) Then Select Case rs(fldname).Type Case 128, 204, 205 ' adBinary, adVarBinary, adLongVarBinary FP_Field = "[#BINARY#]" Case 201, 203 ' adLongVarChar, adLongVarWChar if rs(fldname).DefinedSize > 255 then ' check for Access hyperlink fields (only absolute http links) fp_strVal = rs(fldname) fp_idxHash1 = InStr(LCase(fp_strVal),"#http://") if fp_idxHash1 > 0 then fp_idxHash2 = InStr(fp_idxHash1+1,fp_strVal,"#") if fp_idxHash2 > 0 then ' this is an Access hyperlink; extract the URL part fp_strVal = Mid(fp_strVal,fp_idxHash1+1) if Right(fp_strVal,1) = "#" then fp_strVal = Left(fp_strVal,Len(fp_strVal)-1) end if end if end if FP_Field = fp_strVal else FP_Field = rs(fldname) end if Case Else FP_Field = rs(fldname) End Select Else FP_Field = "" End If End Function Function FP_FieldHTML(rs, fldname) FP_FieldHTML = FP_HTMLEncode(FP_Field(rs, fldname)) End Function Function FP_FieldURL(rs, fldname) FP_FieldURL = Server.URLEncode(FP_Field(rs, fldname)) End Function Function FP_FieldLink(rs, fldname) FP_FieldLink = Replace(FP_Field(rs, fldname), " ", "%20") End Function Sub FP_OpenConnection(oConn, sAttrs, sUID, sPWD, fMSAccessReadOnly) Dim sTmp Dim sConnStr Dim fIsAccessDriver fIsAccessDriver = (InStr(LCase(sAttrs), "microsoft access driver") > 0) sConnStr = FP_RemoveDriverWithDSN(sAttrs) sTmp = sConnStr On Error Resume Next If fMSAccessReadOnly And fIsAccessDriver Then sTmp = sTmp & ";Exclusive=1;ReadOnly=1" Err.Clear oConn.Open sTmp, sUID, sPWD If Err.Description = "" Then Exit Sub End If Err.Clear oConn.Open sConnStr, sUID, sPWD End Sub Function FP_RemoveDriverWithDSN(sAttrs) FP_RemoveDriverWithDSN = sAttrs sDrv = "driver=" sDSN = "dsn=" sLC = LCase(sAttrs) if InStr(sLC, sDSN) < 1 then exit function idxFirst = InStr(sLC, sDrv) if idxFirst < 1 then exit function idxBeg = idxFirst + Len(sDrv) if Mid(sLC,idxBeg,1) = "{" then idxEnd = InStr(idxBeg, sLC, "}") if idxEnd > 0 and Mid(sLC,idxEnd+1,1) = ";" then idxEnd = idxEnd + 1 end if else idxEnd = InStr(idxBeg, sLC, ";") end if if idxEnd < 1 then idxEnd = Len(sLC) FP_RemoveDriverWithDSN = Left(sAttrs,idxFirst-1) & Mid(sAttrs,idxEnd+1) End Function Sub FP_OpenRecordset(rs) On Error Resume Next rs.Open End Sub Function FP_ReplaceQuoteChars(sQry) Dim sIn Dim sOut Dim idx sIn = sQry sOut = "" idx = InStr(sIn, "%%") Do While (idx > 0) sOut = sOut & Left(sIn, idx - 1) sIn = Mid(sIn, idx + 2) if (Left(sIn,1) = "%") And (Left(sIn,2) <> "%%") then sIn = Mid(sIn, 2) sOut = sOut & "%" end if sOut = sOut & "::" idx = InStr(sIn, "%%") if idx > 0 then sOut = sOut & Left(sIn, idx - 1) sIn = Mid(sIn, idx + 2) sOut = sOut & "::" if (Left(sIn,1) = "%") And (Left(sIn,2) <> "%%") then sIn = Mid(sIn, 2) sOut = sOut & "%" end if end if idx = InStr(sIn, "%%") Loop sOut = sOut & sIn FP_ReplaceQuoteChars = sOut End Function Sub FP_Close(obj) On Error Resume Next obj.Close End Sub Sub FP_SetCursorProperties(rs) On Error Resume Next rs.CursorLocation = 3 ' adUseClient rs.CursorType = 3 ' adOpenStatic End Sub %> <% if 0 then %> <% end if %> <% fp_sQry="SELECT * FROM books WHERE (NUM = '::NUM::') ORDER BY NUM ASC" fp_sDefault="" fp_sNoRecords="No records returned." fp_sDataConn="presidents" fp_iMaxRecords=1 fp_iCommandType=1 fp_iPageSize=0 fp_fTableFormat=False fp_fMenuFormat=False fp_sMenuChoice="COVERIMAGE" fp_sMenuValue="COVERIMAGE" fp_sColTypes="&TITLE=202&SEASON=202&AUTHOR=202&AUTHFIRST=202&AUTHLAST=202&NUM=202&PUBLISHER=202&ISBN=202&DESCRIPTION=203&FULL_DESCRP=203&REVIEWS=203&AWARDS=202&PUB_DATE=135&BINDING=202&PRICE=202&FULL_TITLE=203&SUBJECT=202&AUTHBIO=203&AUTHPHOTO=202&COVERIMAGE=202&COVERIMAGE_SM=202&EXCERPT=203&READINGGDE=203&AMAZON_LINK=203&NYTBS=11&BOOKSENSE=203&RGG_LINK=203&AUDIOREADING=203&AMAZON=203&BN=203&" fp_iDisplayCols=10 fp_fCustomQuery=False BOTID=0 fp_iRegion=BOTID %> <% FP_SetLocaleForPage ' determine whether or not to provide navigation controls if fp_iPageSize > 0 then fp_fShowNavbar = True else fp_fShowNavbar = False end if fp_sPagePath = Request.ServerVariables("PATH_INFO") fp_sEnvKey = fp_sPagePath & "#fpdbr_" & fp_iRegion fp_sFormName = "fpdbr_" & CStr(fp_iRegion) fp_sFormKey = fp_sFormName & "_PagingMove" fp_sInputs = fp_sDefault fp_sFirstLabel = " |< " fp_sPrevLabel = " < " fp_sNextLabel = " > " fp_sLastLabel = " >| " fp_sDashLabel = " -- " if not IsEmpty(Request(fp_sFormKey)) then fp_sMoveType = Request(fp_sFormKey) else fp_sMoveType = "" end if fp_iCurrent=1 fp_fError=False fp_bBlankField=False Set fp_dictInputs = Server.CreateObject("Scripting.Dictionary") fp_sQry = FP_ReplaceQuoteChars(fp_sQry) ' replace any input parameters in query string Do While (Not fp_fError) And (InStr(fp_iCurrent, fp_sQry, "::") <> 0) ' found a opening quote, find the close quote fp_iStart = InStr(fp_iCurrent, fp_sQry, "::") fp_iEnd = InStr(fp_iStart + 2, fp_sQry, "::") If fp_iEnd = 0 Then fp_fError = True Response.Write "Database Results Error: mismatched parameter delimiters" Else fp_sField = Mid(fp_sQry, fp_iStart + 2, fp_iEnd - fp_iStart - 2) fp_sValue = Request.Form(fp_sField) if len(fp_sValue) = 0 then fp_sValue = Request.QueryString(fp_sField) ' if the named form field doesn't exist, make a note of it If (len(fp_sValue) = 0) Then fp_iStartField = InStr(fp_sDefault, fp_sField & "=") if fp_iStartField > 0 then fp_iStartField = fp_iStartField + len(fp_sField) + 1 fp_iEndField = InStr(fp_iStartField,fp_sDefault,"&") if fp_iEndField > 0 then fp_sValue = Mid(fp_sDefault,fp_iStartField,fp_iEndField - fp_iStartField) else fp_sValue = Mid(fp_sDefault,fp_iStartField) end if end if End If ' remember names and values used in query if not fp_dictInputs.Exists(fp_sField) then fp_dictInputs.Add fp_sField, fp_sValue end if ' this next finds the named form field value, and substitutes in ' doubled single-quotes for all single quotes in the literal value ' so that SQL doesn't get confused by seeing unpaired single-quotes If (Mid(fp_sQry, fp_iStart - 1, 1) = """") Then fp_sValue = Replace(fp_sValue, """", """""") ElseIf (Mid(fp_sQry, fp_iStart - 1, 1) = "'") Then fp_sValue = Replace(fp_sValue, "'", "''") End If If (len(fp_sValue) = 0) Then fp_bBlankField = True fp_sQry = Left(fp_sQry, fp_iStart - 1) & fp_sValue & Right(fp_sQry, Len(fp_sQry) - fp_iEnd - 1) ' Fixup the new current position to be after the substituted value fp_iCurrent = fp_iStart + Len(fp_sValue) End If Loop ' establish connection If Not fp_fError Then if Application(fp_sDataConn & "_ConnectionString") = "" then Err.Description = "The database connection named '" & fp_sDataConn & "' is undefined.

" Err.Description = Err.Description & "This problem can occur if:
" Err.Description = Err.Description & "* the connection has been removed from the web
" Err.Description = Err.Description & "* the file 'global.asa' is missing or contains errors
" Err.Description = Err.Description & "* the root folder does not have Scripting permissions enabled
" Err.Description = Err.Description & "* the web is not marked as an Application Root
" fp_fError = True end if if Not fp_fError then set fp_conn = Server.CreateObject("ADODB.Connection") fp_conn.ConnectionTimeout = Application(fp_sDataConn & "_ConnectionTimeout") fp_conn.CommandTimeout = Application(fp_sDataConn & "_CommandTimeout") fp_sConn = Application(fp_sDataConn & "_ConnectionString") fp_sUid = Application(fp_sDataConn & "_RuntimeUserName") fp_sPwd = Application(fp_sDataConn & "_RuntimePassword") Err.Clear FP_OpenConnection fp_conn, fp_sConn, fp_sUid, fp_sPwd, Not(fp_fCustomQuery) if Err.Description <> "" then fp_fError = True end if if Not fp_fError then set fp_cmd = Server.CreateObject("ADODB.Command") fp_cmd.CommandText = fp_sQry fp_cmd.CommandType = fp_iCommandType set fp_cmd.ActiveConnection = fp_conn set fp_rs = Server.CreateObject("ADODB.Recordset") set fp_rs.Source = fp_cmd If fp_iCommandType = 4 Then fp_cmd.Parameters.Refresh Do Until Len(fp_sInputs) = 0 fp_iLoc = InStr(fp_sInputs,"=") if fp_iLoc = 0 then exit do fp_sKey = Left(fp_sInputs,fp_iLoc - 1) fp_sInputs = Mid(fp_sInputs,fp_iLoc + 1) fp_iLoc = InStr(fp_sInputs,"&") if fp_iLoc = 0 then fp_sInpVal = fp_sInputs fp_sInputs = "" else fp_sInpVal = Left(fp_sInputs,fp_iLoc - 1) fp_sInputs = Mid(fp_sInputs,fp_iLoc + 1) end if fp_sVal = Request.Form(fp_sKey) if len(fp_sVal) = 0 then fp_sVal = Request.QueryString(fp_sKey) if len(fp_sVal) = 0 then fp_sVal = fp_sInpVal fp_pType = fp_cmd.Parameters(fp_sKey).Type select case fp_pType case 129, 200, 201, 130, 202, 203 ' adChar, adVarChar, adLongVarChar, adWChar, adVarWChar, adLongVarWChar fp_cmd.Parameters(fp_sKey).Size = Len(fp_sVal) + 1 case else ' do nothing end select ' remember names and values used in query if not fp_dictInputs.Exists(fp_sKey) then fp_dictInputs.Add fp_sKey, fp_sVal end if fp_cmd.Parameters(fp_sKey) = fp_sVal Loop End If If fp_iMaxRecords <> 0 Then fp_rs.MaxRecords = fp_iMaxRecords FP_SetCursorProperties(fp_rs) FP_OpenRecordset(fp_rs) end if If Err.Description <> "" Then if fp_fTableFormat then Response.Write "
" end if Response.Write "" Response.Write "Database Results Error
" if Not fp_fError then Response.Write "Description: " & Err.Description & "
" Response.Write "Number: " & Err.Number & " (0x" & Hex(Err.Number) & ")
" Response.Write "Source: " & Err.Source & "
" else Response.Write Err.Description end if if fp_bBlankField Then Response.Write "
One or more form fields were empty." Response.Write " You should provide default values for all form fields that are used in the query." End If Response.Write "
" if fp_fTableFormat then Response.Write "
" hspace="5" vspace="3"> <%=FP_FieldVal(fp_rs,"FULL_TITLE")%>

By <%=FP_FieldVal(fp_rs,"AUTHOR")%>

Published by <%=FP_FieldVal(fp_rs,"PUBLISHER")%>

<%=FP_FieldVal(fp_rs,"BINDING")%>
Publication date: <%=FP_FieldVal(fp_rs,"PUB_DATE")%>
ISBN: <%=FP_FieldVal(fp_rs,"ISBN")%>

">Read an excerpt
Ordering Information
<%=FP_Field(fp_rs,"AUDIOREADING")%>

<%=FP_Field(fp_rs,"FULL_DESCRP")%>

<%=FP_Field(fp_rs,"REVIEWS")%>

<% ' Close the loop iterating records fp_iCount = fp_iCount + 1 fp_rs.MoveNext Loop if fp_fShowNavbar then if fp_fTableFormat then if fp_iDisplayCols < 1 then fp_iDisplayCols = 16 Response.Write "
" end if Response.Write "
" if fp_iAbsPage > 1 then fp_sType = "Submit" fp_sLabel = fp_sFirstLabel else fp_sType = "Button" fp_sLabel = fp_sDashLabel end if Response.Write "" if fp_iAbsPage > 1 then fp_sLabel = fp_sPrevLabel Response.Write "" if fp_iAbsPage < fp_rs.PageCount then fp_sType = "Submit" fp_sLabel = fp_sNextLabel else fp_sType = "Button" fp_sLabel = fp_sDashLabel end if Response.Write "" if fp_iAbsPage < fp_rs.PageCount then fp_sLabel = fp_sLastLabel Response.Write "" Response.Write " [" & fp_iAbsPage & "/" & fp_rs.PageCount & "]" ' remember names and values used in query for each fp_sKey in fp_dictInputs fp_sVal = fp_dictInputs.Item(fp_sKey) Response.Write "" next Response.Write "
" if fp_fTableFormat then Response.Write "
The American Presidents Series
The American Presidents Series
The American Presidents Series
The American Presidents Series
 

Home | The Series | Book List | The Authors | Interactive Timeline
Bonus Materials | Email Updates | Henry Holt & Company

The American Presidents Series
by Times Books

Copyright 2003- Henry Holt and Company
Terms of Use | Privacy Policy

 
The American Presidents SeriesThe American Presidents Series