惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - fengzhimei

The template you have chosen is invalid or cannot be found. CSS trick : text-transform Site Definition KickStart Project Transform between Hex and Dec in Javascript - fengzhimei Visual Studio 2005 Web Application Projects Template Overcome limitation of activate ActiveX control in IE "Suggested Web Parts" in SharePoint 2007 Web Part picker page. - fengzhimei Extend toolbar of HtmlEditor in SharePoint 2007 Expand querystring in URL with JavaScript Create a AJAX enabled WebPart for SharePoint2007 by using ASP.NET 2.0 client callback feature Code view is missing in SharePoint Designer Beta 2 when you try to edit a WSS v3 site. MOSS2007(Beta) SDK is online. .Net Framework v2.0 built-in tools StringBuilder in Javascript Remove duplicate rows from a table Remove duplicate items from collection Programatically download file from document library. Reset VSS Admin Password Html entity encoder/decoder
A nice piece of javascript to simulate Adodb Recordset.
fengzhimei · 2005-10-10 · via 博客园 - fengzhimei

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

function Recordset(arrFieldNames,arrData) {
    
this.Columns = arrFieldNames;
    
this.Data = arrData;

    
this.Columns.Count = this.Columns.length;
    
this.Record = 0;
    
this.AbsolutePosition = 1;
    
this.EOF = false;
    
this.BOF = false;
    
this.RecordCount = arrData.length;

    
this.Fields = Recordset_Fields;
    
this.Move = Recordset_Move;
    
this.MoveFirst = Recordset_MoveFirst;
    
this.MoveNext = Recordset_MoveNext;
    
this.MovePrevious = Recordset_MovePrevious;
    
this.MoveLast = Recordset_MoveLast;
    
this.AddNew = Recordset_AddNew;
    
this.Update = Recordset_Update;
    
this.Delete = Recordset_Delete;
    
this.CheckPosition = Recordset_CheckPosition;

    
this.CheckPosition();
}


function Recordset_Fields(x, debug) {
    
this.Record = this.AbsolutePosition-1;
    
if (isNaN(x*1)) {
        
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]));
    }
 else if (x < this.Data[this.Record].length) {
        
return (new Field(this.Columns[x], this.Data[this.Record][x]));
    }

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


function Recordset_Move(i) {
    
this.Record += i-1;
    
this.AbsolutePosition += i;
    
this.CheckPosition();
}


function Recordset_MoveFirst() {
    
this.Record = 0;
    
this.AbsolutePosition = 1;
    
this.EOF = false;
    
this.BOF = false;
}


function Recordset_MoveNext() {
    
this.Record++;
    
this.AbsolutePosition++;
    
this.CheckPosition(0);
}


function Recordset_MovePrevious() {
    
this.Record--;
    
this.AbsolutePosition--;
    
this.CheckPosition(1);
}


function Recordset_MoveLast() {
    
this.Record = this.Data.length-1;
    
this.AbsolutePosition = this.Data.length;
    
this.EOF = false;
    
this.BOF = false;
}


function Recordset_AddNew(xFields, xValues) {
    
this.Record = this.Data.length;
    
this.AbsolutePosition = this.Data.length+1;
    
this.Data[this.Data.length] = new Array(this.Columns.length);
    
this.RecordCount = this.Data.length;
    
if (xFields) this.Update(xFields, xValues);
}


function Recordset_Update(xFields, xValues) {
    
this.Record = this.AbsolutePosition-1;
    
if (typeof(xFields) == "string"{
        
for (var i=0; i<this.Columns.length; i++{
            
if (this.Columns[i].toUpperCase() == xFields.toUpperCase()) {
                
this.Data[this.Record][i] = xValues + "";
                
return true;
            }

        }

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

}


function Recordset_Delete() {
    
this.Data = this.Data.remove(this.Record);
    
this.RecordCount = this.Data.length;
    
this.Record--;
    
this.AbsolutePosition--;
    
this.CheckPosition();
}


function Field(strName, strValue) {
    
this.Name = strName;
    
this.Value = strValue;
}


function Recordset_CheckPosition(iDirection) {
    
switch(iDirection) {
    
case 0 : // forward - check EOF
        if (this.Record == this.Data.length) this.EOF = true;
        
else this.EOF = false;
        
break;

    
case 1 : // backward - check BOF
        if (this.Record == -1this.BOF = true;
        
else this.BOF = false;
        
break;
    
    
default :
        
if (this.Record == this.Data.length || this.Data.length == 0this.EOF = true;
        
else this.EOF = false;
        
if (this.Record == -1 || this.Data.length == 0this.BOF = true;
        
else this.BOF = false;
    }

}

It can be used like this:

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