使えそうなTableView extensionを本番アプリへ導入したい。
でもこのextension、カラム(=項目)1個増やすだけでレイアウトがすぐ崩れる!
カラム(=項目)の多い本番アプリでTableView extensionを使うには、
まずカラムを減らす方法を探さねば!
AccessのIsNull、IIF、choose的なもの
SQLiteに有るのかな?
で、見つかったのがこのページ
[値がNULLだった場合は指定した別の値を返す(ifnull関数, coalesce関数)]SQLiteではcoalesce関数を使うらしい
では早速テスト
目標は
JANコードがあれば表示、
無ければitemcd(=商品CD)を代わりに表示
なお、テストは「DB Browser for SQLite」を使用。
最初、AppyBuilderで勉強を始めましたが何度やっても失敗!
検証しやすいよう「DB Browser for SQLite」に変えました。
SQL文がこれ
select
itemcd,jan,coalesce(jan,itemcd,’NoCODE’),itemname
from m_item
うううう動かないよ
JAN未登録商品で、代わりのitemcdが表示されない!
なんで?
あ、原因分かった!
元データが違うんだ!
(‘328030′,”,’立石園 さみどり’,0),
ではなく、こっちだ!
(‘328030’,NULL,’立石園 さみどり’,0),
ブランクで無くNULLじゃないと動かないのね!
早速、bulkインポートデータを’’(=0桁文字列)からNULLへ書き換え再インポート。
未登録欄がNULLになった!
ゴールが見えてきた
あれ?
本番アプリは、みんなブランク!
この場合、どうすればいいんだ?
また検索のやり直し!
NULLでなくブランク(=文字数0の文字列)の場合をネット検索し見つけたページがこれ
[カラムの値に応じて異なる結果を返す条件式の記述(CASE句)]このページを参考にSQL文を作成
select itemcd,jan,
case jan when ” then itemcd || itemname
else jan || itemname
end as CD_NAME
from m_item;
複数カラムをCASE ELSEとダブルパイプ||で1つにまとめられたら本番アプリにTableView extension導入できそう!!
SQLite、奥が深い!
SQLite、スゲー面白い!