データウィンドウの使用法について混乱しているようです。
要約してみましょう:
- データベースの sql select に基づいて新しいデータウィンドウ (たとえば、グリッド) を作成し ます。
d_newrecord
select id_number, name from employee
- データウィンドウの詳細ゾーン (実行時にレコードごとに繰り返されますが、設計では 1 回だけです) では、列ごとに 1 つの列オブジェクトを配置する必要があります (ここでは と が
id_number
ありますname
) これらのオブジェクトは両方とも既存のものを表示するためのものですデータを編集し、新しいレコードを挿入するためのユーザー入力を受け取ります。
- dw を更新可能にする必要がある場合は、Rows / Update プロパティを設定することを忘れないでください。
- データウィンドウのヘッダーゾーンでは、列名を表示するためにここにある各列に関連付けられた静的テキストを持つことができます。これはテーブル データには関係ありません。
- 一部のウィンドウ オブジェクトでは、データウィンドウのコンテンツが描画される場所にデータウィンドウ コントロール を配置し、そのdataobjectとして設定します。
dw_newemployee
d_newrecord
open()
ウィンドウのイベントなどで、ある時点で dw のトランザクション オブジェクトを設定する必要があります。
dw_newemployee.SetTransObject(sqlca)
dw_newemployee.Retreive() //if you are using some retreival arguments, don't forget to include them here
テーブルに新しいデータを挿入する場合 (たとえば、ウィンドウ ボタン "追加" を使用)、最後に挿入するためにclicked()
呼び出すボタンの場合。dw_newemployee.InsertRow(0)
イベントは、ItemChanged()
1 つのセルが変更された後にトリガーされ、行、アイテム (dwobject)、および新しいデータが提供されます。イベントの戻り値を選択することで、新しいデータを受け入れるか拒否することができます。
itemchanged()
イベントでのフィールド検証の例を次に示します。
long ll_return_code = 0
string ls_column
ls_column = lower(dwo.name)
choose case ls_column
case "id_number"
if long(data) = 42 THEN
messagebox("validation error", "You cannot use 42 for the ID")
ll_return_code = 1 //reject and stay in cell
end if
case "name"
if data = "foobar" then
messagebox("validation error", "Do not use dummy value...")
ll_return_code = 2 //reject but allow to go elsewhere
end if
end choose
return ll_return_code