2009年11月24日火曜日

Yawdbaでルール設計中(1)

約1ヶ月近くアップしていませんでした。現在、Yawdbaでのルールを考えています。

Yawdbaのルールは、主に、SQLコマンドなどを通じてWebに表示するテーブルを作成する[Control]セクションと、[Control]セクションで得られたテーブルをWeb画面に表示する際の見た目を定義する[View]セクション、さらに[View]セクションで得られたhtml画面のスタイルを定義する[StylSheet]セクションから構成されます。

現在の考えている案は、以下のようになります。
[Control]
Table = Query("SELECT ID, DATE, FIELD1 FROM MYDB WHERE DATE=#%Param%#");
SQLExec="UPDATE MYDB SET DATE1 = #$MYDB.DATE$#,
FIELD1 = "$MYDB.FIELD1$' WHERE ID = %MYDB.ID%";

[View]
table {
label {
MYDB.DATE = 日付;
MYDB.FIELD1 = 値;
body {
MYDB.DATE=date[YY/MM/DD];
MYDB.FIELD1=text[20];
MYDB.ID=hidden;
}
}

上の例では、データベースのMYDBテーブルからブラウザのParamパラメタで指定された日付を検索して、ID、DATE、FIELD1を表示するとともに、DATEフィールドとFIELDフィールドを入力フィールドとして値を変更するものです。
バッククォーテーション(`)で指定された文字列が、SQLコマンドとなりますが、この中の$あるいは%で囲まれた部分が変数名となります。$で囲まれた変数は、入力フィールドとして動作し、%で囲まれた変数は、埋め込みフィールドとして動作することになります。

したがって、
  Table = Query(`SELECT ID, DATE, FIELD1 FROM MYDB WHERE DATE=#%Param%#`);

のParamは、%で囲まれているので、この変数部分にHttpのGetパラメータの値が埋めもまれ、SQL文字列が完成し、処理する内部テーブルが完成します。
次に、SQLExecでは、データベースのSQL更新のSQLコマンドを定義している。ここでは、$で囲まれたMYDB.DATE変数とMYDB.FIELD1変数が入力フィールドとなります。さらに、その後のbodyでこららの変数の形が定義されています。

因みに、内部テーブルに取り込んだMYDB.IDは、bodyのhiddenパラメータで表示しないように定義しているので、Web画面上では、MYDB.IDは表示しません。

皆さんの意見を頂けると助かります。お願いします。

0 件のコメント:

コメントを投稿