テーブルフィールドは、1件のレコードの中に複数の明細行を入力できる表形式のフィールドです。1件の注文に対して複数の商品明細を入れる、1回の作業に複数の工程を記録する、といった「1対多」の情報をまとめて扱えます。行は必要な数だけ増やせ、最終行を入力すると自動で次の行が追加されます。この記事ではテーブルの列の種類・追加方法・入力時の動作を説明します。

列の種類

テーブルの各列には、次の種類を設定できます。用途に合わせて列ごとに種類を選びます。

列の種類用途
テキスト品名・備考などの文字列を入力する
数値数量・単価などの数値を入力する
日付 / 日時日付・日時を入力する
選択肢あらかじめ用意した候補からドロップダウンで選ぶ
計算同じ行の他の列を参照して自動計算する(例:数量 × 単価)
COMポート読取COM接続のバッチリーダー(伝票・バーコードを自動で読み取る装置)から届いた値を自動入力する
成形同じテーブル内の他の列(主にCOMポート読取列)の値の一部分だけを切り出して書き込む

計算列の式には、トップレベルの計算フィールドと同じ演算子ボタン・文字列挿入・フィールド挿入が使えます(計算式の書き方は「計算フィールドの使い方」を参照)。

追加方法と列の設定

  1. ビルダーの左パレット「計算・参照系」から「テーブル」をキャンバスに追加します。
  2. テーブルフィールドの「⊞ 列設定」ボタンを押すと、列設定モーダルが開きます。
  3. 「+ 列を追加」で列を増やし、各列の列名種類を設定します。倍率で列幅の比率を調整できます。
  4. 選択肢・計算・数値・COMポート読取・成形の列は、⚙(設定)ボタンから詳細を設定します(COMポート読取・成形の設定内容は下記「COMポート読取列の設定」「成形列で値を加工する」を、数値列の集計表示は下記「数値列に集計表示を設定する」を参照)。
  5. 「フォーカス」にチェックを入れると、ハンディリーダーなどでの連続入力に適した動きになります(詳しくは下記「フォーカス列の動作」を参照)。
テーブルの列設定モーダル。品名・数量・単価・金額の列を種類ごとに設定している
列設定モーダル:列名・種類・倍率を指定する。計算列などは⚙で詳細設定

入力時の動作

レコードの入力フォームでは、テーブルが表として表示されます。各セルに値を入力していき、明細を1行ずつ追加します。

入力フォームでのテーブル。品名・数量・単価の2行を入力し、下に空の行が自動追加されている
明細を入力すると、最終行の下に空の行が自動で追加される
  • 自動で行追加:最終行の最後のセルからフォーカスが外れると、自動で新しい空の行が追加されます。「+ 行を追加」ボタンからも増やせます。
  • 空行は自動除外:保存時に、全てのセルが空の行は自動的に除外されます。余分な空行を消す手間はいりません。
  • 各行の右端の「×」ボタンで、その行を削除できます。

フォーカス列の動作

列設定の「フォーカス」にチェックを入れると、ハンディリーダーなどで手を止めずに連続入力できるよう、カーソル移動が自動化されます。

  • フォーム起動時:レコード入力フォームを開くと、フォーカス対象列があれば自動でその列の最初のセルにカーソルが当たります(フォーカス対象列がなければページ先頭の入力欄にカーソルが当たります)。
  • Enterキーでの移動:フォーカス対象列に入力してEnterを押すと、同じ行の中に次のフォーカス対象列があればそちらへ移動します(行は進みません)。ハンディリーダーの末尾にEnterが挿入されている場合は自動で、行内で最後のフォーカス対象列に達したらEnterで次の行の最初のフォーカス対象列へ移動します(最終行なら自動で行を追加してから移動)。
  • フォーカス対象列が1列だけの場合:Enterで次の行の同じ列へ移動します(最終行なら自動で行を追加)。

1行に複数のフォーカス列を並べておけば、末尾にEnterが挿入される設定になっている場合、「値A → 値B」の順に読み取るだけで次の行へ自動的に進むため、リーダーを持ったまま画面を操作せずに連続スキャンできます。

数値列に集計表示を設定する(列を消費しない合計・平均)

数値列の⚙(設定)ボタンから、その列の下に表示する集計(合計・平均・最大・最小・件数)を複数選んで設定できます。専用の列を追加する必要がなく、既存の数値列(例:金額)の真下にそのまま集計行が表示されます。

  • 数値列の種類を選んだ状態で⚙を押すと「集計表示」設定が開きます。合計・平均・最大・最小・件数から複数を選んでチェックできます。
  • 選んだ集計は行の追加・削除・入力のたびに自動で再計算され、テーブルの一番下(フッター)に表示されます。専用の列を使わないため、既存の数値列の幅や並びを変えずにそのまま集計を追加できます。

このほか、テーブルの外にある計算フィールドの数式からSUM({テーブルキー.列キー})のようにテーブルの数値列・計算列を集計して参照することもできます。書き方は「計算フィールドの使い方」を参照してください。

COMポート読取列の設定

COMポート読取列は、USB/シリアル接続のバッチリーダー(伝票やバーコードを自動で読み取る装置)とパソコンをWeb Serial API経由でつなぎ、読み取った値をそのままテーブルへ自動入力する列です。列の⚙から次の内容を設定します。

