Thread Rating:
  • 327 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
delete-all ではレコードは実際に削除されていない?
10-24-2013, 08:05 PM,
#1
delete-all ではレコードは実際に削除されていない?

ReocrdSet.delete-all をコールした際、RecordsBulkChanges が発生すると思いますが、
このイベントの中で、レコードの数を見ると、削除される前の件数が取得されます。

after 句を使っても、件数は同じでした。

どうすれば、削除されたあとの件数(つまり0件)を取得できますか?

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},

        {on e:RecordsBulkChanges at rs:RecordSet do
            {popup-message "RecordsBulkChanges レコード数:" & rs.size}
            {after 1s do
                {popup-message "RecordsBulkChanges after レコード数:" & rs.size}
            }
        },
        {on e:RecordRemoved at rs:RecordSet do
            {popup-message "RecordRemoved レコード数:" & rs.size}
        }

    }
}
{def rg = {RecordGrid record-source = rs}}

{VBox rg,
{CommandButton
    label = "delete-all",
    {on Action do
        {rs.delete-all}
    }
}}
10-24-2013, 08:13 PM,
#2
RE: delete-all ではレコードは実際に削除されていない?
delete-all の後に、ReocrdSet.commit をコールすれば、
再度RecordsBulkChanges が発生して、0件として取得できました。

できればコミットしなくても、 delete-all で削除された結果を取得したいのですが、
不可能なのでしょうか・・・。
10-25-2013, 08:54 AM,
#3
RE: delete-all ではレコードは実際に削除されていない?
ちょっと勘違いしていました。

ReocrdSet.delete-all でレコードを削除しても、RecordSet のレコードとして除外されるわけではなく、
そのレコードの状態(Reocrd.state)が「削除」という状態になるだけなのですね。

配列から remove したり、グラフィックから detache するのと同じ感覚ではいけないということですね。

下記のように削除状態のレコードを判別すれば正常に削除後のレコードの研修を取得できました。

Code:
    def delete-records =
                {rs.select
                    filter = {RecordFilter
                                 {proc {r:Record}:bool
                                     {if RecordState.deleted == r.state then
                                         {return true}
                                      else
                                         {return false}
                                     }
                                 }
                             }
                }

            {popup-message "RecordsBulkChanges 削除済みレコード数:" & delete-records.size}



Possibly Related Threads...
Thread Author Replies Views Last Post
  Reocrd.delete では、RecordRemoved イベントは発生しない? umemura 1 2,436 10-26-2013, 07:28 PM
Last Post: John Abraham
Forum Jump:


Users browsing this thread:
3 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('996')