2.步驟2:將上面json文字存檔後,再讀入成表格,以驗證資料是否正確
http://danml.com/js/download.js
<script type="text/javascript" src="download.js"></script>
download(data, strFileName, strMimeType);
download("hello world", "dlText.txt", "text/plain");
download("data:text/plain,hello%20world", "dlDataUrlText.txt", "text/plain");
download(new Blob(["hello world"]), "dlTextBlob.txt", "text/plain");
var str= "hello world", arr= new Uint8Array(str.length); str.split("").forEach(function(a,b){ arr[b]=a.charCodeAt(); }); download( arr, "textUInt8Array.txt", "text/plain" );
download(document.body.outerHTML, "dlHTML.html", "text/html");
download(new Blob(["hello world".bold()]), "dlHtmlBlob.html", "text/html");
$.ajax({ url: "/download.html", success: download.bind(true, "text/html", "dlAjaxCallback.html") });
(5).適用範圍Compatibility:
download.js works with a wide range of devices and browsers.
You can expect it to work for the vast majority of your users, with some common-sense limits:
(B).strConn= "Provider=Microsoft.ACE.Oledb.12.0;Data source=D:\Northwind.accdb;Persist Security Info=False";
*若javascript網頁在client端執行,會讀取client端的d:\資料庫
*若javascript網頁在server端執行,會讀取client端的d:\資料庫
(C).strConn= "Provider=Microsoft.ACE.Oledb.12.0;Data source=\\Northwind.accdb;Persist Security Info=False";
*若javascript網頁在client端d硬碟裡,執行會讀取client端的c:\資料庫
*若javascript網頁在server端執行,會讀取client端的c:\資料庫
(D).strConn= "Provider=Microsoft.ACE.Oledb.12.0;Data source=Northwind.accdb;Persist Security Info=False";
*若javascript網頁在client端執行,不能讀取同目錄裡的資料庫
*若javascript網頁在server端執行,不能讀取同目錄裡的資料庫
//(A).設定連結資料庫字串strConn
//####### Access 2003 (*.mdb) ##############
strConn= "Provider=Microsoft.Jet.Oledb.4.0;Data source = D:\Northwind.mdb;Persist Security Info=False";
//'####### Access 2007 (*.accdb) ##############
//strConn= "Provider=Microsoft.ACE.Oledb.12.0;Data source= D:\資料庫名稱.accdb;Persist Security Info=False";
//'####### Excel 2003 (*.xls) ##############
//strConn= "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";Data Source== D:\資料庫名稱.xls;Persist Security Info=False";
//'####### Excel 2008 (*.xlsx) ##############
//strConn= "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";Data Source= D:\資料庫名稱.xlsx;Persist Security Info=False";
//####### 以 Windows 驗證登入帳戶 SQL Server 2005 ######################
//strConn= "Provider=sqloledb;Data Source=伺服器名稱;Initial Catalog=資料庫名稱;User Id=帳戶名稱;Password=密碼;Integrated Security=SSPI;"
//####### 以 SQL Server 驗證登入帳戶 SQL Server 2005 (2種方法) ##############
//strConn= "Provider=sqloledb;Data Source=伺服器名稱;Initial Catalog=資料庫名稱;User Id=帳戶名稱;Password=密碼;"
//strConn= "Provider=SQLNCLI.1;Data Source=伺服器名稱;Initial Catalog=資料庫名稱;User Id=帳戶名稱;Password=密碼;"
////####### txt/csv ################################
//注意:若第一列有欄位名稱,則HDR=YES (預設值為YES)(第一行當欄位名稱處理)
//注意:若第一列無欄位名稱,直接就是數據了,則HDR=NO (第一行當數據處理)
//strConn= "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Text;HDR=YES';Data Source=txt/csv目錄"
var conn = new ActiveXObject("ADODB.Connection");
conn.Open(strConn);
var rs = new ActiveXObject("ADODB.Recordset");
//(B).執行SQL指令,並將查詢資料表結果儲存於 Recordset (rs)
var SQL = "select * from 員工";
rs.Open(SQL, conn);
rs.MoveFirst();
str ="";
//(C).將查詢結果(取得欄位名稱及內容)以while(){..}迴圈將每一筆數據列出在畫面
while (!rs.EOF) {
str += rs(0).value + rs(1).value +rs(2).value +rs(3).value +rs(4).value +"<br/>";
rs.movenext();
};
document.getElementById("id01").innerHTML=str;
//(D).將查詢結果rs物件,conn連結物件都關閉
rs.Close();
conn.Close();
rs(i).name:第i個欄位的欄位名稱
rs("欄位名稱").value:讀取某個特定欄位名稱的資料
rs(i).value:第i個欄位的資料
rs.EOF:是否已指到最後一筆資料,是為True,反之為False
rs.Fields.Count:取得欄位數目
rs.MoveNext:將指標移到下一筆
rs.MovePrev:將指標移到上一筆
rs.MoveFirst:將指標移到第一筆
rs.MoveLast:將指標移到最後一筆
while (!rs.EOF)
{
//................
//掃描全部查詢到的資料內容
rs.MoveNext();
}
accessobj = new Array();
while (!rs.EOF) {
//把access資料轉成obj物件陣列
accessobj[i] = new Object();
accessobj[i].id = rs("員工編號").value;
accessobj[i].name = rs("姓名").value;
accessobj[i].englishname = rs("名").value;
accessobj[i].address = rs("地址").value;
accessobj[i].tel =rs("電話號碼").value;
i++;
rs.movenext();
};
Recordset物件
屬性 | 資料型態 | 說明 |
AbsolutePage | Long | 指定Recordset目前記所在的分頁 |
AbsolutePosition | Long | 指定Recordset目前記錄絕對位置 |
ActiveCommand | Variant | 指向建立Recordet的Command物件之指標 |
ActiveConnection | String或Connection物件 | 指定用來取回查詢結果的Connection物件 |
BOF | Boolean | 資料指標的位置是否在檔案的開頭 |
Bookmark | Variant | 允許回到Recordset內指定的資料位置 |
CacheSize | Long | 指定ADO放在伺服器記憶體的位置 |
CursorLocation | Long | 指定Cursor函式庫的位置 |
CursorType | CursorTypeEnum | 指定用來存取查詢結果的Cursor型態 |
DataMember | String | 控制資料來源中欲連結的Recordset |
DataSource | 物件 | 允許將Recordset連結到資料來源 |
EditMode | EditModeEnum | Recordset目前所在記錄的編輯狀態 |
EOF | Boolean | 資料指標是否在標案的結尾 |
Fields | Field物件集合 | 查詢結果中欄位物件的集合 |
Filter | Variant | 回傳Recordset物件中特定的記錄 |
lndex | String | 控制Recordset物件目前作用中的索引 |
LockType | LockTypeEnum | 指定Recordsetsnm 物件進行更新與鎖定資料的方式 |
MarshalOption | Long | 控制包含於Recordset物件中的資料 |
MaxRecords | Long | 查詢結果的最大資料筆數 |
PageCount | Long | Recordset分頁的數目 |
PageSize | Long | Recordset中每一個分頁所包含的資料數 |
Properties | Property物件集合 | 動態屬性的集合 |
RecordCount | long | Recordset物件中記錄的筆數 |
Sort | String | 重新排序Recordset物件內的資料 |
Source | String或Command物件 | 包含用來建立Recordset物件的查詢指令字串 |
State | Long | Recordset物件目前的狀態 |
Status | RecordStatvsEnum | 目前記錄更新的狀態 |
StalnSync | Boolean | 控制Recordset時間資料保持同步 |
方法 | 重要參數 | 說明 |
AddNew | NA | 新增一筆資料到Recordset |
Cancel | NA | 取消非同步查詢 |
CancelBatch | NA | 取消批次更新 |
CancelUpdate | NA | 取消目前編輯中的記錄變更 |
Clone | NA | 復製一個相同的Recordset物件 |
Close | NA | 關閉Recordset物件 |
CompareBookmarks | Bookmark1 As ComparEnum Bookmark2 As CompareEnum |
比較同一個Recordset物件內的兩個bookmark |
Delete | NA | 刪除目前的記錄 |
Find | Criteria As String | 搜尋特定條件的記錄 |
GetRows | NA | 從Recordset中傳回一個二維陣列的資料 |
GetString | StringFormat As StingFormatEnum NumRows As LongColumnDelimiter As StringRowDelimiter As String |
從物件中傳回一個字串資料 |
Move | NullExpr As String Start As String |
將資料指標移動到指定的位置 |
MoveFirst | NA | 將資料指標移動到第一筆 |
MoveLast | NA | 將資料指標移動到最後一筆 |
MoveNext | NA | 將資料指標移動到下一筆 |
MovePrevious | NA | 將資料指標移動到上一筆 |
NextRecordset | NA | 取回批次查詢下一個查詢結果 |
Open | Source As String ActiveConnection As Connection CursorType As CursorTypeEnum LockType As LockTypeEnum |
開啟Recordset物件 |
Requery | NA | 重新執行查詢 |
Resync | NA | 由資料庫中取回Recordset所包含的資料 |
Save | Destination As String PersistFormat AsPErsistFormat Enum |
將Recordset內的資料儲存成檔案 |
Seek | KeyValues As Array | 以指定的字串搜尋資料 |
Surpports | CursorOptiobns As CursrOption Enum |
Recordset物件是否支援特殊功能 |
Update | Fields As Array Values As Array |
將等待更新的資料寫入Recordset中 |
Updatebatch | NA | 將批次更新的資料送到資料庫中 |
員工編號 | 姓名 | 英文名 | 職稱 | 稱呼 | 出生日期 | 雇用日期 | 地址 | 城市 | 行政區 | 區域號碼 | 國家地區 | 電話號碼 |
1 | 張瑾雯 | Mary | 業務 | 小姐 | 1968/12/8 | 1992/1/5 | 北市仁愛路二段56號 | 台北市 | 中山 | 98122 | (02) 2555-9857 | |
2 | 陳季暄 | Bradley | 業務經理 | 先生 | 1952/2/19 | 1992/8/14 | 北市敦化南路一段1號 | 台北市 | 大同 | 98401 | (02) 2555-9482 | |
3 | 趙飛燕 | Kim | 業務 | 小姐 | 1963/8/30 | 1992/4/1 | 北市忠孝東路四段4 號 | 台北市 | 松山 | 98033 | (02) 2555-3412 | |
4 | 林美麗 | Chris | 業務 | 小姐 | 1958/9/19 | 1993/5/3 | 北市南京東路三段3號 | 台北市 | 景美 | 98052 | (02) 2555-8122 | |
5 | 劉天王 | Mike | 業務經理 | 先生 | 1955/3/4 | ######## | 北市北平東路24號 | 台北市 | 松山 | 98552 | (02) 2555-4848 | |
6 | 黎國明 | Bill | 業務 | 先生 | 1963/7/2 | ######## | 北市中山北路六段88號 | 台北市 | 中山 | 15524 | (02) 2555-7773 | |
7 | 郭國臹 | Steven | 業務 | 先生 | 1960/5/29 | 1994/1/2 | 北市師大路67號 | 台北市 | 大同 | 55555 | (02) 2555-5598 | |
8 | 蘇涵蘊 | Maggie | 業務主管 | 小姐 | 1958/1/9 | 1994/3/5 | 北市紹興南路99號 | 台北市 | 信義 | 88888 | (02) 2555-1189 | |
9 | 孟庭亭 | Linda | 業務 | 小姐 | 1969/7/2 | ######## | 北市信義路二段120號 | 台北市 | 大同 | 33333 | (02) 2555-4444 | |
12 | 賴俊良 | Eddie | 資深工程師 | 先生 | 1972/12/6 | 1995/12/6 | 北市北平東路24 號3 樓之一 | 台北市 | 信義 | 11112 | 3224932 | |
13 | 何大樓 | David | 助手 | 先生 | 1961/12/6 | 1993/12/6 | 北市北平東路24 號3 樓之一 | 台北市 | 景美 | 53432 | 3224932 | |
14 | 王大德 | John | 工程師 | 先生 | ######## | ######## | 北市北平東路24 號3 樓之一 | 台北市 | 內湖 | 53432 | 3224931 |