FC2ブログ
FC2 Analyzer

Simple Access

Microsoft Access の備忘録と管理者の不定期日記です。。。

非連結フォームでのDeleteキーによるビープ音

Accessで非連結フォームを作ってDeleteキーを押下するとビープ音が鳴る。
レコードが削除できないって意味の音なんだろうけど、非連結なんだから当たり前。
フォームのプロパティをいろいろいぢってみたけど解消せず。

自分はAccessで物を作るとき、必ず非連結フォームを多用する。
入力中のテキストボックスは問題ないが、TABでフォーカス移動してBackSpaceまたはDeleteキーを押下するといちいち「ピコーン」と音がするのは頂けない。

どうしたものか・・・
関連記事
スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

DataTables

Webシステムなどで使えるDataTables。
テーブルに対して様々な機能を持たせることができます。
Paging(Pagenation?)も実装されているので開発効率がグンと上がること間違いなし。

と思ったら、日本語の解説サイトが少ないorz
なら自分で作っちまえっ! てな感じで備忘録開始。

また3日坊主になるんでしょうけどね。
【DataTablesのインストール】

・まずはDataTablesからダウンロード(※この時点での最新版はv1.9.4)

・ダウンロードしたZIPファイルを解凍する。

・解凍して出来たフォルダをWebサイトルートディレクトリ/pluginsに放り込む。(※pluginsフォルダはなければ作成)

(※※※注記※※※)
DataTablesは多機能であるが故、解凍してできたフォルダの中にはかなりの量のファイルが含まれている。
使用するモノのみを吟味したいところだが、仕様を完全に理解するまでは混乱を招くことになるので、とりあえずフォルダごと突っ込むことにしました。


【使い方】
  1. HTMLソース内で以下の設定を行う。
    1. jQueryの参照を設定
    2. plugins/DataTables-x.x.x/media/js/jquery.dataTables.min.jsへの参照を設定
    3. plugins/DataTables-x.x.x/media/css/jquery.dataTables.cssへの参照を設定
  2. id属性を指定したTableを用意する。
    1. 多分classでもOKだと思うけど、内容の異なるテーブルを複数表示するケースを考えるとid属性がベストなはず
  3. jQueryスクリプトからTableに対してdataTable()をコールする。

【HTMLソース(参照設定)】





【HTMLソース(テーブル)】
Column 1 Column 2 etc
Row 1 Data 1 Row 1 Data 2 etc
Row 2 Data 1 Row 2 Data 2 etc
【JavaScript】

テーマ:プログラミング - ジャンル:コンピュータ

ajax + PHPのエラー処理について

ajaxの非同期通信におけるエラー処理は以下のようにすればよい。
$.ajax({
url: "php/test.php",
success: function(data, textStatus, XMLHttpRequest)
{
// 通信成功時の処理
alert("Success");
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
// 通信エラー時の処理
alert("error");
}
});

但しこれ、errorで指定したfunctionが実行されるのは、

  • 通信障害時

  • dataTypeオプションで指定した型以外のデータが返された時


などであり、例えばデータベースとの接続トラブルなどでdie()しても実行されない。

【test.php】
    die();

つまり、上記のPHPコードだけではajaxのsuccessが実行されてしまう。

通信自体は成功したけど、PHPの実行結果はエラーであったことをどうにかして表現したい。

HTTPヘッダーで200以外を返し、半ば強引にerrorスクリプトを実行させる方法もあるが、何かチガウ。
errorスクリプトは「通信に失敗した場合の処理」を担う場所ですから。

となると、多分successスクリプトの中でdataを使って切り分けるのが正解かな。
PHP側で何もechoせず終了させると、if(!data)で処理の切り分けが可能ってことだけ覚えておけばいいかも。

(ちょっと休憩)
ajaxによる通信処理でsuccessとerrorに指定したfunctionが受け取る引数は以下のとおり。

[data]
ajaxのdataTypeに応じて評価された応答データ。応答データの型がdataTypeに一致していないとerrorスクリプトが実行される。

[status]
リクエスト結果を表す文字列。

[XMLHttpRequest]
XMLHttpRequestオブジェクト

[errorThrown]
例外オブジェクト

テーマ:プログラミング - ジャンル:コンピュータ

sha1.js(ハッシュ)

