Thread Rating:
  • 268 Vote(s) - 2.69 Average
  • 1
  • 2
  • 3
  • 4
  • 5
同一のRecordSetを、複数のRecordFormで参照してupdateした際の挙動
05-08-2017, 01:58 PM,
#1
同一のRecordSetを、複数のRecordFormで参照してupdateした際の挙動
  同一のRecordSetを、current-indexをずらして複数のRecordFormで参照し、
  UIで変更した後に各RecordFormの変更内容を一括でRecordSetに反映したいです。
  
  単一項目の変更であれば全てのレコードの変更内容が反映されるのですが、
  複数項目を変更してupdateすると、
  2つ目以降のRecordFormのcurrent-indexが0に変わり適切にupdateできません。
  何か良い回避策はありますでしょうか。
  
  ※各RecordFormはナビゲーションパネルを非表示にしてindexをずらすため、
   変更内容は行単位で競合しない作りを想定しております。

Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{def test-data =
    {RecordSet
        {RecordFields
            {RecordField "tf1",  domain = String},
            {RecordField "tf2",  domain = String}
        },
        {RecordData tf1 = "TextField11", tf2 = "TextField12"},
        {RecordData tf1 = "TextField21", tf2 = "TextField22"}
    }
}
{def rf1 =
    {RecordForm
        record-source = test-data,
        display-navigation-panel? = true,
        {HBox
            {TextField {bind value to "tf1"}},
            {TextField {bind value to "tf2"}}
        }
    }
}
{set rf1.current-index = 0}

{def rf2 =
    {RecordForm
        record-source = test-data,
        display-navigation-panel? = true,
        {HBox
            {TextField {bind value to "tf1"}},
            {TextField {bind value to "tf2"}}
        }
    }
}
{set rf2.current-index = 1}


{View
    {VBox
        {CommandButton
            label = "update",
            width = 300px,
            {on Action do
                {rf1.update}
                {rf2.update}
            }
        },
        rf1,
        rf2
    },
    visibility = "normal",
    {on WindowClose do
        {exit}
    }
}
05-08-2017, 05:42 PM, (This post was last modified: 05-08-2017, 05:43 PM by tdeng.)
#2
RE: 同一のRecordSetを、複数のRecordFormで参照してupdateした際の挙動
各RecordFormでそれぞれ異なるRecordViewを利用し、各RecordViewのrecord-sourceを同じRecordSetを指定して、対応してみたらいかがでしょうか?
05-08-2017, 06:21 PM,
#3
RE: 同一のRecordSetを、複数のRecordFormで参照してupdateした際の挙動
失礼しました。 上記の対応のみでは処理が足りないようですね。RecordFormの仕様か、バグの可能性があります。。。

次のサンプルの様に対応して頂くことが可能でしょうか?

Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{def test-data =
    {RecordSet
        {RecordFields
            {RecordField "tf1",  domain = String},
            {RecordField "tf2",  domain = String}
        },
        {RecordData tf1 = "TextField11", tf2 = "TextField12"},
        {RecordData tf1 = "TextField21", tf2 = "TextField22"}
    }
}

{def rv1 = {RecordView
               test-data
           }}
{def rv2 = {RecordView test-data}}

{def rf1 =
    {RecordForm
        record-source = rv1,||test-data,
        display-navigation-panel? = true,
        {HBox
            {TextField {bind value to "tf1"}},
            {TextField {bind value to "tf2"}}
        }
    }
}
{set rf1.current-index = 0}

{def rf2 =
    {RecordForm
        record-source = rv2,||test-data,
        display-navigation-panel? = true,
        {HBox
            {TextField {bind value to "tf1"}},
            {TextField {bind value to "tf2"}}
        }
    }
}
{set rf2.current-index = 1}
{let d1 = {Dynamic rf1.current-index}}
{let d2 = {Dynamic rf2.current-index}}

{def keep-cidx-update = {proc {rf:RecordForm}:void
                            def rf-idx = rf.current-index
                            {with rf.current-index = rf-idx do
                                {rf.update}
                            }
                        }
}
{{View
    {VBox
        {CommandButton
            label = "update",
            width = 300px,
            {on Action do
                {keep-cidx-update rf1}
                set d1.value = "rf1.current-index:[" & rf1.current-index & "]"
                {keep-cidx-update rf2}
                set d2.value = "rf2.current-index:" & rf2.current-index & "]"
            }
        },
        rf1,
        rf2,
        {VBox
            d1,
            d2
        }
    },
    visibility = "normal",
    {on WindowClose do
        {exit}
    }
}.show
}


05-09-2017, 08:14 AM,
#4
RE: 同一のRecordSetを、複数のRecordFormで参照してupdateした際の挙動
>tdengさん
期待通りの動作になりました。ありがとうございます。

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('1452')