【やりたいこと】
- デッキ/テーブルビューでレコード表示の順番を上下するための矢印アクションを作る。カテゴリ分けされたレコードにおいて、カテゴリ内でのみ順序変更する。
使用カラム(Type)
[ID](Text)※UNIQUEID()
[レコード名](Text)
[カテゴリ名](RefでもEnumでも)
[並び順](Number) カテゴリごとに10スタート10刻みの数字
[カテゴリ内順位](Number)
[順位被りチェック](Yes/No)
[カテゴリ内レコード数](Number)
[カテゴリ内順位最大値](Number)
[並び順更正要否](Yes/No)
各カラムを以下のように設定
ISBLANK(
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
)
),
10,
MAX(
SELECT(
訪問予定[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
) + 10
)
SELECT(
テーブル名[ID],
AND(
[カテゴリ名] = [_THISROW].[カテゴリ名],
[並び順] < [_THISROW].[並び順]
)
)
) + 1
SELECT(
テーブル名[ID],
AND(
[カテゴリ名] = [_THISROW].[カテゴリ名],
[カテゴリ内順位] = [_THISROW].[カテゴリ内順位]
)
)
) > 1
SELECT(
テーブル名[ID],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
)
SELECT(
テーブル名[カテゴリ内順位],
[カテゴリ] = [_THISROW].[カテゴリ]
)
)
OR(
[順位被りチェック],
[カテゴリ内レコード数] <> [カテゴリ内順位最大値]
)
以下のアクションを作成
「上へ」
Data: set the values of some columns in this row
[並び順]=[並び順]-11
Only if this condition is true
[カテゴリ内順位]<>1
(意味)[カテゴリ内順位]が1でないときのみ表示。[並び順]を11減らす
「下へ」
Data: set the values of some columns in this row
[並び順]=[並び順]+11
Only if this condition is true
[並び順]
<
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
)
(意味)[並び順]がカテゴリ内最大値でないときのみ表示。[並び順]を11増やす
「上へダミー」
Data: set the values of some columns in this row
[ID]=[ID](何もしない)
Only if this condition is true
[カテゴリ内順位]=1
(意味)[カテゴリ内順位]が1の時、「上へ」の代わりに表示
「下へダミー」
Data: set the values of some columns in this row
[ID]=[ID](何もしない)
Only if this condition is true
[並び順]
=
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
)
(意味)[並び順]がカテゴリ内最大の時、「下へ」の代わりに表示
「再採番」
Data: set the values of some columns in this row
[並び順]=[カテゴリ内順位]*10
(意味)後述のカテゴリ内再採番のもととなるアクション
「カテゴリ内再採番」
Data: execute an action on a set of rows
Referenced Table テーブル名
For a record of this table テーブル名
Referenced Rows
SELECT(
テーブル名[ID],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
Referenced Action 「再採番」
(意味)「上へ」「下へ」アクションで変更した並び順を、10刻みに整形する
「カテゴリ変更時再計算」
Data: set the values of some columns in this row
[並び順]=
IF(
ISBLANK(
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
)
),
10,
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
) + 10
)
(意味)日付変更時に、移動先の最後尾に配置する
ユーザーが入力するのは[レコード名][カテゴリ名]のみ。
BOTの作成
Updates only
Condition
[_THISROW].[並び順] <> [_THISROW].[カテゴリ内順位] * 10
Run a data action
Referenced rows
SELECT(
テーブル名[ID],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
Action
「再採番」
(意味)並び順が崩れたとき、カテゴリ内の全行を整列する
Condition
[_THISROW_BEFORE].[カテゴリ名] <> [_THISROW_AFTER].[カテゴリ名]
Step1
Set row Values
[並び順]=
IF(
ISBLANK(
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
)
),
10,
MAX(
SELECT(
テーブル名[並び順],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
) + 10
)
Step2
Run a data action
Referenced rows
SELECT(
テーブル名[ID],
[カテゴリ名] = [_THISROW].[カテゴリ名]
)
Action
「再採番」
(意味)カテゴリ移動があったとき、並び順を移動先の最大値+10にする
並び順が崩れるので、全行を整列する
管理用ビュー(オプション テーブルビュー)
[レコード名](Text)先頭5文字程度にカットすると見やすくなる
[並び順](Number)
[カテゴリ内順位](Number)
[順位被りチェック](Yes/No)
[カテゴリ内レコード数](Number)
[カテゴリ内順位最大値](Number)
[並び順更正要否](Yes/No)
ほか、上下アクション、カテゴリ内再採番、並び順を+1するアクション(別途作成)などお好みで配置
実際に並べ替えを使用するビューのDetailあたりにリンクのアクションを置いておくと飛びやすい
実際に使用するビューの設定(重要)