ハッシュ化にはMD5とSHA1とがあるらしい?
MD5は異なる文字列がハッシュ後に同じものになる可能性がある?
SHA1でのハッシュ化が最近の流行?

JavaScriptによるSHA1ハッシュ化ライブラリ
mitsunari@cybozu labs

テーマ:プログラミング - ジャンル:コンピュータ

イベントの発生順序

イベントの発生順序を調べてみた。

調査に使用したMXML構造は以下の通り。

s:WindowedApplication
mx:Panel
mx:Form

よくありそうな構造を使って、親と子のイベント発生順序を知っておく事で後の開発に活かしたい。

で、結果が以下の通り。

Application:resize
Application:windowActivate
Application:preinitialize
    Panel:preinitialize
    Panel:childAdd
        Form:preinitialize
        Form:initialize
    Panel:initialize
Application:elementAdd
Application:contentCreationComplete
Application:initialize
    Panel:resize
        Form:resize
        Form:creationComplete
        Form:updateComplete
    Panel:creationComplete
    Panel:updateComplete
Application:creationComplete
Application:addedToStage
    Panel:addedToStage
        Form:addedToStage
Application:applicationComplete
Application:updateComplete
Application:windowComplete
(以下、クロームの終了ボタンをクリックした後に発生したイベント)
Application:invoke
Application:closing
Application:applicationDeactivate
Application:deactivate
    Panel:deactivate
        Form:deactivate
Application:windowDeactivate
Application:resize
Application:updateComplete
        Form:render
    Panel:render
Application:render
Application:close


以下の点に留意したい。
  1. 全体的な流れとしては、親のpreinitializeイベント後、親が子のインスタンス化を繰り返し、最下層までの子のインスタンス化が終了した(子のinitializeイベントが発行された)後に親のinitializeイベントが発生。その後、子のサイズ検証/確定処理等が発生し、子のcreationCompleteイベントを待って自身がcreationCompleteイベントを発行する感じ。creationCompleteイベント後、親から順にステージに追加されていき、applicationComplete、windowCompleteイベントが発生。注意すべきはcreationCompleteイベントをハンドルしてもステージのリソースへはアクセスできないこと。
  2. 起動した後はenterFrame=>frameConstructed=>exitFrameが繰り返し発生した。
  3. add/added/remove/removedイベントはいたるところで繰り返し発生する。連続してadd/addedしたり、add/addedしたものをremove/removedして再度add/addedするなど、一連の流れの中で追加と削除を繰り返すため、このイベントを利用した処理を行うのは避けるべきか?ちなみに上記ではadd/added/remove/removedイベントのトレースは数が多かったため省いている。
  4. 但し、addedToStage/removedFromStageイベントはステージへの追加およびステージからの削除が行われる度に1回ずつ発生する。ステートの切り替えのタイミングで何かしらの処理が必要なケースでは使えるイベント。
  5. preinitializeイベントは子が追加される前に発生する。子が必要とするリソースを親が用意しておくケースはこのイベントを利用する。
  6. 逆に子が用意したリソースを親が利用するケースは基本的にcreationCompleteイベントを利用。initializeイベントはresizeイベント前に発行されているため、子の表示に関するプロパティ(widthやheightなど)が正常に取得できない(きっと)。
  7. ステートの切り替えを利用した画面遷移を行う場合などで子のプロパティを操作する場合はcreationCompleteイベントではなく、addedToStageを使った方が良い。Flex4から追加されたMXMLタグによる設定「itemCreationPolicy」および「itemDestructionPolicy」にもよるが、基本的にcreationCompleteイベントは1回しか発行されないと思っていた方が良い。
  8. initializeイベントの使いどころが分からない。リファレンスでは「コンポーネントの構築と初期化プロパティの設定が完了したときに送出されます。」とあるが、ステートの切り替えで複数回発生するイベントなので、このイベントを利用してコンポーネントを追加するなどといった用途では使用できない。サイズに関する処理が完了した段階で、そのサイズに応じて「何か」をする時に使う?
まとめると、初期化に関するイベントは
  • preinitialize
  • creationComplete
  • addedToStage
  • removedFromStage
を押さえておけば8割方OKだと思う。
addedToStageとremovedFromStageはきっとセットで使うことになると思う。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

次のページ