2

PowerBuilder クラシック 12.5 を使用していますが、レポートの挿入、編集、作成、および印刷に問題があります。

更新可能なデータdw_NewEmployeeオブジェクトを含むデータウィンドウがあります。d_newrecord

  1. 列を使用して列を介してレコードを挿入するか、ウィンドウ オブジェクトに 1 行のテキストを作成するか
  2. は、itemchangedデータオブジェクトまたは単一行テキストの列と行で使用されるイベントです...検証ルールを実装する方法がわかりません。従業員を検証する例を教えてくださいID_Number
4

1 に答える 1

4

データウィンドウの使用法について混乱しているようです。

要約してみましょう:

  1. データベースの sql select に基づいて新しいデータウィンドウ (たとえば、グリッド) を作成 ます。d_newrecordselect id_number, name from employee
  2. データウィンドウの詳細ゾーン (実行時にレコードごとに繰り返されますが、設計では 1 回だけです) では、列ごとに 1 つの列オブジェクトを配置する必要があります (ここでは と がid_numberありますname) これらのオブジェクトは両方とも既存のものを表示するためのものですデータを編集し、新しいレコードを挿入するためのユーザー入力を受け取ります。
  3. dw を更新可能にする必要がある場合は、Rows / Update プロパティを設定することを忘れないでください。
  4. データウィンドウのヘッダーゾーンでは、列名を表示するためにここにある各列に関連付けられた静的テキストを持つことができます。これはテーブル データには関係ありません。
  5. 一部のウィンドウ オブジェクトでは、データウィンドウのコンテンツが描画される場所にデータウィンドウ コントロール を配置し、そのdataobjectとして設定します。dw_newemployeed_newrecord
  6. 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
于 2012-08-10T11:25:33.913 に答える