[ai]SQLite、条件分岐のカラム表示を勉強中

使えそうなTableView extensionを本番アプリへ導入したい。

TableViewExtiensionrリスト完成かな


でもこのextension、カラム(=項目)1個増やすだけでレイアウトがすぐ崩れる!

TableViewExtension本番アプリ導入準備:項目の多い本番アプリ、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」に変えました。

テストデータがこれ
TableViewExtension本番アプリ導入準備:まずはカラムを減らす方法coalesce関数勉強中2:テストデータがこれ


SQL文がこれ

select
itemcd,jan,coalesce(jan,itemcd,’NoCODE’),itemname
from m_item

うううう動かないよ

JAN未登録商品で、代わりのitemcdが表示されない!
なんで?

TableViewExtension本番アプリ導入準備:まずは項目を減らす方法coalesce関数勉強中3:何度してもcoalesce関数が動かない!

そして1時間、右往左往・・・・・・・

あ、原因分かった!

元データが違うんだ!

(‘328030′,”,’立石園 さみどり’,0),
ではなく、こっちだ!
(‘328030’,NULL,’立石園 さみどり’,0),

ブランクで無くNULLじゃないと動かないのね!

早速、bulkインポートデータを’’(=0桁文字列)からNULLへ書き換え再インポート。
未登録欄がNULLになった!
ゴールが見えてきた
TableViewExtension本番アプリ導入準備:まずは項目を減らす方法coalesce関数勉強中4:NULLでデータインポートし直し


やっとcoalesce関数の使い方がわかりました
TableViewExtension本番アプリ導入準備:まずは項目を減らす方法coalesce関数勉強中5:やっと動いた


あれ?
本番アプリは、みんなブランク!
この場合、どうすればいいんだ?

また検索のやり直し!

NULLでなくブランク(=文字数0の文字列)の場合をネット検索し見つけたページがこれ

[カラムの値に応じて異なる結果を返す条件式の記述(CASE句)]

このページを参考にSQL文を作成

select itemcd,jan,
case jan when ” then itemcd || itemname
else jan || itemname
end as CD_NAME
from m_item;

うまく動きました!
TableViewExtension本番アプリ導入準備:CASEとダブルパイプが使えそう!



複数カラムをCASE ELSEとダブルパイプ||で1つにまとめられたら本番アプリにTableView extension導入できそう!!

SQLite、奥が深い!
SQLite、スゲー面白い!

Author: かたべ

コメントを残す

メールアドレスが公開されることはありません。