投稿

2013の投稿を表示しています

JavaScriptとACCESSでちょこっとやってみたその9

ひと通り作成したのを見なおしてみると。 かなり不恰好なソース・・・。 ひとまずの修正点として ・変数名に統一感がないのでルール決めて綺麗にする。 ・同一jsで冗長なコードが多いんで、これを束ねてシンプルに。 ・画面デザインがぐちゃぐちゃなのでレイアウトを整える。 ・各jsで別jsに切り出せそうな処理があるんでこれを切出す。 動かすと警告メッセージが出まくってうざいというのがありますが ひとまずは動くようにはなっています。 ちなみにIE9でしか動作確認してないです。 まぁもう少しスキルがついたら もっとしっかりしたの作れるんかなぁ・・・ ・バックエンドのDBを用意してそっちと接続させる。 ・サニタイジングをしっかり施す ・エラー処理をもう少ししっかり書く ・SQLをサーバサイドに切り出して隠蔽する もしご親切な方いらっしゃったらソースにご指南いただけると 幸いです。

JavaScriptとACCESSでちょこっとやってみたその8

イメージ
それとDataBaseOperate.jsがデータベース接続部分です。 ACCESS2010でaccdb形式が標準なんで、mdbではなく accdbで作成してみました。 DataBaseOperate.js var database; function dbConnect() { //データベースに接続する関数 database = new ActiveXObject("ADODB.Connection"); database.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\DATA\\hogehoge\\app\\DateReport.accdb"); // alert("データベースに接続しました。"); } function dbClose() { //データベースを切断する関数 database.Close(); database = null; // alert("データベースを切断しました。"); } それから参考までに各テーブルの構造 m_ActionPlan m_Administration m_Businessyear m_Emp m_Matter m_Task t_dailyreport t_workplan

JavaScriptとACCESSでちょこっとやってみたその7

そしてDailyReportDownload.jsです。データベースのデータをCSVで吐き出す部分 IE10でまともに動かなかったので原因調査中。画面描画分のCSVデータダウンロードの 箇所はかなり悩みました。 日付で範囲検索出来ないので、そこは改善したい。これもまたベタベタコード 参照サイト http://blog.goo.ne.jp/xmldtp/e/bdc416e4985f02f60b0399864d49fd3f DailyReportDownload.js var EmpCd=location.search.substring(1); //ログイン画面から担当者CD取得 onload = init; onunload = dbClose; //* //* 初期設定をする関数 //* function init() { //実績日表示 txtReportday = document.getElementById("txtReportday"); var txtdate = new DateFormat("yyyy/MM/dd"); txtdate = txtdate.format(new Date()); txtReportday.value = txtdate; //計画日のテキストボックス制御 txtReportday.onblur = function () { this.style.backgroundColor = "#ffffff"; } document.getElementById("btnDaySearch").onclick = function() { txtDateUpdate(txtReportday); } //画面ダウンロードボタン制御 document.getElementById("btnViewDownload").onclick = function () { ViewDownload(); } //全件ダウンロードボタン制御

JavaScriptとACCESSでちょこっとやってみたその6

さてDailyReportView.jsです。ここは、テーブルの動的変更部分で 結構ベタベタなことしてます。テーブル表示の部分をシンプルにしたいのと。 同一の案件ならセル結合させたいなぁと思っていますが、 そこまでスキルがついて来なかった。EXCELのセル結合みたいな感じに したいと思いましたが断念 参考にさせてもらったサイト、ありがとうございます。 http://www.abe-tatsuya.com/web_prog/javascript/add_table_rows.php http://www.yscjp.com/doc/table1.html DailyReportView.js var EmpCd=location.search.substring(1); //ログイン画面から担当者CD取得 onload = init; onunload = dbClose; //* //* 初期設定をする関数 //* function init() { //実績日表示 txtReportday = document.getElementById("txtReportday"); var txtdate = new DateFormat("yyyy/MM/dd"); txtdate = txtdate.format(new Date()); txtReportday.value = txtdate; //計画日のテキストボックス制御 txtReportday.onblur = function () { this.style.backgroundColor = "#ffffff"; } document.getElementById("btnDaySearch").onclick = function() { txtDateUpdate(txtReportday); } //データベース接続 dbConnect(); // 担当者をセットして画面の初期表示 EmpCdisplay(EmpCd); DisPl

JavaScriptとACCESSでちょこっとやってみたその5

そして今回の本体部分「DailyReport.js」です。 やっぱり、テキストボックス描画やなんかのところをシンプルに したい。おもいっきりさっきのコピペ感が漂っています。 ここでは細かい動き。時間再計算部分を自動で走らせたり 日付が変わったらボタンを押さずに再描画とかできないかなぁ。 と、後はレイアウトがガタガタなんでいつかは整えたほうがいいなぁ。 DailyReport.js var EmpCd=location.search.substring(1); onload = init; onunload = dbClose; //* //* 追加ボタン押下時に入力項目を追加する。 //* var ItemField = { //div要素の中で最大のitemNOを取得してcurrentNumberにセットする。 currentNumber: 0, itemTemplate: '<table border="1"><tr><td>実績ID :<input type="text" name="txtReportCd__count__" id="txtReportCd__count__" style ="width:30px" onFocus="this.style.backgroundColor=\'#ffff00\'" onBlur="this.style.backgroundColor=\'#ffffff\'" value="" \/>' + '計画ID :<input type="text" name="txtPlanCd__count__" id="txtPlanCd__count__" style ="width:30px" onFocus="this.style.backgroundColor=\'#ffff0

JavaScriptとACCESSでちょこっとやってみたその5

そしてDailyPlan.jsです。 ボタンを押したらテキストボックスを増やしたり減らしたり するところは下記のサイトを参照させてもらいました。 http://vkgtaro.jp/2007/10/28/000618 http://www.abe-tatsuya.com/web_prog/javascript/add_table_rows.php http://www.cozzbox.com/wordpress/archives/545 テキストボックス追加部分とデータを表示するところで 似たようなことを書いてるんで、ここを何とか1つにできないかなぁと すっごくメンテナンスしづらいんでどうにかしたいところ。 今後の課題かな ================================================ var EmpCd=location.search.substring(1);     //ログイン画面から担当者CD取得 onload = init; onunload = dbClose; //* //* 追加ボタン押下時に入力項目を追加する。 //* var ItemField = {     //div要素の中で最大のitemNOを取得してcurrentNumberにセットする。     currentNumber: 0,     itemTemplate: '計画ID :<input type="text" name="txtPlanCd__count__" id="txtPlanCd__count__"  style ="width:30px" onFocus="this.style.backgroundColor=\'#ffff00\'" onBlur="this.style.backgroundColor=\'#ffffff\'"  value="" \/>'                  + '課題:<span id="MatterCdDisplay__co