Thread Rating:
  • 301 Vote(s) - 2.8 Average
  • 1
  • 2
  • 3
  • 4
  • 5
レコード変更イベントが投げられない
10-22-2013, 12:56 PM, (This post was last modified: 10-22-2013, 12:57 PM by umemura.)
#1
レコード変更イベントが投げられない
レコードが変更されるたびに合計を計算する処理を考えたのですが、
RecordModified イベントを自分で生成して発行する際にエラーになります。
なぜでしょうか。

■エラー内容
アサーション失敗: 'not self.source.batch-events?'の為、例外Errorで停止

Code:
{let rs:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField "First", domain = String},
            {RecordField "Last", domain = String},
            {RecordField "Age", domain = int}
        },
        {RecordData First = "John", Last = "Smith", Age = 25},
        {RecordData First = "Jane", Last = "Smith", Age = 29},
        {RecordData First = "Jane", Last = "Jones", Age = 28}
    }
}
{value
    {RecordGrid
        height= 2in,
        record-source = rs
    }
}
{def tf = {TextField}}
{HBox "年齢合計", tf}

{do
    {rs.add-event-handler
        {on rm:RecordModified do
            let sum:int = 0
            {for r in rs do
                set sum = sum + r["Age"] asa int
            }
            set tf.value = {String sum}
        }
    }
}

{CommandButton
    label = "年齢合計計算",
    {on Action do
        {with rs.batch-events? = true do
            def new-r = {rs.new-record}
            {rs.append new-r}
            set new-r["First"] = "John"
            set new-r["Last"] = "Smith"
            set new-r["Age"] = 25
            {rs.handle-event {RecordModified new-r}}
        }
    }
}

batch-events?=true の状態でレコード変更イベントは発行できないということのようですね。
{rs.handle-event {RecordModified new-r}} の一文を、with rs.batch-events? = true doの外にだしたら
エラーにならなくなりました。

確かに、「レコード変更イベントをまとめよう」としているのに、
変更イベントを投げたらダメよ、というのは理解できます。

11-20-2013, 03:02 PM,
#2
RE: レコード変更イベントが投げられない
Nice sharing ...!

Forum Jump:


Users browsing this thread:
2 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('995')