設定項目説明
ボーレート9600 / 19200 / 38400 / 57600 / 115200 から選択。リーダー側の設定と合わせます。
文字エンコーディングUTF-8(標準)またはShift-JIS。リーダーが送ってくる文字コードに合わせます。
初期化シーケンス(インベントリ)接続直後に送るコマンドを送信コマンド:期待レスポンスの形式で指定します。複数ある場合はカンマ区切りで並べます(例:I<CR>:<ESC>0<CR>)。コロン(:)は省略できません。省略するとその行は無効になり初期化が行われません。期待するレスポンスがない場合は、コロンの後ろを空にしてI<CR>:のように設定します。
読取コマンド下記エラー応答以外の場合、リーダーにデータの送信をするコマンド(例:排出コマンドA<CR>)。
排出コマンド/期待レスポンス正常に1件読み取った後に送るコマンドと、その応答(例:P0<CR>)。応答を待たない場合は期待レスポンス欄を空にします。
エラー設定(停止/継続/切断)リーダーがエラーを返したときの動作をコードごとに設定します。「停止」は読取を止める、「継続」は指定コマンドを送ってから読取を続ける、「切断」はポート接続を切ります。コード欄に「*」を設定すると、他のどのコードにも一致しなかった場合のワイルドカードとして扱われます。

コマンド欄では<CR>(0x0D)・<LF>(0x0A)・<ESC>(0x1B)に加えて、<HH>のように2桁の16進数を山括弧で囲むと任意のバイトを送信できます(例:<1B>は0x1B、<0D>は0x0D)。また{yyyy/mm/dd}と書くと実行時の日付に、{HH:MM:SS}と書くと実行時の時刻に自動で置き換わります。

実機を使った接続からスキャンまでの手順は、チュートリアル「バッチリーダーでかんばんを一括読取」で画面付きで解説しています。

成形列で値を加工する

成形列は、同じテーブル内の他の列(多くはCOMポート読取列)の値の一部分だけを切り出して自分の列に書き込みます。バーコードの中に品番や区分コードが埋め込まれている場合に、必要な部分だけを取り出すのに使います。列の⚙から次を設定します。

設定項目説明
対象列加工元にする列を選びます。
セパレータ値をあらかじめ区切り文字で分割したい場合に指定します。空欄なら区切りません。<CR><ESC><0xXX>形式も指定できます。
分割インデックスセパレータで分割した何番目の部分を使うか(0=最初、1=2番目…)。セパレータが空欄のときは無視されます。
開始位置切り出しを始める文字位置。0=先頭の文字から。マイナスを指定すると末尾から数えます(例:-4なら末尾4文字目から)。
取得文字数開始位置から何文字取得するか。0を指定すると開始位置から末尾まで全て取得します。

例えば値Aの文字列が10桁で、5〜8文字目に品番が入っている場合は「開始位置:4」「取得文字数:4」と設定すれば、成形列に品番だけが自動で書き込まれます(開始位置は0から数えるため、5文字目は「4」になります)。

すでにCOMポート読取列で読み取り済みのセルについては、成形の設定を変更しても過去の入力値は再加工されません。設定を変える場合は、変更後に読み取ったデータから反映されます。

活用例:現品照合(バーコード・伝票の突合)

COMポート読取・成形・計算の3種類の列を組み合わせると、2枚の伝票(またはバーコード)の品番が一致しているかをその場で確認する「現品照合」テーブルが作れます。

種類設定
値Aテキスト(フォーカス)リーダーから1枚目の伝票を読み取る
値Bテキスト(フォーカス)リーダーから2枚目の伝票を読み取る
成形列A成形対象列=値A/開始位置=4/取得文字数=4(値Aの5文字目から4文字=品番を取得)
成形列B成形対象列=値B/開始位置=0/取得文字数=4(値Bの1文字目から4文字=出荷品番を取得)
計算列計算成形列A = 成形列B(一致していればtrue、していなければfalseを色分け表示)

値A・値Bをフォーカス列にしておけば、2枚の伝票を続けてスキャンするだけで、成形列が品番部分を自動で切り出し、計算列が一致判定を色分け表示してくれます。

このテーブルに「顧客」「出荷日」などのフィールドを組み合わせれば、そのまま出荷アプリとして使えます。さらに、このアプリを別アプリからロールアップフィールドやクロス集計ビューで参照し、品番ごとのレコード件数を集計(件数=count)すれば、品番別の出荷実績を自動集計できます。

活用のヒント

  • 注文アプリに「品名・数量・単価・金額(計算)」のテーブルを置けば、1件の注文で複数商品の明細を管理でき、金額も自動計算されます。
  • 作業日報に「工程・開始時刻・終了時刻」のテーブルを置けば、1日の複数作業を1レコードにまとめられます。
  • 数値列に集計表示(合計)を設定すれば、明細の総額をその場で集計できます。
  • バッチリーダーがある現場では、COMポート読取列+フォーカス列で、画面を操作せずスキャンだけで連続入力できます。
  • バーコードの一部だけが必要な場合は、成形列で品番や区分コードを切り出してから、選択肢の「テキスト(数字)コンベンション」や集計機能につなげられます。

よくある質問

Q. 行数に上限はありますか?
A. 通常の運用で困らない範囲で行を追加できます。最終行を入力するたびに新しい行が足されるので、必要な数だけ入力してください。

Q. 途中の空行はどうなりますか?
A. 保存時に、全てのセルが空の行は自動で除外されます。入力済みの行だけが保存されます。

Q. 「フォーカス」にチェックしても、入力欄にカーソルが移りません。
A. フォーカスが有効なのはレコード入力フォームを開いた直後とEnterキーでの移動時です。マウスで別のセルをクリックした場合は通常通りそのセルに留まります。

Q. COMポート読取列の初期化がうまくいきません。
A. 初期化シーケンスは「コマンド:期待レスポンス,コマンド2:期待レスポンス2,...」の形式で、コロン(:)が必須です。コロンがない設定はそのまま送信コマンドも含めて無視されます。応答を待たない場合はコロンの後ろを空にしてください(例:I<CR>:)。