Tabular Data Control(TDC)を使うと、 別に用意したテキストファイルを リードオンリーのデータベースとして使うことができます。 データとページ(プログラム)を別々にすることによって、 トータルのダウンロード量を減らしたり、メンテを簡単にすることができます。
まず、カンマ区切りのテキストファイルを用意します。
data/score.csv ------------------------------------------- 名前,性,国語:Int,算数:Int,理科:Int,社会:Int さくら,女,75,71,8,66 知世,女,62,2,89,60 小狼,男,51,28,70,31 千春,女,68,61,46,12 奈緒子,女,89,55,69,24 利佳,女,79,30,79,81最初の行がフィールド名、次の行からが各レコードになります。
<OBJECT ID="Score" WIDTH=0 HEIGHT=0
CLASSID="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">
<PARAM NAME="DataURL" VALUE="data/score.csv">
<PARAM NAME="UseHeader" VALUE="true">
</OBJECT>
これをスクリプトで利用するには、
var rs = Score.recordset; //ScoreはオブジェクトのID
としてActiveX Data Objects(ADO)のレコードセットオブジェクトを取得して、
これを操作していきます。
function test1() {
Score.Sort = "国語";
Score.Reset();
var rs = Score.recordset;
var name = new Array();
var n = 0;
while(!rs.EOF) {
name[n++] = rs.Fields("名前").value;
rs.MoveNext();
}
span1.innerText = name.join(",");
}
ボタンを押すと、その隣りに国語の点数が低い順に名前が並びます。
TDCオブジェクトのUseHeaderプロパティを
trueに設定すると、
データソースのテキストファイルの一行目はフィールド名とみなされます。
フィールド名で、
TDCオブジェクトにSortプロパティを設定すると
並べ替えができます。
Sortプロパティを設定したあと、
必ず Resetメソッドを行なってください。
こうして初めてSortプロパティの設定が有効になります。
レコードセットはレコードの集まりで、カレントのレコードというものを持っています。
カレントのレコードは次の形でFieldsを使って
データを読むことができます。
fieldname:type
とすると、そのフィールドはそのタイプとみなされ、並べ替えなどが行なえます。
タイプには、
String, Date, Boolean, Int, Float
があります。
Score.Sort = "国語";
このようにすると、国語の列をキーとして昇順に並べ替えが行われます。
頭に"-"を付ければ降順になります。
Score.Sort = "-国語";
頭に"+"を付けた場合は昇順になります。
また、複数のキーで並べたいときは、セミコロンで区切って設定します。
Score.Sort = "-算数;国語";
先に書かれるほど優先度の高いキーになります。
Score.Reset();
recordset_object.Fields(fieldname).value
カレントのレコードの位置の移動は通常、MoveNext
メソッドで行ないます。名前の通り次のレコードに移ります。
最後のレコードで次のレコードに移ると、
EOFプロパティがtrue
にセットされます。
これを用いて、最後のレコードまで処理が行なわれたかを判別します。
例えば、上の例で名前を全て、
配列 name に格納するには次のようにします。
var n = 0;
while(!rs.EOF) {
name[n++] = rs.Fields("名前") + "";
rs.MoveNext();
}