David,
You've written your ASP in JavaScript (or Drumbeast 2000 did it for you).
Apache::ASP is for scripts written in PERL that want to take advantage of
the ASP object API. If you want to run your JavaScript ASP on a non-IIS
platform you will have to go with another solution (like from ChiliSoft).
Hope this help,
Alex
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of David Vaught-Alexander
> Sent: Friday, February 04, 2000 5:29 AM
> To: [EMAIL PROTECTED]
> Subject: Apache::ASP
>
>
> Okay, I'm new to asp. It's been a nightmare getting my redhat 6.0 httpsd
> server to even process this stuff. Anyway, I finally got some action. So
> after my demo stuff worked for the most part, I tried this guestbook I
> generated in Drumbeat 2000...I'm lost.
>
> 1. loaded http://admin.biojazz.com/dbeat/gbook/Index.asp
> 2. clicked on "add entry"
>
> got what's below
>
> The server error_log says (this is followed by the page
> output...arrggghhhhhhhhhhhhhhhhh!)
>
> --------------------------------------------------------------------------
>
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] STARTING ASP
> HANDLER (v0.09) for file
> /users/admin/public_html/dbeat/gbook/ViewEntrySummaries.asp
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] GlobalASA
> package
> Apache::ASP::Compiles::_users_admin_public_html_dbeat_gbook___global_asa
>
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] created
> $Application -
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] SessionCookie -
> b8724d9dacf210ccfec9940681e5a3bd
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] new session
> state Apache::ASP::State=HASH(0x8219850)
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] session timed
> out, clearing
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] Session_OnEnd -
> session: b8724d9dacf210ccfec9940681e5a3bd;
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] tieing session -
>
> [Fri Feb 4 02:21:36 2000] [error] [asp] [debug] [3841] forcing groups
> cleanup
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] group check
> GroupIdb8
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] skipping delete
> self - id: b8724d9dacf210ccfec9940681e5a3bd;
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] cleanup groups -
> deleted: 0;
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841]
> Application_OnEnd
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841]
> Application_OnStart
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] Session_OnStart
> - session: b8724d9dacf210ccfec9940681e5a3bd;
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] ASP object
> created - Application: Apache::ASP::Application=HASH(0x832ff98);
> GlobalASA: Apache::ASP::GlobalASA=HASH(0x8334184); Internal:
> Apache::ASP::State=HASH(0x831e574); Request:
> Apache::ASP::Request=HASH(0x8314164); Response:
> Apache::ASP::Response=HASH(0x8314218); Server:
> Apache::ASP::Server=HASH(0x831e4c0); Session:
> Apache::ASP::Session=HASH(0x831e5f8); app_start: 0; basename:
> ViewEntrySummaries.asp; buffering_on: 1; cgi_do_self: 0; command_line: ;
> compile_error: ; compile_includes: ; cookie_path: /; debug: 2;
> debugs_output: ARRAY(0x8314398); dirname:
> /users/admin/public_html/dbeat/gbook; errors: 0; errors_output:
> ARRAY(0x831e52c); filehandle: ; filename:
> /users/admin/public_html/dbeat/gbook/ViewEntrySummaries.asp; filter: 0;
> global: /users/admin/public_html/dbeat/gbook/.; group_refresh: 3;
> groups_refresh: 3; id:
> _users_admin_public_html_dbeat_gbook_ViewEntrySummaries_asp____INLINE;
> mtime: 948361945; no_cache: ; no_headers: 0; no_session: 0; no_state: ;
> pod_comments: 1; r: Apache=SCALAR(0x831408c); remote_ip: 208.32.76.146;
> secure_session: ; session_serialize: ; session_timeout: 30;
> soft_redirect: ; stat_inc: ; state_db: SDBM_File; state_dir: ./.state;
> state_manager: 10;
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] compiling -
> package:
> _users_admin_public_html_dbeat_gbook_ViewEntrySummaries_asp____INLINE;
> [Fri Feb 4 02:21:37 2000] [error] [asp] [error] /* Connection Pooler
> */: ?+*{} follows nothing in regexp at (eval 41) line 1660. <--> ,
> /usr/lib/perl5/site_perl/5.005/Apache/ASP.pm line 818
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] building cgi
> headers
> [Fri Feb 4 02:21:37 2000] [error] [asp] [debug] [3841] sending cgi
> headers
> [Fri Feb 4 02:21:38 2000] [error] [asp] [debug] [3841] destroying -
> asp: Apache::ASP=HASH(0x8334478);
>
>
> ------------------------------------------------------------------
> ----------------------
>
> ...as the page displays this
>
> Thanks for any hints (and if I ever get jre to work so netscape doesn't
> crash each time I hit a j enabled page...well...that's WAY off this
> topic isn't it ;-)
>
> ------------------------------------------------------------------
> -----------------------
>
> Errors Output
>
> /* Connection Pooler */: ?+*{} follows nothing in regexp at (eval 204)
> line 1660.
> , /usr/lib/perl5/site_perl/5.005/Apache/ASP.pm line 818
>
> Debug Output
>
> STARTING ASP HANDLER (v0.09) for file
> /users/admin/public_html/dbeat/gbook/ViewEntrySummaries.asp
> GlobalASA package
> Apache::ASP::Compiles::_users_admin_public_html_dbeat_gbook___global_asa
>
> compiling - package: _users_admin_public_html_dbeat_gbook___global_asa;
> global.asa routines -
> created $Application -
> SessionCookie - b8724d9dacf210ccfec9940681e5a3bd
> new session state Apache::ASP::State=HASH(0x8157c7c)
> session timed out, clearing
> Session_OnEnd - session: b8724d9dacf210ccfec9940681e5a3bd;
> tieing session -
> forcing groups cleanup
> group check GroupIdb8
> skipping delete self - id: b8724d9dacf210ccfec9940681e5a3bd;
> cleanup groups - deleted: 0;
> Application_OnEnd
> Application_OnStart
> Session_OnStart - session: b8724d9dacf210ccfec9940681e5a3bd;
> ASP object created - Application:
> Apache::ASP::Application=HASH(0x8408c74); GlobalASA:
> Apache::ASP::GlobalASA=HASH(0x8414220); Internal:
> Apache::ASP::State=HASH(0x83edf18); Request:
> Apache::ASP::Request=HASH(0x8405ed0); Response:
> Apache::ASP::Response=HASH(0x8414130); Server:
> Apache::ASP::Server=HASH(0x831f8c8); Session:
> Apache::ASP::Session=HASH(0x835aa90); app_start: 0; basename:
> ViewEntrySummaries.asp; buffering_on: 1; cgi_do_self: 0; command_line: ;
> compile_error: ; compile_includes: ; cookie_path: /; debug: 2;
> debugs_output: ARRAY(0x8404ba0); dirname:
> /users/admin/public_html/dbeat/gbook; errors: 0; errors_output:
> ARRAY(0x8404a5c); filehandle: ; filename:
> /users/admin/public_html/dbeat/gbook/ViewEntrySummaries.asp; filter: 0;
> global: /users/admin/public_html/dbeat/gbook/.; group_refresh: 3;
> groups_refresh: 3; id:
> _users_admin_public_html_dbeat_gbook_ViewEntrySummaries_asp____INLINE;
> mtime: 948361945; no_cache: ; no_headers: 0; no_session: 0; no_state: ;
> pod_comments: 1; r: Apache=SCALAR(0x83f7ed8); remote_ip: 208.32.76.146;
> secure_session: ; session_serialize: ; session_timeout: 30;
> soft_redirect: ; stat_inc: ; state_db: SDBM_File; state_dir: ./.state;
> state_manager: 10;
> compiling - package:
> _users_admin_public_html_dbeat_gbook_ViewEntrySummaries_asp____INLINE;
> /* Connection Pooler */: ?+*{} follows nothing in regexp at (eval 204)
> line 1660.
> , /usr/lib/perl5/site_perl/5.005/Apache/ASP.pm line 818
>
> Compile Error
>
>
> /* Connection Pooler */: ?+*{} follows nothing in regexp at (eval 204)
> line 1660.
>
>
> ASP to Perl Program
>
> 1: package
> Apache::ASP::Compiles::_users_admin_public_html_dbeat_gbook_ViewEn
> trySummaries_asp____INLINE;
>
> 2: no strict;
> 3: use vars qw($Application $Session $Response $Server $Request);
> 4:
> 5: # allow developers to place modules in global directory
> 6: use lib qw(/users/admin/public_html/dbeat/gbook/.);
> 7:
> 8: # aliases here
> 9: sub exit { $main::Response->End(); }
> 10:
> 11: # handler gets called from ASP perl handler to run code
> 12: sub handler {
> 13: my($self, $routine) = @_;
> 14:
> 15: if($routine && ($routine ne "handler")) {
> 16: return &$routine;
> 17: }
> 18: $self = $routine = undef;
> 19: @_ = ();
> 20:
> 21: #######################################################
> 22: ## Your ASP script has been parsed and inserted here !!
> 23: #######################################################
> 24:
> 25:
> 26: $main::Response->Write(
> 27: '
> 28:
> 29: <SCRIPT LANGUAGE=JavaScript RUNAT=Server>
> 30: function ConnectionCache()
> 31: {
> 32: CPReconnect(this);
> 33:
> 34: // create connections array
> 35: if(!this.Connections)
> 36: {
> 37: this.Connections = new Array();
> 38: }
> 39:
> 40: return this;
> 41: }
> 42:
> 43: function CPReconnect(Object)
> 44: {
> 45: Object.FindConnection = CPFindConnection;
> 46: Object.AddConnection = CPAddConnection;
> 47: }
> 48:
> 49: function CPFindConnection(DSN, UID, PWD)
> 50: {
> 51: var Connections = this.Connections;
> 52: for(var i = 0, n = Connections.length; i < n; i++)
> 53: {
> 54: TestPair = Connections[i];
> 55: TestKey = TestPair["Key"];
> 56: if(TestKey["DSN"] != DSN || TestKey["UID"] != UID ||
> TestKey["PWD"] != PWD)
> 57: {
> 58: continue;
> 59: }
> 60: return TestPair["Value"];
> 61: }
> 62: return null;
> 63: }
> 64:
> 65: function CPAddConnection(DSN, UID, PWD, Connection)
> 66: {
> 67: var Pair = new Object();
> 68: var Key = new Object();
> 69: Key["DSN"] = DSN;
> 70: Key["UID"] = UID;
> 71: Key["PWD"] = PWD;
> 72: Pair["Key"] = Key;
> 73: Pair["Value"] = Connection;
> 74: var Connections = this.Connections;
> 75: Connections[Connections.length] = Pair;
> 76: }
> 77:
> 78: function CreateConnectionCache()
> 79: {
> 80: return new ConnectionCache();
> 81: }
> 82:
> 83: </SCRIPT>
> 84: <SCRIPT LANGUAGE=JavaScript RUNAT=Server>
> 85: function Recordset(Name, DSN, UID, PWD, SQL, UniqueKeyCols,
> Updateable, CursorType, CursorLocation, LockType, TableNames)
> 86: {
> 87: RSReconnect(this);
> 88: this.Name = Name;
> 89: this.DSN = DSN;
> 90: this.UID = UID;
> 91: this.PWD = PWD;
> 92: this.SQL = SQL;
> 93: this.OrgSQL = SQL;
> 94: this.Updateable = Updateable;
> 95: this.CursorType = CursorType;
> 96: this.CursorLocation = CursorLocation;
> 97: this.LockType = LockType;
> 98: this.NoRecordMessage = "";
> 99: this.NoFoundMessage = "";
> 100: this.RSConnection = "";
> 101: this.DTFormat = 0;
> 102: this.FilterCriteria = "";
> 103: this.OrderByCol = "";
> 104: this.Found = true;
> 105: this.SupportsApproxPosition = false;
> 106: this.SupportsMove = false;
> 107: this.SupportsCount = false;
> 108: this.ApproxPosition = 1;
> 109: this.Separator = "!*+";
> 110: this.SpecialChars =
> "~@#$%^&*-+=\\\\}{\\"\';:?/><,()_\\f\\n\\r\\t ";
> 111: this.TrimCRLF = true;
> 112: this.bPreserveInputState = false;
> 113: this.Action = "" + Request(this.Name+"_Action");
> 114: this.MaxRecords = -1;
> 115:
> 116: // create bindings array
> 117: if("" + Request(this.Name + "_Bindings") != "undefined")
> 118: {
> 119: this.BindingsArray = new Array();
> 120: var Bindings = "" + Request(this.Name + "_Bindings");
> 121: var nBinding = 0;
> 122: for(;;)
> 123: {
> 124: var BindIndex =
> Bindings.indexOf(this.Separator);
> 125: if(BindIndex >= 0)
> 126: {
> 127: var BoundColumn = Bindings.substring(0,
> BindIndex);
> 128: Bindings = Bindings.substring(BindIndex
> + this.Separator.length, Bindings.length);
> 129: BindIndex =
> Bindings.indexOf(this.Separator);
> 130: if(BindIndex >= 0)
> 131: {
> 132: // get the location of the value
>
> 133: var BindingType =
> Bindings.substring(0, BindIndex);
> 134: Bindings =
> Bindings.substring(BindIndex + this.Separator.length, Bindings.length);
> 135:
> 136: // get the value
> 137: BindIndex =
> Bindings.indexOf(this.Separator);
> 138: if(BindIndex < 0)
> 139: {
> 140: BindIndex =
> Bindings.length;
> 141: }
> 142: var BoundValue =
> Bindings.substring(0, BindIndex);
> 143:
> 144: var Binding = new Object();
> 145: Binding["Name"] = BoundColumn;
> 146: Binding["Type"] = BindingType;
> 147: Binding["Value"] = BoundValue;
> 148: this.BindingsArray[nBinding] =
> Binding;
> 149: nBinding++;
> 150:
> 151: // next binding
> 152: if(BindIndex == Bindings.length)
>
> 153: {
> 154: BindIndex = -1;
> 155: }
> 156: else
> 157: {
> 158: Bindings =
> Bindings.substring(BindIndex + this.Separator.length, Bindings.length);
> 159: }
> 160: }
> 161: }
> 162: if(BindIndex < 0)
> 163: {
> 164: break;
> 165: }
> 166: }
> 167: }
> 168:
> 169: // set or restore parameters
> 170: this.State = "" + Request(this.Name + "_Position");
> 171: if(this.State != "undefined")
> 172: {
> 173: var State = this.State;
> 174: if(State != "")
> 175: {
> 176: var FilterIndex = State.indexOf("FIL:");
> 177: var OrdIndex = State.indexOf("ORD:");
> 178: var AbsIndex = State.indexOf("ABS:");
> 179: var ParamIndex = State.indexOf("PAR:");
> 180: if(FilterIndex >= 0 && OrdIndex >= 0)
> 181: {
> 182: this.FilterCriteria =
> State.substring(FilterIndex + 4, OrdIndex);
> 183: }
> 184: if(OrdIndex >= 0 && AbsIndex >= 0)
> 185: {
> 186: this.OrderByCol =
> State.substring(OrdIndex + 4, AbsIndex);
> 187: }
> 188: if(ParamIndex >= 0)
> 189: {
> 190:
> this.RestoreParams(State.substring(ParamIndex + 4, State.length));
> 191: }
> 192: }
> 193: }
> 194: if(this.ParamArray == null && Recordset.arguments.length >
> Recordset.length)
> 195: {
> 196: // set default parameters (variable arguments to this
> function)
> 197: this.ParamArray = new Array();
> 198: var nArgs = Recordset.arguments.length;
> 199: var nArg = Recordset.length;
> 200: var nParam = 0;
> 201: for(; nArg < nArgs; nArg++, nParam++)
> 202: {
> 203: var ParmName = "" + Recordset.arguments[nArg];
> 204: nArg++;
> 205: if(nArg >= nArgs)
> 206: {
> 207: break;
> 208: }
> 209: var ParmValue = "" + Recordset.arguments[nArg];
> 210: var Pair = new Object();
> 211: Pair["Name"] = ParmName;
> 212: Pair["Value"] = ParmValue;
> 213: this.ParamArray[nParam] = Pair;
> 214: }
> 215: }
> 216:
> 217: // create unique key cols array
> 218: if(UniqueKeyCols != "")
> 219: {
> 220: this.UniqueKeyColArray = new Array();
> 221: var Temp = UniqueKeyCols;
> 222: for(i = 0;;i++)
> 223: {
> 224: var Index = Temp.indexOf(",");
> 225: if(Index == -1)
> 226: {
> 227: Index = Temp.length;
> 228: }
> 229: this.UniqueKeyColArray[i] = Temp.substring(0,
> Index);
> 230: if(Index == Temp.length)
> 231: {
> 232: break;
> 233: }
> 234: Temp = Temp.substring(Index + 1, Temp.length);
> 235: }
> 236: }
> 237:
> 238: // create table names array
> 239: if(TableNames != "")
> 240: {
> 241: this.TableNamesArray = new Array();
> 242: var nTableName = 0;
> 243: for(;;)
> 244: {
> 245: var TableNameIndex =
> TableNames.indexOf(this.Separator);
> 246: if(TableNameIndex >= 0)
> 247: {
> 248: // get the column index
> 249: var nCol =
> parseInt(TableNames.substring(0, TableNameIndex));
> 250: TableNames =
> TableNames.substring(TableNameIndex + this.Separator.length,
> TableNames.length);
> 251: // get the column name
> 252: TableNameIndex =
> TableNames.indexOf(this.Separator);
> 253: if(TableNameIndex < 0)
> 254: {
> 255: TableNameIndex =
> TableNames.length;
> 256: }
> 257: var TableName = TableNames.substring(0,
> TableNameIndex);
> 258: var TableNameObj = new Object();
> 259: TableNameObj["nCol"] = nCol;
> 260: TableNameObj["TableName"] = TableName;
> 261: this.TableNamesArray[nTableName] =
> TableNameObj;
> 262: nTableName++;
> 263:
> 264: // next TableName
> 265: if(TableNameIndex == TableNames.length)
> 266: {
> 267: TableNameIndex = -1;
> 268: }
> 269: else
> 270: {
> 271: TableNames =
> TableNames.substring(TableNameIndex + this.Separator.length,
> TableNames.length);
> 272: }
> 273: }
> 274: if(TableNameIndex < 0)
> 275: {
> 276: break;
> 277: }
> 278: }
> 279: }
> 280: return this;
> 281: }
> 282:
> 283: function RSReconnect(Object)
> 284: {
> 285: Object.FindConnection = RSFindConnection;
> 286: Object.AddConnection = RSAddConnection;
> 287: Object.Open = RSOpen;
> 288: Object.GetColumnValue = RSGetColumnValue;
> 289: Object.SetColumnValue = RSSetColumnValue;
> 290: Object.ProcessAction = RSProcessAction;
> 291: Object.MoveFirst = RSMoveFirst;
> 292: Object.MoveNext = RSMoveNext;
> 293: Object.MovePrevious = RSMovePrevious;
> 294: Object.MoveLast = RSMoveLast;
> 295: Object.Insert = RSInsert;
> 296: Object.Update = RSUpdate;
> 297: Object.Delete = RSDelete;
> 298: Object.IsBOF = RSIsBOF;
> 299: Object.IsEOF = RSIsEOF;
> 300: Object.BeginTrans = RSBeginTrans;
> 301: Object.CommitTrans = RSCommitTrans;
> 302: Object.RollbackTrans = RSRollbackTrans;
> 303: Object.Close = RSClose;
> 304: Object.Filter = RSFilter;
> 305: Object.Find = RSFind;
> 306: Object.GetState = RSGetState;
> 307: Object.RestoreState = RSRestoreState;
> 308: Object.GetKeyVals = RSGetKeyVals;
> 309: Object.GetAbsPos = RSGetAbsPos;
> 310: Object.OrderBy = RSOrderBy;
> 311: Object.SetMessages = RSSetMessages;
> 312: Object.SetAction = RSSetAction;
> 313: Object.SetOrderByCol = RSSetOrderByCol;
> 314: Object.GetOrderbyCol = RSGetOrderByCol;
> 315: Object.Move = RSMove;
> 316: Object.SetParameter = RSSetParam;
> 317: Object.GetParameter = RSGetParam;
> 318: Object.GetParams = RSGetParams;
> 319: Object.RestoreParams = RSRestoreParams;
> 320: Object.SubstituteParams = RSSubstituteParams;
> 321: Object.SetMaxRecords = RSSetMaxRecords;
> 322: Object.GetMaxRecords = RSGetMaxRecords;
> 323: Object.FindBinding = RSFindBinding;
> 324: Object.AddBinding = RSAddBinding;
> 325: Object.RemoveBinding = RSRemoveBinding;
> 326: Object.GetBindingValue = RSGetBindingValue;
> 327: Object.SetBindingValue = RSSetBindingValue;
> 328: Object.GetBindingType = RSGetBindingType;
> 329: Object.SetBindingType = RSSetBindingType;
> 330: Object.GetBoundColumnName = RSGetBoundColumnName;
> 331: Object.GetBoundColumnNameByIndex = RSGetBoundColumnNameByIndex;
> 332: Object.SetRS = RSSetRS;
> 333: Object.GetField = RSGetField;
> 334: }
> 335:
> 336: function RSSetRS(RS)
> 337: {
> 338: if(RS)
> 339: {
> 340: this.RS = RS;
> 341: }
> 342: }
> 343:
> 344: function RSGetField(ColName)
> 345: {
> 346: var Field = null;
> 347: if(this.TableNamesArray == null)
> 348: {
> 349: Field = this.RS.Fields.Item(ColName);
> 350: }
> 351: else
> 352: {
> 353: // column not found in Fields collection, so look for
> table.column
> 354: var nDot = ColName.indexOf(".");
> 355: if(nDot > 0)
> 356: {
> 357: var RSTable = ColName.substring(0, nDot);
> 358: var RSColumn = ColName.substring(nDot + 1,
> ColName.length);
> 359: for(var i = 0, n = this.TableNamesArray.length;
> i < n; i++)
> 360: {
> 361: var TObj = this.TableNamesArray[i];
> 362: var TableName = TObj["TableName"];
> 363: if(TableName == RSTable)
> 364: {
> 365: var nCol = TObj["nCol"];
> 366:
> if(this.RS.Fields.Item(nCol).Name == RSColumn)
> 367: {
> 368: Field =
> this.RS.Fields.Item(nCol);
> 369: break;
> 370: }
> 371: }
> 372: }
> 373:
> 374: // column not found in Fields collection, so
> look for user.table.column
> 375: nDot = RSColumn.indexOf(".");
> 376: if(nDot > 0)
> 377: {
> 378: var RSTbl = RSTable + "." +
> RSColumn.substring(0, nDot);
> 379: var RSCol = RSColumn.substring(nDot + 1,
> RSColumn.length);
> 380: for(var i = 0, n =
> this.TableNamesArray.length; i < n; i++)
> 381: {
> 382: var TObj =
> this.TableNamesArray[i];
> 383: var TableName =
> TObj["TableName"];
> 384: if(TableName == RSTbl)
> 385: {
> 386: var nCol = TObj["nCol"];
>
> 387:
> if(this.RS.Fields.Item(nCol).Name == RSCol)
> 388: {
> 389: Field =
> this.RS.Fields.Item(nCol);
> 390: break;
> 391: }
> 392: }
> 393: }
> 394: }
> 395: else
> 396: {
> 397: Field = this.RS.Fields.Item(RSColumn);
> 398: }
> 399: }
> 400: else
> 401: {
> 402: Field = this.RS.Fields.Item(ColName);
> 403: }
> 404: }
> 405: return Field;
> 406: }
> 407:
> 408: function RSFindConnection(DSN, UID, PWD)
> 409: {
> 410: var Connections = ConnectionCache.Connections;
> 411: for(var i = 0, n = Connections.length; i < n; i++)
> 412: {
> 413: TestPair = Connections[i];
> 414: TestKey = TestPair["Key"];
> 415: if(TestKey["DSN"] != DSN || TestKey["UID"] != UID ||
> TestKey["PWD"] != PWD)
> 416: {
> 417: continue;
> 418: }
> 419: return TestPair["Value"];
> 420: }
> 421: return null;
> 422: }
> 423:
> 424: function RSAddConnection(DSN, UID, PWD, Connection)
> 425: {
> 426: var Pair = new Object();
> 427: var Key = new Object();
> 428: Key["DSN"] = DSN;
> 429: Key["UID"] = UID;
> 430: Key["PWD"] = PWD;
> 431: Pair["Key"] = Key;
> 432: Pair["Value"] = Connection;
> 433: var Connections = ConnectionCache.Connections;
> 434: Connections[Connections.length] = Pair;
> 435: }
> 436:
> 437: function RSOpen()
> 438: {
> 439: this.RSConnection = this.FindConnection(this.DSN, this.UID,
> this.PWD);
> 440: if(this.RSConnection == null)
> 441: {
> 442: this.RSConnection =
> Server.CreateObject("ADODB.Connection");
> 443: this.AddConnection(this.DSN, this.UID, this.PWD,
> this.RSConnection);
> 444: }
> 445: if(this.RSConnection)
> 446: {
> 447: if(!(this.RSConnection.State & 1/*adStateOpen*/))
> 448: {
> 449: this.RSConnection.Open("dsn=" + this.DSN +
> ";uid=" + this.UID + ";pwd=" + this.PWD);
> 450: }
> 451: this.RS = Server.CreateObject("ADODB.Recordset");
> 452: if(this.RS)
> 453: {
> 454: if (this.MaxRecords != -1)
> 455: {
> 456: this.RS.MaxRecords = this.MaxRecords;
> 457: }
> 458: var version =
> parseFloat(this.RSConnection.Version);
> 459: if (version > 1.0)
> 460: {
> 461: this.RS.CursorLocation =
> this.CursorLocation;
> 462: }
> 463:
> 464: var SQL = this.SQL;
> 465: if(this.OrderByCol != "")
> 466: {
> 467: SQL += " ORDER BY " + this.OrderByCol;
> 468: }
> 469: if(this.ParamArray != null &&
> this.ParamArray.length > 0)
> 470: {
> 471: // substitute parameters
> 472: SQL = this.SubstituteParams(SQL);
> 473: }
> 474:
> 475: this.RS.Open(SQL, this.RSConnection,
> this.CursorType, this.LockType);
> 476: if (this.RS.State == 1/*adStateOpen*/)
> 477: {
> 478: this.SupportsApproxPosition =
> this.RS.Supports(0x4000/*adApproxPosition*/);
> 479: this.SupportsMove =
> this.RS.Supports(0x200/*adMovePrevious*/);
> 480: this.SupportsCount = this.RS.RecordCount
> != -1;
> 481: this.RestoreState();
> 482: }
> 483: else
> 484: {
> 485: Response.Write("<BR>Error: Unable to
> open Recordset!<BR>");
> 486: }
> 487: }
> 488: }
> 489: }
> 490:
> 491: function RSSetAction(action)
> 492: {
> 493: this.Action = "" + action;
> 494: }
> 495:
> 496: function RSSetOrderByCol(OrderByCol)
> 497: {
> 498: this.OrderByCol = OrderByCol;
> 499: }
> 500:
> 501: function RSGetOrderByCol()
> 502: {
> 503: return this.OrderByCol;
> 504: }
> 505:
> 506: function RSRestoreState()
> 507: {
> 508: var Action = this.Action;
> 509: if(Action != \'Insert\' && Action != \'Close\' &&
> Action.indexOf(\'Filter(\') < 0)
> 510: {
> 511: if(this.State != "undefined")
> 512: {
> 513: var Position = this.State;
> 514: var FilterIndex = Position.indexOf("FIL:");
> 515: var OrdIndex = Position.indexOf("ORD:");
> 516: var AbsIndex = Position.indexOf("ABS:");
> 517: var KeyIndex = Position.indexOf("KEY:");
> 518: var ParamIndex = Position.indexOf("PAR:");
> 519: if(ParamIndex < 0)
> 520: {
> 521: ParamIndex = Position.length;
> 522: }
> 523:
> 524: // reapply filter
> 525: if(this.FilterCriteria != "")
> 526: {
> 527: this.Filter(this.FilterCriteria);
> 528: }
> 529:
> 530: //if the filter produces an empty recordset ,
> return
> 531: if (this.IsEOF())
> 532: {
> 533: return -1;
> 534: }
> 535:
> 536: // move to previous position
> 537: if(KeyIndex >= 0 && AbsIndex >= 0)
> 538: {
> 539: var Abs = Position.substring(AbsIndex +
> 4, KeyIndex);
> 540: var Key = "";
> 541: if((KeyIndex + 4) < ParamIndex)
> 542: {
> 543: Key =
> Position.substring(KeyIndex + 4, ParamIndex);
> 544: }
> 545:
> 546: // build array of unique keys
> 547: var KeyArray = null;
> 548: if(this.UniqueKeyColArray != null && Key
> != "")
> 549: {
> 550: KeyArray = new Array();
> 551: for(i = 0;; i++)
> 552: {
> 553: var Index =
> Key.indexOf(this.Separator);
> 554: if(Index == -1)
> 555: {
> 556: Index =
> Key.length;
> 557: }
> 558: KeyArray[i] =
> Key.substring(0, Index);
> 559: if(Index == Key.length)
> 560: {
> 561: break;
> 562: }
> 563: Key =
> Key.substring(Index + 3, Key.length);
> 564: }
> 565: }
> 566:
> 567: if(this.SupportsApproxPosition == true)
> 568: {
> 569: if(Abs != "")
> 570: {
> 571: if(Abs == "BOF")
> 572: {
> 573:
> this.RS.MovePrevious();
> 574: }
> 575: else if(Abs == "EOF")
> 576: {
> 577:
> this.RS.MoveLast();
> 578:
> this.RS.MoveNext();
> 579: }
> 580: else
> 581: {
> 582: if(Abs != "MTY")
> // was empty
> 583: {
> 584:
> this.RS.Move(parseInt(Abs) - 1);
> 585: }
> 586: }
> 587: }
> 588: if(Key != "")
> 589: {
> 590: // fan out from current
> position looking for key
> 591:
> if(this.UniqueKeyColArray.length == KeyArray.length)
> 592: {
> 593: var GotBOF =
> false;
> 594: var GotEOF =
> false;
> 595: var Direction =
> -1;
> 596: var Count = 1;
> 597: var n =
> this.UniqueKeyColArray.length;
> 598: for(;;)
> 599: {
> 600: // test
> for match to key
> 601:
> this.Found = true;
> 602: for(i =
> 0; i < n; i++)
> 603: {
> 604:
> if(String(this.GetField(this.UniqueKeyColArray[i]).Value) !=
> String(KeyArray[i]))
> 605:
> {
> 606:
> this.Found = false;
> 607:
> break;
> 608:
> }
> 609: }
> 610:
> if(this.Found == false)
> 611: {
> 612:
> // key mismatch
> 613:
> if(Direction < 0)
> 614:
> {
> 615:
> if(GotBOF == false)
> 616:
> {
> 617:
> this.RS.Move(Count * Direction);
> 618:
> if(GotEOF == false)
> 619:
> {
> 620:
> Direction *= -1;
> 621:
> }
> 622:
> if(this.RS.BOF)
> 623:
> {
> 624:
> GotBOF = true;
> 625:
> if(!GotEOF)
> 626:
> {
> 627:
> this.RS.MoveNext();
> 628:
> this.RS.Move(Count);
> 629:
> Count = 1;
> 630:
> if(this.RS.EOF)
> 631:
> {
> 632:
> GotEOF = true;
> 633:
> }
> 634:
> }
> 635:
> }
> 636:
> else if(GotEOF == false)
> 637:
> {
> 638:
> Count++;
> 639:
> }
> 640:
> }
> 641:
> }
> 642:
> else
> 643:
> {
> 644:
> if(GotEOF == false)
> 645:
> {
> 646:
> this.RS.Move(Count * Direction);
> 647:
> if(GotBOF == false)
> 648:
> {
> 649:
> Direction *= -1;
> 650:
> }
> 651:
> if(this.RS.EOF)
> 652:
> {
> 653:
> GotEOF = true;
> 654:
> if(!GotBOF)
> 655:
> {
> 656:
> this.RS.MovePrevious();
> 657:
> this.RS.Move(-Count);
> 658:
> Count = 1;
> 659:
> if(this.RS.BOF)
> 660:
> {
> 661:
> GotBOF = true;
> 662:
> }
> 663:
> }
> 664:
> }
> 665:
> else if(GotBOF == false)
> 666:
> {
> 667:
> Count++;
> 668:
> }
> 669:
> }
> 670:
> }
> 671: }
> 672:
> if(GotBOF == true && GotEOF == true)
> 673: {
> 674:
> // key not found so move to abs position
> 675:
> if(this.RS.BOF)
> 676:
> {
> 677:
> this.RS.MoveNext();
> 678:
> }
> 679:
> else
> 680:
> {
> 681:
> this.RS.MoveFirst();
> 682:
> }
> 683:
> if(Abs != "")
> 684:
> {
> 685:
> if(Abs == "BOF")
> 686:
> {
> 687:
> this.RS.MovePrevious();
> 688:
> }
> 689:
> else if(Abs == "EOF")
> 690:
> {
> 691:
> this.RS.MoveLast();
> 692:
> this.RS.MoveNext();
> 693:
> }
> 694:
> else
> 695:
> {
> 696:
> var Increment = 1;
> 697:
> var Action = this.Action;
> 698:
> if(Action == \'Previous\')
> 699:
> {
> 700:
> if(Direction == 1)
> 701:
> {
> 702:
> Increment--;
> 703:
> }
> 704:
> }
> 705:
> else if(Action == \'Next\')
> 706:
> {
> 707:
> if(Direction == -1)
> 708:
> {
> 709:
> Increment++;
> 710:
> }
> 711:
> }
> 712:
> 713:
> this.RS.Move(parseInt(Abs) - Increment);
> 714:
> }
> 715:
> }
> 716:
> break;
> 717: }
> 718:
> if(this.Found == true)
> 719: {
> 720:
> break;
> 721: }
> 722: }
> 723: }
> 724: }
> 725: }
> 726: else // SupportsApproxPosition == false
> 727: {
> 728: if(KeyArray != null)
> 729: {
> 730: // move forward through
> recordset until key is found
> 731: while(!this.IsEOF())
> 732: {
> 733: var n =
> this.UniqueKeyColArray.length;
> 734: this.Found =
> true;
> 735: for(i = 0; i <
> n; i++)
> 736: {
> 737:
> if(String(this.GetField(this.UniqueKeyColArray[i]).Value) !=
> String(KeyArray[i]))
> 738: {
> 739:
> this.Found = false;
> 740:
> break;
> 741: }
> 742: }
> 743: if(this.Found)
> 744: {
> 745: break;
> 746: }
> 747: else
> 748: {
> 749:
> this.MoveNext();
> 750: }
> 751: }
> 752:
> 753: }
> 754: else if(Abs != "" && Abs !=
> "MTY")
> 755: {
> 756: // move forward through
> recordset until approx position is found
> 757: if(this.SupportsMove)
> 758: {
> 759:
> this.RS.Move(parseInt(Abs) - 1);
> 760:
> this.ApproxPosition = Abs;
> 761: }
> 762: else
> 763: {
> 764: Abs =
> parseInt(Abs);
> 765:
> this.ApproxPosition = 1;
> 766:
> while(this.ApproxPosition != Abs)
> 767: {
> 768:
> this.RS.MoveNext();
> 769:
> this.ApproxPosition++;
> 770: }
> 771: }
> 772: }
> 773: }
> 774: }
> 775: }
> 776: }
> 777: }
> 778:
> 779: function RSGetState()
> 780: {
> 781: if (this.bPreserveInputState)
> 782: {
> 783: return this.State;
> 784: }
> 785:
> 786: return "FIL:" + this.FilterCriteria + "ORD:" + this.OrderByCol +
> "ABS:" + this.GetAbsPos() + "KEY:" + this.GetKeyVals() + "PAR:" +
> this.GetParams();
> 787: }
> 788:
> 789:
> 790: function RSGetMaxRecords()
> 791: {
> 792: return this.RS.MaxRecords;
> 793: }
> 794:
> 795: function RSSetMaxRecords(lMaxRecords)
> 796: {
> 797: this.MaxRecords = lMaxRecords;
> 798: this.RS.MaxRecords = lMaxRecords;
> 799: }
> 800:
> 801: function RSGetKeyVals()
> 802: {
> 803: var KeyVals = "";
> 804: if(this.UniqueKeyColArray != null)
> 805: {
> 806: var n = this.UniqueKeyColArray.length;
> 807: if(n > 0)
> 808: {
> 809: var First = true;
> 810: for(i = 0; i < n; i++)
> 811: {
> 812: if(First == true)
> 813: {
> 814: First = false;
> 815: }
> 816: else
> 817: {
> 818: KeyVals += this.Separator;
> 819: }
> 820: if(!this.IsBOF() && !this.IsEOF())
> 821: {
> 822: var Field =
> this.GetField(this.UniqueKeyColArray[i]);
> 823: if(Field != null)
> 824: {
> 825: KeyVals +=
> String(Field.Value);
> 826: }
> 827: }
> 828: }
> 829: }
> 830: }
> 831: return KeyVals;
> 832: }
> 833:
> 834: function RSGetAbsPos()
> 835: {
> 836: var AbsPos = "";
> 837: if ((this.RS.State == 0/*adStateClosded*/)||(this.IsBOF() &&
> this.IsEOF()))
> 838: {
> 839: AbsPos = "MTY"; // empty result set
> 840: }
> 841: else
> 842: {
> 843: if(this.SupportsApproxPosition)
> 844: {
> 845: var nAbsPos = this.RS.AbsolutePosition;
> 846: if(nAbsPos == -2/*adPosBOF*/)
> 847: {
> 848: AbsPos += "BOF";
> 849: }
> 850: else if(nAbsPos == -3)
> 851: {
> 852: AbsPos += "EOF";
> 853: }
> 854: else
> 855: {
> 856: AbsPos += nAbsPos;
> 857: }
> 858: }
> 859: else
> 860: {
> 861: AbsPos += this.ApproxPosition;
> 862: }
> 863: }
> 864: return AbsPos;
> 865: }
> 866:
> 867: function RSGetParams()
> 868: {
> 869: var Params = "";
> 870: if(this.ParamArray != null)
> 871: {
> 872: var n = this.ParamArray.length;
> 873: if(n > 0)
> 874: {
> 875: var First = true;
> 876: for(i = 0; i < n; i++)
> 877: {
> 878: if(First == true)
> 879: {
> 880: First = false;
> 881: }
> 882: else
> 883: {
> 884: Params += this.Separator;
> 885: }
> 886: Pair = this.ParamArray[i];
> 887: Params += Pair["Name"];
> 888: Params += "=";
> 889: Params += Pair["Value"];
> 890: }
> 891: }
> 892: }
> 893: return Params;
> 894: }
> 895:
> 896: function RSGetColumnValue(ColName)
> 897: {
> 898: if(this.IsBOF() || this.IsEOF())
> 899: {
> 900: var Action = "" + this.Action;
> 901: if ((Action == "Previous") || (Action == "Next"))
> 902: {
> 903: return this.NoRecordMessage;
> 904: }
> 905: else
> 906: {
> 907: return this.NoFoundMessage
> 908: }
> 909: }
> 910: var Field = this.GetField(ColName);
> 911: if(Field != null)
> 912: {
> 913: if(this.DTFormat >= 0)
> 914: {
> 915: var ColType = Field.Type;
> 916: switch(ColType)
> 917: {
> 918: case 7: /*adDate*/
> 919: case 133: /*adDBDate*/
> 920: case 134: /*adDBTime*/
> 921: case 135: /*adDBTimeStamp*/
> 922: return
> RSFormatDateTime(Field.Value, this.DTFormat);
> 923: default:
> 924: break;
> 925: }
> 926: }
> 927: return Field.Value;
> 928: }
> 929: return "";
> 930: }
> 931:
> 932: function RSSetColumnValue(ColName, Val)
> 933: {
> 934: if(!this.IsBOF() && !this.IsEOF())
> 935: {
> 936: var Field = this.GetField(ColName);
> 937: if(Field != null)
> 938: {
> 939: Field.Value = Val;
> 940: }
> 941: }
> 942: }
> 943:
> 944: function RSProcessAction()
> 945: {
> 946: var Action = this.Action;
> 947: if(Action.indexOf(\'Find(\') == 0)
> 948: {
> 949: eval(this.Name + \'.\' + Action);
> 950: }
> 951: else if(Action.indexOf(\'Filter(\') == 0)
> 952: {
> 953: eval(this.Name + \'.\' + Action);
> 954: }
> 955: else
> 956: {
> 957: Action = "" + this.Action;
> 958: if(Action == \'First\')
> 959: {
> 960: this.MoveFirst();
> 961: }
> 962: else if (Action == \'Previous\')
> 963: {
> 964: this.MovePrevious();
> 965: }
> 966: else if (Action == \'Next\')
> 967: {
> 968: this.MoveNext();
> 969: }
> 970: else if (Action == \'Last\')
> 971: {
> 972: this.MoveLast();
> 973: }
> 974: else if (Action == \'Insert\')
> 975: {
> 976: this.Insert();
> 977: }
> 978: else if(Action == \'Update\')
> 979: {
> 980: this.Update();
> 981: }
> 982: else if(Action == \'Delete\')
> 983: {
> 984: this.Delete();
> 985: }
> 986: else if(Action == \'Close\')
> 987: {
> 988: this.Close();
> 989: }
> 990: else if(Action.indexOf(\'Sort\') == 0)
> 991: {
> 992: this.OrderBy();
> 993: }
> 994: else if(Action.indexOf(\'OrderBy(\') == 0)
> 995: {
> 996: eval(this.Name + \'.\' + Action);
> 997: }
> 998: }
> 999: }
> 1000:
> 1001: function RSSetMessages(NoRecordMessage, NoFoundMessage)
> 1002: {
> 1003: this.NoRecordMessage = NoRecordMessage;
> 1004: this.NoFoundMessage = NoFoundMessage;
> 1005: }
> 1006:
> 1007: function RSMoveFirst()
> 1008: {
> 1009: if(this.RS.BOF)
> 1010: {
> 1011: if(!(this.RS.EOF))
> 1012: {
> 1013: this.RS.MoveNext();
> 1014: }
> 1015: }
> 1016: else
> 1017: {
> 1018: if(this.SupportsMove)
> 1019: {
> 1020: this.RS.MoveFirst();
> 1021: }
> 1022: else
> 1023: {
> 1024: this.RS.Requery();
> 1025: }
> 1026: }
> 1027: this.ApproxPosition = 1;
> 1028: }
> 1029:
> 1030: function RSMoveNext()
> 1031: {
> 1032: if(!(this.RS.EOF))
> 1033: {
> 1034: this.RS.MoveNext();
> 1035: this.ApproxPosition++;
> 1036: }
> 1037: }
> 1038:
> 1039: function RSMovePrevious()
> 1040: {
> 1041: if(!(this.RS.BOF))
> 1042: {
> 1043: if(this.SupportsMove)
> 1044: {
> 1045: this.RS.MovePrevious();
> 1046: this.ApproxPosition--;
> 1047: }
> 1048: else
> 1049: {
> 1050: var ApproxPosition = this.ApproxPosition - 1;
> 1051: this.MoveFirst();
> 1052: while(this.ApproxPosition < ApproxPosition)
> 1053: {
> 1054: this.RS.MoveNext();
> 1055: this.ApproxPosition++;
> 1056: }
> 1057: }
> 1058: }
> 1059: }
> 1060:
> 1061: function RSMoveLast()
> 1062: {
> 1063: if(this.RS.EOF)
> 1064: {
> 1065: this.MovePrevious();
> 1066: }
> 1067: else
> 1068: {
> 1069: if(this.SupportsMove && this.SupportsCount)
> 1070: {
> 1071: this.RS.MoveLast();
> 1072: this.ApproxPosition = this.RS.RecordCount;
> 1073: }
> 1074: else
> 1075: {
> 1076: if(this.SupportsCount)
> 1077: {
> 1078: var RecordCount = this.RS.RecordCount;
> 1079: if(RecordCount > 0)
> 1080: {
> 1081: while(this.ApproxPosition <
> RecordCount)
> 1082: {
> 1083: this.RS.MoveNext();
> 1084: this.ApproxPosition++;
> 1085: }
> 1086: }
> 1087: }
> 1088: else
> 1089: {
> 1090: var LastRecord = 1;
> 1091: this.MoveFirst();
> 1092: while(!this.RS.EOF)
> 1093: {
> 1094: this.RS.MoveNext();
> 1095: LastRecord++;
> 1096: }
> 1097: LastRecord--;
> 1098: this.MoveFirst();
> 1099: while(this.ApproxPosition < LastRecord)
> 1100: {
> 1101: this.MoveNext();
> 1102: }
> 1103: }
> 1104: }
> 1105: }
> 1106: }
> 1107:
> 1108:
> 1109: function RSMove(offset)
> 1110: {
> 1111: if(this.SupportsApproxPosition)
> 1112: {
> 1113: this.RS.Move(offset);
> 1114: this.ApproxPosition += offset;
> 1115: }
> 1116: else
> 1117: {
> 1118: if(offset > 0)
> 1119: {
> 1120: while(offset > 0)
> 1121: {
> 1122: this.RS.MoveNext();
> 1123: this.ApproxPosition++;
> 1124: offset--;
> 1125: if(this.RS.EOF)
> 1126: {
> 1127: break;
> 1128: }
> 1129: }
> 1130: }
> 1131: else
> 1132: {
> 1133: var ApproxPosition = this.ApproxPosition -
> offset;
> 1134: if(ApproxPosition < 1)
> 1135: {
> 1136: ApproxPosition = 1;
> 1137: }
> 1138: this.MoveFirst();
> 1139: while(this.ApproxPosition < ApproxPosition)
> 1140: {
> 1141: this.RS.MoveNext();
> 1142: this.ApproxPosition++;
> 1143: }
> 1144: }
> 1145: }
> 1146: }
> 1147:
> 1148: function RSInsert()
> 1149: {
> 1150: if(this.Updateable != false)
> 1151: {
> 1152: this.RS.AddNew();
> 1153: this.Update();
> 1154: }
> 1155: }
> 1156:
> 1157: function RSUpdate()
> 1158: {
> 1159: if(this.Updateable == true && this.Found == true)
> 1160: {
> 1161: if(this.BindingsArray != null)
> 1162: {
> 1163: var nBindings = this.BindingsArray.length;
> 1164: for(var nBinding = 0; nBinding < nBindings;
> nBinding++)
> 1165: {
> 1166: var Binding =
> this.BindingsArray[nBinding];
> 1167: var BoundColumn = Binding["Name"];
> 1168: var BindingType = Binding["Type"];
> 1169: var FormElement = null;
> 1170: var BoundValue = Binding["Value"];
> 1171: var DoUpdate = true;
> 1172:
> 1173: if(BindingType == "FRM") // form element
> name
> 1174: {
> 1175: FormElement = BoundValue;
> 1176: if(String(Request(FormElement))
> != "undefined")
> 1177: {
> 1178: BoundValue =
> Request(FormElement);
> 1179: }
> 1180: else
> 1181: {
> 1182: BoundValue = "";
> 1183: }
> 1184: }
> 1185: else if(BindingType == "VAR") //
> javascript variable
> 1186: {
> 1187: BoundValue = eval(BoundValue);
> 1188: }
> 1189: else if(BindingType != "VAL") // literal
> value
> 1190: {
> 1191: DoUpdate = false;
> 1192: }
> 1193:
> 1194: // check whether new value is different
> from old value
> 1195: var Field = this.GetField(BoundColumn);
> 1196: if(Field != null && DoUpdate == true &&
> String(Field.Value) != String(BoundValue))
> 1197: {
> 1198: // put the value into the column
>
> 1199: if((String(BoundValue) == "") &&
> (Field.Attributes & 0x00000020/*adFldIsNullable*/))
> 1200: {
> 1201: Field.Value = null;
> 1202: }
> 1203: else if(FormElement != null &&
> String(Request(FormElement)) == "undefined")
> 1204: {
> 1205: // handle the unchecked
> state for checkbox control
> 1206: if(Field.Type ==
> 11/*adBoolean*/)
> 1207: {
> 1208: Field.Value =
> "0";
> 1209: }
> 1210: }
> 1211: else
> 1212: {
> 1213: if(this.TrimCRLF ==
> true)
> 1214: {
> 1215: var ColType =
> Field.Type;
> 1216: if(ColType ==
> 129/*adChar*/ ||
> 1217: ColType
> == 200/*adVarChar*/ ||
> 1218: ColType
> == 201/*adLongVarChar*/ ||
> 1219: ColType
> == 8/*adBSTR*/)
> 1220: {
> 1221:
> BoundValue = RSTrimCRLF(BoundValue);
> 1222: }
> 1223: }
> 1224: Field.Value =
> String(BoundValue);
> 1225: }
> 1226: }
> 1227: }
> 1228: }
> 1229: this.RS.Update();
> 1230: }
> 1231: }
> 1232:
> 1233: function RSDelete()
> 1234: {
> 1235: if(this.Updateable == true && this.Found == true &&
> !this.IsEOF() && !this.IsBOF())
> 1236: {
> 1237: this.RS.Delete();
> 1238: this.MoveNext();
> 1239: if(this.IsEOF())
> 1240: {
> 1241: this.MovePrevious();
> 1242: }
> 1243: }
> 1244: }
> 1245:
> 1246: function RSIsBOF()
> 1247: {
> 1248: return this.RS.BOF;
> 1249: }
> 1250:
> 1251: function RSIsEOF()
> 1252: {
> 1253: return this.RS.EOF;
> 1254: }
> 1255:
> 1256: function RSBeginTrans()
> 1257: {
> 1258: this.RSConnection.BeginTrans();
> 1259: }
> 1260:
> 1261: function RSCommitTrans()
> 1262: {
> 1263: this.RSConnection.CommitTrans();
> 1264: }
> 1265:
> 1266: function RSRollbackTrans()
> 1267: {
> 1268: this.RSConnection.RollbackTrans();
> 1269: }
> 1270:
> 1271: function RSClose()
> 1272: {
> 1273: this.RS.Close();
> 1274: }
> 1275:
> 1276: function RSFilter(Where)
> 1277: {
> 1278: if(Where == null)
> 1279: {
> 1280: Where = "";
> 1281: }
> 1282:
> 1283: this.FilterCriteria = Where;
> 1284: this.RS.Filter = Where;
> 1285: }
> 1286:
> 1287: function RSFind(ColumnName, Key)
> 1288: {
> 1289:
> 1290: var nArgs = RSFind.arguments.length;
> 1291: while(!this.IsEOF())
> 1292: {
> 1293: var nArg = 0;
> 1294: var KeyValueFound = true;
> 1295: for(; nArg < nArgs; nArg++)
> 1296: {
> 1297: ColumnName = "" + RSFind.arguments[nArg];
> 1298: nArg++;
> 1299: var Key = "" + RSFind.arguments[nArg];
> 1300: if(String(this.GetField(ColumnName).Value) !=
> String(Key))
> 1301: {
> 1302: KeyValueFound = false;
> 1303: break;
> 1304: }
> 1305: }
> 1306: if(KeyValueFound)
> 1307: {
> 1308: break;
> 1309: }
> 1310: else
> 1311: {
> 1312: this.MoveNext();
> 1313: }
> 1314: }
> 1315: }
> 1316:
> 1317: function RSOrderBy(OrderByCol)
> 1318: {
> 1319: if(OrderByCol != "")
> 1320: {
> 1321: this.SetOrderByCol(OrderByCol);
> 1322: this.Close();
> 1323: this.Open();
> 1324: }
> 1325: }
> 1326:
> 1327: function RSSetParam(Name, Value)
> 1328: {
> 1329: var Pair = null;
> 1330: if(this.ParamArray == null)
> 1331: {
> 1332: this.ParamArray = new Array();
> 1333: }
> 1334: else
> 1335: {
> 1336: // find name
> 1337: for(i = 0, n = this.ParamArray.length; i < n; i++)
> 1338: {
> 1339: Target = this.ParamArray[i];
> 1340: if(Target["Name"] == Name)
> 1341: {
> 1342: Pair = Target;
> 1343: break;
> 1344: }
> 1345: }
> 1346: }
> 1347: if(Pair == null)
> 1348: {
> 1349: // create new
> 1350: Pair = new Object();
> 1351: Pair["Name"] = Name;
> 1352: this.ParamArray[this.ParamArray.length] = Pair;
> 1353: }
> 1354: Pair["Value"] = Value;
> 1355: }
> 1356:
> 1357: function RSRestoreParams(Params)
> 1358: {
> 1359: if(Params != null && Params != "")
> 1360: {
> 1361: this.ParamArray = new Array();
> 1362: for(i = 0;; i++)
> 1363: {
> 1364: var Index = Params.indexOf(this.Separator);
> 1365: if(Index == -1)
> 1366: {
> 1367: Index = Params.length;
> 1368: }
> 1369: var NameValue = Params.substring(0, Index);
> 1370: var Pair = new Object();
> 1371: var Eq = NameValue.indexOf("=");
> 1372: Pair["Name"] = NameValue.substring(0, Eq);
> 1373: Pair["Value"] = NameValue.substring(Eq + 1,
> NameValue.length);
> 1374: this.ParamArray[i] = Pair;
> 1375: if(Index == Params.length)
> 1376: {
> 1377: break;
> 1378: }
> 1379: Params = Params.substring(Index + 3,
> Params.length);
> 1380: }
> 1381: }
> 1382: }
> 1383:
> 1384: function RSGetParam(Name)
> 1385: {
> 1386: if(this.ParamArray == null)
> 1387: {
> 1388: return null;
> 1389: }
> 1390:
> 1391: // find name
> 1392: for(i = 0, n = this.ParamArray.length; i < n; i++)
> 1393: {
> 1394: Target = this.ParamArray[i];
> 1395: if(Target["Name"] == Name)
> 1396: {
> 1397: return Target["Value"];
> 1398: }
> 1399: }
> 1400: }
> 1401:
> 1402: function RSSubstituteParams(SQL)
> 1403: {
> 1404: for(i = 0, n = this.ParamArray.length; i < n; i++)
> 1405: {
> 1406: var Param = this.ParamArray[i];
> 1407: var ParamName = Param["Name"];
> 1408: var nIndex = -1;
> 1409: do
> 1410: {
> 1411: nIndex = SQL.indexOf(ParamName, nIndex + 1);
> 1412: if(nIndex > 0)
> 1413: {
> 1414: // found an occurrance of the param name
>
> 1415: // now see whether it is a token or not
> by
> 1416: // testing the character before and
> after
> 1417: var C1 = SQL.charAt(nIndex - 1);
> 1418: var C2 = \'~\';
> 1419: if((nIndex + ParamName.length) <
> SQL.length)
> 1420: {
> 1421: C2 = SQL.charAt(nIndex +
> ParamName.length);
> 1422: }
> 1423: if((this.SpecialChars.indexOf(C1) != -1)
> && (this.SpecialChars.indexOf(C2) != -1))
> 1424: {
> 1425: var NewSQL = SQL.slice(0,
> nIndex);
> 1426: NewSQL += Param["Value"];
> 1427: NewSQL += SQL.slice(nIndex +
> ParamName.length, SQL.length);
> 1428: SQL = NewSQL;
> 1429: }
> 1430: }
> 1431: nIndex++;
> 1432: } while(nIndex > 0 && nIndex < SQL.length);
> 1433: }
> 1434: return SQL;
> 1435: }
> 1436:
> 1437: function RSFindBinding(ColumnName)
> 1438: {
> 1439: if(this.BindingsArray != null)
> 1440: {
> 1441: for(i = 0, n = this.BindingsArray.length; i < n; i++)
> 1442: {
> 1443: BindingObj = this.BindingsArray[i];
> 1444: if(BindingObj["Name"] == ColumnName)
> 1445: {
> 1446: return BindingObj;
> 1447: }
> 1448: }
> 1449: }
> 1450: return null;
> 1451: }
> 1452:
> 1453: function RSAddBinding(ColumnName, BoundValue, BindingType)
> 1454: {
> 1455: if(this.BindingsArray == null)
> 1456: {
> 1457: this.BindingsArray = new Array();
> 1458: }
> 1459: BindingObj = this.FindBinding(ColumnName);
> 1460: if(BindingObj == null)
> 1461: {
> 1462: BindingObj = new Object();
> 1463: BindingObj["Name"] = ColumnName;
> 1464: this.BindingsArray[this.BindingsArray.length] =
> BindingObj;
> 1465: }
> 1466: BindingObj["Type"] = BindingType;
> 1467: BindingObj["Value"] = BoundValue;
> 1468: }
> 1469:
> 1470: function RSRemoveBinding(ColumnName)
> 1471: {
> 1472: if(this.BindingsArray != null && this.BindingsArray.length)
> 1473: {
> 1474: BindingsArray = new Array();
> 1475: for(i = 0, n = this.BindingsArray.length; i < n; i++)
> 1476: {
> 1477: BindingObj = this.BindingsArray[i];
> 1478: if(BindingObj["Name"] != ColumnName)
> 1479: {
> 1480: BindingsArray[BindingsArray.length] =
> BindingObj;
> 1481: }
> 1482: }
> 1483: this.BindingsArray = null;
> 1484: this.BindingsArray = new Array();
> 1485: if(BindingsArray.length)
> 1486: {
> 1487: for(i = 0, n = BindingsArray.length; i < n; i++)
>
> 1488: {
> 1489: this.BindingsArray[i] =
> BindingsArray[i];
> 1490: }
> 1491: }
> 1492: BindingsArray = null;
> 1493: }
> 1494: }
> 1495:
> 1496: function RSGetBindingValue(ColumnName)
> 1497: {
> 1498: BindingObj = this.FindBinding(ColumnName);
> 1499: if(BindingObj == null)
> 1500: {
> 1501: return "";
> 1502: }
> 1503: return BindingObj["Value"];
> 1504: }
> 1505:
> 1506: function RSSetBindingValue(ColumnName, BoundValue)
> 1507: {
> 1508: BindingObj = this.FindBinding(ColumnName);
> 1509: if(BindingObj != null)
> 1510: {
> 1511: BindingObj["Value"] = BoundValue;
> 1512: }
> 1513: }
> 1514:
> 1515: function RSGetBindingType(ColumnName)
> 1516: {
> 1517: BindingObj = this.FindBinding(ColumnName);
> 1518: if(BindingObj == null)
> 1519: {
> 1520: return "";
> 1521: }
> 1522: return BindingObj["Type"];
> 1523: }
> 1524:
> 1525: function RSSetBindingType(ColumnName, BindingType)
> 1526: {
> 1527: BindingObj = this.FindBinding(ColumnName);
> 1528: if(BindingObj != null)
> 1529: {
> 1530: BindingObj["Type"] = BindingType;
> 1531: }
> 1532: }
> 1533:
> 1534: function RSGetBoundColumnName(BoundValue, BindingType)
> 1535: {
> 1536: if(this.BindingsArray != null && this.BindingsArray.length)
> 1537: {
> 1538: for(i = 0, n = this.BindingsArray.length; i < n; i++)
> 1539: {
> 1540: BindingObj = this.BindingsArray[i];
> 1541: if(BindingObj["Value"] == BoundValue &&
> BindingObj["Type"] == BindingType)
> 1542: {
> 1543: return BindingObj["Name"];
> 1544: }
> 1545: }
> 1546: }
> 1547: return "";
> 1548: }
> 1549:
> 1550: function RSGetBoundColumnNameByIndex(Index)
> 1551: {
> 1552: if(this.BindingsArray != null && Index >= 0 && Index <
> this.BindingsArray.length)
> 1553: {
> 1554: BindingObj = this.BindingsArray[Index];
> 1555: return BindingObj["Name"];
> 1556: }
> 1557: return "";
> 1558: }
> 1559:
> 1560:
> 1561: function CreateRS(Name, DSN, UID, PWD, SQL, UniqueKeyCols,
> Updateable, CursorType, CursorLocation, LockType, TableNames)
> 1562: {
> 1563: var Object;
> 1564: if(CreateRS.arguments.length > CreateRS.length)
> 1565: {
> 1566: // variable args
> 1567: var EvalMe = "Object = new Recordset(Name, DSN, UID,
> PWD, SQL, UniqueKeyCols, Updateable, CursorType, CursorLocation,
> LockType, TableNames";
> 1568: var nArgs = CreateRS.arguments.length;
> 1569: var nArg = CreateRS.length;
> 1570: for(; nArg < nArgs; nArg++)
> 1571: {
> 1572: EvalMe += ", CreateRS.arguments[" + nArg + "]";
> 1573: }
> 1574: EvalMe += ");"
> 1575: eval(EvalMe);
> 1576: }
> 1577: else
> 1578: {
> 1579: Object = new Recordset(Name, DSN, UID, PWD, SQL,
> UniqueKeyCols, Updateable, CursorType, CursorLocation, LockType,
> TableNames);
> 1580: }
> 1581: return Object;
> 1582: }
> 1583:
> 1584: function iif(cond, X, Y)
> 1585: {
> 1586: if(cond)
> 1587: {
> 1588: return X;
> 1589: }
> 1590: return Y;
> 1591: }
> 1592:
> 1593: function iifWithHTMLEncode(cond, X, Y)
> 1594: {
> 1595: if(cond)
> 1596: {
> 1597: if(X == null)
> 1598: {
> 1599: X = "";
> 1600: }
> 1601: return Server.HTMLEncode(X);
> 1602: }
> 1603: return Y;
> 1604: }
> 1605:
> 1606:
> 1607: function RSTrimCRLF(Value)
> 1608: {
> 1609: TrimValue = "" + Value;
> 1610: CRLFIndex = TrimValue.length;
> 1611: CRLFIndex = CRLFIndex -1;
> 1612: if(CRLFIndex >= 0)
> 1613: {
> 1614: for (;;)
> 1615: {
> 1616: if ((TrimValue.charAt(CRLFIndex) != \'\\n\') &&
> (TrimValue.charAt(CRLFIndex) != \'\\r\'))
> 1617: {
> 1618: break;
> 1619: }
> 1620: else
> 1621: {
> 1622: CRLFIndex--;
> 1623: }
> 1624: }
> 1625:
> 1626: if (CRLFIndex < 0)
> 1627: {
> 1628: CRLFIndex =0;
> 1629: }
> 1630:
> 1631: TrimValue = TrimValue.substring(0,CRLFIndex+1);
> 1632: }
> 1633:
> 1634: return TrimValue;
> 1635: }
> 1636:
> 1637: function ReplaceSingleQuoteWithTwo(Value)
> 1638: {
> 1639: var re = /\'/i;
> 1640: var RValue = String(Value).replace(re, "\'\'");
> 1641: return RValue;
> 1642: }
> 1643:
> 1644: </SCRIPT>
> 1645:
> 1646: <SCRIPT LANGUAGE=VBScript RUNAT=Server>
> 1647: function RSFormatDateTime(Date, NamedFormat)
> 1648: if Date then
> 1649: RSFormatDateTime = FormatDateTime(Date, NamedFormat)
> 1650: else
> 1651: RSFormatDateTime = Date
> 1652: end if
> 1653: end function
> 1654: </SCRIPT>
> 1655:
> 1656: '
> 1657: );
> 1658:
> 1659: ## CODE BEGIN ##
> 1660: /* Connection Pooler */
> 1661: var ConnectionCache = new ConnectionCache()
> 1662: /* server-side recordset */
> 1663: var GuestBookRecordset = new Recordset("GuestBookRecordset", "",
> "", "", "", "", true, 2, 3, 3, "");
> 1664: GuestBookRecordset_BeforeOpen();
> 1665: GuestBookRecordset.Open();
> 1666: GuestBookRecordset.ProcessAction();
> 1667: GuestBookRecordset.SetMessages("","");
> 1668: ## END ##
> 1669:
> 1670: ## CODE BEGIN ##
> 1671: function GuestBookRecordset_BeforeOpen() {
> 1672:
> 1673: }
> 1674: ## END ##
> 1675:
> 1676: $main::Response->Write(
> 1677: '
> 1678: <HTML>
> 1679: <HEAD>
> 1680: <META NAME="GENERATOR" CONTENT="Elemental Software Drumbeat 2000
> 3.04.411">
> 1681: <META HTTP-EQUIV="Content-Type" CONTENT="text/html;
> charset=iso-8859-1">
> 1682:
> 1683: <TITLE>Drumbeat 2000 - Guest Book Starting Point - Entry
> Summaries</TITLE>
> 1684: </HEAD>
> 1685: <BODY TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0
> BACKGROUND="media/images/bk_GuestBook.GIF" BGColor="#ffffff"
> LINK="#0000ff" ALink="#00ff00" VLINK="#ff0000">
> 1686:
> 1687: <A NAME="StartOfPage"></A>
> 1688:
> 1689:
> 1690: <FORM NAME="GuestBookViewSummariesForm" METHOD="Post"
> ACTION="ViewEntrySummaries.asp">
> 1691:
> 1692: <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
> 1693: <TR>
> 1694: <TD WIDTH=10 HEIGHT=90></TD>
> 1695: <TD WIDTH=16 HEIGHT=90></TD>
> 1696: <TD WIDTH=2 HEIGHT=90></TD>
> 1697: <TD WIDTH=104 HEIGHT=90></TD>
> 1698: <TD WIDTH=4 HEIGHT=90></TD>
> 1699: <TD WIDTH=90 HEIGHT=90></TD>
> 1700: <TD WIDTH=15 HEIGHT=90></TD>
> 1701: <TD WIDTH=300 HEIGHT=90></TD>
> 1702: <TD WIDTH=60 HEIGHT=90></TD>
> 1703: </TR>
> 1704: <TR>
> 1705: <TD WIDTH=10 HEIGHT=44></TD>
> 1706: <TD VALIGN=TOP WIDTH=122 COLSPAN=3><A HREF="Index.asp"><IMG
> Name="Image1" SRC="media/images/bt_MainPage.gif" Width="82" Height="11"
> Border="0"></A></TD>
> 1707: <TD VALIGN=TOP WIDTH=469 COLSPAN=5 ROWSPAN=2></TD>
> 1708: </TR>
> 1709: <TR>
> 1710: <TD WIDTH=10 HEIGHT=16></TD>
> 1711: <TD COLSPAN=3></TD>
> 1712: </TR>
> 1713: <TR>
> 1714: <TD WIDTH=10 HEIGHT=50></TD>
> 1715: <TD COLSPAN=3></TD>
> 1716: <TD VALIGN=TOP WIDTH=469 COLSPAN=5 ROWSPAN=3></TD>
> 1717: </TR>
> 1718: <TR>
> 1719: <TD WIDTH=10 HEIGHT=30></TD>
> 1720: <TD></TD>
> 1721: <TD VALIGN=TOP WIDTH=106 COLSPAN=2><INPUT TYPE=Submit
> NAME="FormButton1" value="<- Back" ></TD>
> 1722: </TR>
> 1723: <TR>
> 1724: <TD WIDTH=10 HEIGHT=24></TD>
> 1725: <TD COLSPAN=2></TD>
> 1726: <TD VALIGN=TOP WIDTH=104><INPUT TYPE=Submit
> NAME="FormButton2" value="Next ->" ></TD>
> 1727: </TR>
> 1728: <TR>
> 1729: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="10"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1730: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="16"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1731: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="2"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1732: <TD><IMG SRC="media/images/_tx_.gif" Align="left"
> Width="104" Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1733: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="4"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1734: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="90"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1735: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="15"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1736: <TD><IMG SRC="media/images/_tx_.gif" Align="left"
> Width="300" Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1737: <TD><IMG SRC="media/images/_tx_.gif" Align="left" Width="60"
> Height="1" Border="0" VSpace="0" HSpace="0"></TD>
> 1738: </TR>
> 1739: </TABLE>
> 1740: <INPUT TYPE="Hidden" NAME="GuestBookRecordset_Action">
> 1741: <INPUT TYPE="Hidden" NAME="GuestBookRecordset_Position"
> VALUE="'.((GuestBookRecordset.GetState())).'">
> 1742: <INPUT TYPE="Hidden" NAME="_Bindings" VALUE="">
> 1743: </FORM>
> 1744:
> 1745: <A NAME="EndOfPage"> </A>
> 1746: </BODY></HTML>
> 1747:
> 1748: '
> 1749: );
> 1750:
> 1751:
> 1752: #######################################################
> 1753: ## End script insert
> 1754: #######################################################
> 1755:
> 1756: $main::Response->End();
> 1757: }
> 1758: 1;
>
>
>
> If you can't help yourself, please send mail to [EMAIL PROTECTED] or
> [EMAIL PROTECTED] about your problem, including this output.
>