前提・実現したいこと
JScriptでACCESSのaccdbに接続し、accdbから
レコードを引いてきてjsonファイルを出力するサンプルを
作成しようとしております。どうすればレコードセットを
正しく取得し値を引いてこれるようになるでしょうか。
発生している問題・エラーメッセージ
データベースの接続箇所は問題なく動いているようですが
レコードセットがうまく取得できず、値を取ってこれていないようです。
該当のソースコード
JScript
1var database; 2onload = init; 3onunload = dbClose; 4 5function init() { 6 dbConnect(); //データベース接続(ここは正常に動作しています。) 7 var panelSql = 'SELECT * FROM m_panel WHERE (panel_active_flg=1) ORDER BY panel_order;'; 8 panelDisplay(panelSql); 9} 10 11function panelDisplay(mySql) { 12 try { 13 // データベースから検索パネルに設定する値を取得する。 14 // refer:http://dqn.sakusakutto.jp/2008/05/wshadojscriptaccess-mdbsql.html 15 // http://pgcenter.web.fc2.com/contents/javascript_mdb.html 16 var rs = new ActiveXObject("ADODB.Recordset"); 17 rs.ActiveConnection = database; 18 var rec = rs.Open(mySql); 19 var rJson = '['; 20 for(; !rs.EOF; rs.MoveNext() ) { 21 rJson = rJson + 22 '{ ' + 23 '"panel_id":' + rs.fields(0) + ',' 24 '"panel_name":' + rs.fields(1) + ',' + 25 '"panel_control_type":' + rs.fields(2) + ',' 26 '"panel_default_value":' + rs.fields(3) + ',' 27 '"panel_min_value":' + rs.fields(4) + ',' 28 '"panel_max_value":' + rs.fields(5) + ',' 29 '"panel_level_amount":' + rs.fields(6) + ',' 30 '"panel_level_amount":' + rs.fields(7) + ',' 31 '"panel_order":' + rs.fields(8) + 32 '}'; 33 } 34 rJson = rJson + ']'; 35 alert(rJson); 36 } catch (e) { 37 // エラーの場合 38 alert("Error(" + (e.number & 0xFFFF) + "):" + e.message); 39 }finally { 40 rs.Close 41 } 42} 43
試したこと
以下の様にコードを書き直して実行したところ、エラーは出ないものの
RecordCountが「-1」となっていてレコードセットを正しく取得できてい
ないようです。
JScript
1function panelDisplay(mySql) { 2 try { 3 // データベースから検索パネルに設定する値を取得する。 4 var rs = database.Execute(mySql); 5 database.CursorLocation = 3; 6 console.log(mySql); 7 console.log(rs.RecordCount); 8 var rJson = '['; 9 while (!rs.EOF) { 10 rJson = rJson + 11 '{ ' + 12 '"panel_id":' + rs.fields(0) + ',' 13 '"panel_name":' + rs.fields(1) + ',' + 14 '"panel_control_type":' + rs.fields(2) + ',' 15 '"panel_default_value":' + rs.fields(3) + ',' 16 '"panel_min_value":' + rs.fields(4) + ',' 17 '"panel_max_value":' + rs.fields(5) + ',' 18 '"panel_level_amount":' + rs.fields(6) + ',' 19 '"panel_level_amount":' + rs.fields(7) + ',' 20 '"panel_order":' + rs.fields(8) + 21 '}'; 22 rs.MoveNext(); 23 } 24 rJson = rJson + ']'; 25 } catch (e) { 26 // エラーの場合 27 alert("Error(" + (e.number & 0xFFFF) + "):" + e.message); 28 }finally { 29 rs.Close 30 } 31}
補足情報(FW/ツールのバージョンなど)
Windows10 Pro 64bit
ACCESS2016
JScriptについてはテキストエディタで作成
追加です。下記の情報を埋め込んだところ
STATE:は0、Count:は-1となっておりました。
Jscript
1console.log("STATE:" + rs.State); 2console.log("Count:" + rs.RecordCount);
回答2件
あなたの回答
tips
プレビュー