2014-11-11 2 views
0

JavaScript 멍청한 놈으로 Access 데이터베이스의 데이터에서 테이블을 구성하는 작은 스크립트를 만들었습니다. 그러나 데이터가 1720 줄로 구성되어 있더라도 테이블을 만드는 데 30 초가 걸립니다. 그 시간을 어떻게 향상시킬 수 있습니까? (JavaScript 만 있고 PHP가 아닙니다.)JavaScript에서 ADODB를 통해 Acces DB의 HTML 테이블 구성

<html> 
<body> 
<script type="text/javascript"> 
    function loadDB() { 
    var body = document.body, 
     tbl = document.createElement('table'); 
    tbl.style.width='100px'; 
    tbl.style.border = "1px solid black"; 
    var connection = new ActiveXObject("ADODB.Connection"); 
    var ConnString = "Data Source=S:/queries.accdb;;Provider=Microsoft.ACE.OLEDB.12.0;"; 
    connection.open(ConnString); 
    var rs = new ActiveXObject("ADODB.Recordset"); 
    rs.Open("SELECT * from tblPosterSager", connection); 
    rs.MoveFirst(); 
    while (!rs.eof) { 
     var tr = tbl.insertRow(); 
     var Team = tr.insertCell(); 
     Team.appendChild(document.createTextNode(rs.fields("Team"))); 
     Team.style.border = "1px solid black"; 
     var Ktonr = tr.insertCell(); 
     Ktonr.appendChild(document.createTextNode(rs.fields("Account"))); 
     Ktonr.style.border = "1px solid black"; 
     var Valuedate = tr.insertCell(); 
     Valuedate.appendChild(document.createTextNode(rs.fields ("Valuedate"))); 
     Valuedate.style.border = "1px solid black"; 
     var Valuta = tr.insertCell(); 
     Valuta.appendChild(document.createTextNode(rs.fields("Currency"))); 
     Valuta.style.border = "1px solid black"; 
     var Belob = tr.insertCell(); 
     Belob.appendChild(document.createTextNode(rs.fields("Amount"))); 
     Belob.style.border = "1px solid black"; 
     var DC = tr.insertCell(); 
     DC.appendChild(document.createTextNode(rs.fields("DC"))); 
     DC.style.border = "1px solid black"; 
     var Stjerne = tr.insertCell(); 
     Stjerne.appendChild(document.createTextNode(rs.fields("Star"))); 
     Stjerne.style.border = "1px solid black"; 
     var Kommentar = tr.insertCell(); 
     Kommentar.appendChild(document.createTextNode(rs.fields("Comment"))); 
     Kommentar.style.border = "1px solid black"; 
     rs.MoveNext(); 
    } 
    rs.close(); 
    connection.close(); 
    body.appendChild(tbl); 
} 
</script> 
</body> 
</html> 

답변

1

해석 언어로, 자바 스크립트는 느리고 Access db도 있습니다. 정확한 그림을 얻으려면 애플리케이션의 개별 프로세스 시간을 정해야합니다 : HTML 요소를 생성하지 않고 데이터베이스를 읽는 데 걸리는 시간 (레코드 세트를 만들고 루프백 함) 삽입하지 않고 tbl 요소를 만드는 데 걸리는 시간. 본문 문서에 삽입하는 데 걸리는 시간.

그러나 테스트하지 않고 tbl 요소의 작성 및 삽입이 두 가지 가장 느린 프로세스라는 것을 알면 놀랄 것입니다. 그래서 동적 노드를 사용하여 빌드하는 대신; 대신 새 HTML을 일반 텍스트로 빌드하고 지정 innerText를 사용하여 삽입해야합니다. IE 외부에서 몇 가지 문제가 발생하므로이 주제에 대한 자세한 내용은 'innerText' works in IE, but not in Firefox을 참조하십시오.

+0

대신 document.write를 사용하면 두 번째 단계가 걸립니다. 대신 innerText를 살펴볼 것입니다. 감사. – MNor