A nice piece of javascript to simulate Adodb Recordset.

本文介绍了一个使用 JavaScript 实现的 Recordset 类,该类模仿了 ADO Recordset 对象的行为,用于处理表格数据。提供了创建记录集、字段操作、记录移动等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Get from http://cwashington.netreach.net/depo/view.asp?Index=812&ScriptType=jscript:

ExpandedBlockStart.gif ContractedBlock.gif function  Recordset(arrFieldNames,arrData)  dot.gif {
InBlock.gif    
this.Columns = arrFieldNames;
InBlock.gif    
this.Data = arrData;
InBlock.gif
InBlock.gif    
this.Columns.Count = this.Columns.length;
InBlock.gif    
this.Record = 0;
InBlock.gif    
this.AbsolutePosition = 1;
InBlock.gif    
this.EOF = false;
InBlock.gif    
this.BOF = false;
InBlock.gif    
this.RecordCount = arrData.length;
InBlock.gif
InBlock.gif    
this.Fields = Recordset_Fields;
InBlock.gif    
this.Move = Recordset_Move;
InBlock.gif    
this.MoveFirst = Recordset_MoveFirst;
InBlock.gif    
this.MoveNext = Recordset_MoveNext;
InBlock.gif    
this.MovePrevious = Recordset_MovePrevious;
InBlock.gif    
this.MoveLast = Recordset_MoveLast;
InBlock.gif    
this.AddNew = Recordset_AddNew;
InBlock.gif    
this.Update = Recordset_Update;
InBlock.gif    
this.Delete = Recordset_Delete;
InBlock.gif    
this.CheckPosition = Recordset_CheckPosition;
InBlock.gif
InBlock.gif    
this.CheckPosition();
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_Fields(x, debug)  dot.gif {
InBlock.gif    
this.Record = this.AbsolutePosition-1;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if (isNaN(x*1)) dot.gif{
InBlock.gif        
for (var i=0; i<this.Columns.length; i++if (this.Columns[i].toUpperCase() == x.toUpperCase()) return (new Field(this.Columns[i], this.Data[this.Record][i]));
ExpandedSubBlockStart.gifContractedSubBlock.gif    }
 else if (x < this.Data[this.Record].length) dot.gif{
InBlock.gif        
return (new Field(this.Columns[x], this.Data[this.Record][x]));
ExpandedSubBlockEnd.gif    }

InBlock.gif    alert(
"JS Recordset error: Item (" + x + ") not found.");
InBlock.gif    
return (new Field(x, ""));
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_Move(i)  dot.gif {
InBlock.gif    
this.Record += i-1;
InBlock.gif    
this.AbsolutePosition += i;
InBlock.gif    
this.CheckPosition();
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_MoveFirst()  dot.gif {
InBlock.gif    
this.Record = 0;
InBlock.gif    
this.AbsolutePosition = 1;
InBlock.gif    
this.EOF = false;
InBlock.gif    
this.BOF = false;
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_MoveNext()  dot.gif {
InBlock.gif    
this.Record++;
InBlock.gif    
this.AbsolutePosition++;
InBlock.gif    
this.CheckPosition(0);
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_MovePrevious()  dot.gif {
InBlock.gif    
this.Record--;
InBlock.gif    
this.AbsolutePosition--;
InBlock.gif    
this.CheckPosition(1);
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_MoveLast()  dot.gif {
InBlock.gif    
this.Record = this.Data.length-1;
InBlock.gif    
this.AbsolutePosition = this.Data.length;
InBlock.gif    
this.EOF = false;
InBlock.gif    
this.BOF = false;
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_AddNew(xFields, xValues)  dot.gif {
InBlock.gif    
this.Record = this.Data.length;
InBlock.gif    
this.AbsolutePosition = this.Data.length+1;
InBlock.gif    
this.Data[this.Data.length] = new Array(this.Columns.length);
InBlock.gif    
this.RecordCount = this.Data.length;
InBlock.gif    
if (xFields) this.Update(xFields, xValues);
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_Update(xFields, xValues)  dot.gif {
InBlock.gif    
this.Record = this.AbsolutePosition-1;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if (typeof(xFields) == "string"dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
for (var i=0; i<this.Columns.length; i++dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (this.Columns[i].toUpperCase() == xFields.toUpperCase()) dot.gif{
InBlock.gif                
this.Data[this.Record][i] = xValues + "";
InBlock.gif                
return true;
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif        
throw "JS Recordset error: Item (" + xFields + ") not found.";
ExpandedSubBlockStart.gifContractedSubBlock.gif    }
 else dot.gif{
InBlock.gif        
if (xFields.length) for (var i=0; i<xFields.length; i++this.Update(xFields[i], xValues[i]);
InBlock.gif        
return true;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_Delete()  dot.gif {
InBlock.gif    
this.Data = this.Data.remove(this.Record);
InBlock.gif    
this.RecordCount = this.Data.length;
InBlock.gif    
this.Record--;
InBlock.gif    
this.AbsolutePosition--;
InBlock.gif    
this.CheckPosition();
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Field(strName, strValue)  dot.gif {
InBlock.gif    
this.Name = strName;
InBlock.gif    
this.Value = strValue;
ExpandedBlockEnd.gif}

None.gif
ExpandedBlockStart.gifContractedBlock.gif
function  Recordset_CheckPosition(iDirection)  dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
switch(iDirection) dot.gif{
InBlock.gif    
case 0 : // forward - check EOF
InBlock.gif
        if (this.Record == this.Data.length) this.EOF = true;
InBlock.gif        
else this.EOF = false;
InBlock.gif        
break;
InBlock.gif
InBlock.gif    
case 1 : // backward - check BOF
InBlock.gif
        if (this.Record == -1this.BOF = true;
InBlock.gif        
else this.BOF = false;
InBlock.gif        
break;
InBlock.gif    
InBlock.gif    
default :
InBlock.gif        
if (this.Record == this.Data.length || this.Data.length == 0this.EOF = true;
InBlock.gif        
else this.EOF = false;
InBlock.gif        
if (this.Record == -1 || this.Data.length == 0this.BOF = true;
InBlock.gif        
else this.BOF = false;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

It can be used like this:

None.gif var  rs  =   new  Recordset([ " field1 " " field2 " ],[[ " field1row1data " " field2row1data " ], [ " field1row2data " " field2row2data " ]]);

转载于:https://www.cnblogs.com/fengzhimei/archive/2005/10/10/251785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值