関工健児誇りあれ!?

下関のブログです(^^)v 明日見村 MotoG5Plus Windows10 Kindle iPhone Access Excel VBA ALCATEL IDOL4 Zenfone2 ZE551ML CHUWI Hi8 目標は?100kb/s でも読めるアホblog です

ついでなので(^^) SQL Query 作成のヒント、画面に表示

--- 2018-05-29 ---

 

爆睡しておりました(^^);

 

こんな時間から起きちゃうので眠くなるのネ
(^^); 反省

 

暫くは、眠れそうに無いので、カキコしちゃう?
(^^)

 

ひと口にプログラムと言っても奥が深いのネ
で、、、
良く聞く言葉が、Access はネぇ〜?
なのデス

 

確かに皆さんが目にするアプリケーションは残念なのが多いです
それは、黒の組織が作ったソフトだからなのダョ
(^^)?

 

取り敢えず入力は置いといて、
入力されたデータを
ある条件に基づいて表示したい!

 

普通は、そうですネ
データは?
入力したら、表示し、印刷するから意味が有ります

 

入力したデータだけでは、それはデータが存在するだけで、自己満足以外の何物でも有りません
目に触れないのですから!

 

では、データを抽出するには、どうしましょ?
それが、Query クエリ って読みます

 

AccessSQL Server のツールでも同様の事が簡単にできます
しかし、SQL Server は個人使用では重いし、それなりの知識が必要になります
まず、起動させるのは、どのソフトか分かんないでしょ
っと言う事で?
簡易ツールなAccess の方が便利なのです

 

この抽出する、させるポイントだけを覚えておけば、
全く違う業務用のデータベース、
EUC ツールと良く呼んでいるみたいですが、これを操作する時も何となくデータの抜き方や操作方法が分かってきます

 

この何となく触れる!
この領域になるには、それなりの努力やカンが必要です
何でもかんでも人に聞けば教えて貰えますが、
一度でもホントに困った!
あれコレやって見たけど上手くいかなかった
そして誰かに聞いてみた!
そうすると、二度と忘れる事は有りません

 

聞けば分かる程度の事と、
忘れてはイケない事の違いは肌で感じるまで実践しましょ

 

いずれ分かって来ます
(^^)
ちとウンチクが長くなりましたが、、、

 

(ヒント)
抽出するとは言いましたが、
抜きたい項目は何でしょうか?

 

たまたま、JP POST の住所録をデータベース化しておりますので、それを例に!

 

郵便番号を探したい!

 

住所の何がしかが分かれば表示できます

 

検索項目の入力BOX=住所です
住所とは言いましたが、
県名、市町村名、などあります

 

JP POST も別れています
郵便番号と市町村を分かりやすく管理したいからです

 

しかし、これを個別に検索BOX を作ると、
都道府県、市名、町名、丁名、、、
分類されてたりすると入力する側が面倒です

 

1つのBOX で検索できれば、入力する側は、いつも1つのBOX に文字を入力すれば良いです

 

元々結合されていれば良いですが、分離されていたら?

 

(答え)
既に書いていますネ、結合
そう別々なら、くっつけちゃえば良いのです

 

(クエリ)
データの抽出項目
テーブルの、都道府県 & 市名 & 町名 & 丁名
 
抽出条件は、画面入力BOX をBOX として書いてみます
LIKE ”*” & BOX & ”*”

 

これだけネ、とっても簡単!
LIKE は、曖昧な検索、それっぽい検索な事
逆にスバリは、= イコールになります、= は省略可です

 

* コメ印は前回のワイルドカード
ワイルドカードは、トランプの何でもOK なババです
前後に入れているのは、入力BOX の文字の前後は何でもOK って事になります

 

入力BOX=下関、だったら?
下関と名の付く住所が全部でてきます

 

入力BOX=山口県、だったら?
県名の上には文字が有りませんが、山口県が全部でてきます

 

入力BOX=二丁目、だったら?
二丁目が全部です

 

これだと、検索する人がいちいち入力BOX を変えなくても良いですネ
こう言う一つひとつ、が使い易いかどうかが決まってきます

 

こう言う考え方が設計なのです
なので、設計する人、作る人に依ると言う事ネ
もう少し言えば、設計するSE が素人さんでも、
実際に作るのはPG プログラマです
この人が設計書がアバウトで明記されていなければ、
気を利かして、上記な作りにします
が、、、
そう言う人は滅多にいません
前回も言いましたが、
プログラマと言ってる人は、残念ながらコーダです
機械の言語が書ける人
考えて作れる人では無いのダョ!

 

(応用編)
応用あるの?
有りますョ(^^)?
こう言う所をそのまま便利だ!ってコレだけマル覚えするのと、もう少し便利にならないか?
っと思うのは随分、違います

 

先輩の指導を疑わない!事と、もっと便利に!は意味が違います
応用できる事は、応用します

 

画面が、小さすぎて検索BOX すら増やしたく無い!
でも、郵便番号でも表示させたい!
どうですか?
先程の項目に、郵便番号を付加すれば良いです

 

この時も、郵便番号は数値です
750-1234 こう言う形式が良いのか、7501234 どちらが良いかも考えましょう
2つ必要か、1つで良いか?

 

例えば、1つだとして、どちらが便利かは、入力担当者に聞いてみましょ
これがSE のお仕事ネ
実際に使うユーザさんに聞く事です
自分が便利と思っても違う事は多いです
SE 的な事も数多くやっていると、いずれ分かります
ユーザさんは、どちらが便利と思うのか!
これを聞かないので使えないアプリが出来るのネ
分かります?
アプリとは?皆さんが使っているスマホの事です
万民に受ける政治が政策が無いのと同じで、
皆に良いと言われるソフトは無いかも知れません
それは、業務以外の部分、かわいい、とか、UI のセンス的な事を言われる事があるからです

 

言わせて頂けるなら、かわいい、センス、は使い勝手とは違います
人それぞれ、美的感覚と同じです
誰かが美人と言った所で、その人はモテるのでしょうか?
かわいい系な人、メガネっ娘、ひとそれぞれなのです

 

脱線気味ですが、、、元に戻って、
郵便番号です
これ結合する位置があるのが分かりますか?

 

数値でしょ?
なので、絶対に同じ項目にヒットしない位置
この例では、先頭でも最後でも同じです

 

普通の住所では、どうでしょう?
番地が入りますネ
100番200号、100-200、100-200-309、309号室

 

実際の住所検索だと、番地、番や号、方書き、が入ります
先頭でなければ区切りが必要です
方書きも同様です
番地の後に、方書きがあると前の文字と結合されます

 

100-200番地方しものせき300号室

 

検索では、地方と入れるとヒットします
地=番地の地であって、地方の地では有りません

 

分かるでしょうか?

 

これを回避する為には、通常では入力できないコードを区切り文字として使えば良いです

 

Chr=関数です、Excel=CHAR(xx) になります
Chr(13)...vbCr 改行コード
Chr(10)...vbLf キャリッジリターン、よく分かりません、改行とペアで使うそう言うモノだと思っています
逆?調べて下さい
Excel では、セル内の改行コードは1バイトです、確か(10)だったと思います?(13)?
Chr(13)&Chr(10)...vbCrLf 2バイトの改行マーク、メモ帳などで、改行するとコレです
Chr(255)...HEX=FF ですネ、Max です、16進数、これは物理的に入力できません

 

こう言う文字で区切ってしまえば、地方で検索される事は有りません

 

(更なる応用編)
有るの?(^^)?
気が付いた人もいるかと思います

 

もしも?このワイルドカード
検索BOX に入力したらどうなるの?

 

出来ます、禁止していなければ!
下関市*丁目

 

これで、下関市と丁目が付く住所が出てきます
仮に、郵便番号を先頭に付加したとしましょう

 

750*丁目

 

これが可能です

 

検索1つ、SQL 1つでも、これだけバリエーションが有ります
文字にすると凄そうですが、実際は、慣れると大した事は有りません

 

クエリの抽出条件も、メモ帳にまとめておけば、あとは、項目名が違うだけですので!

 

実際のデータベースなどの項目は、NULL 値、空白が入ってる事が有りますので、
関数 NZ、Trim、など適宜、必要となる場合も有ります

 

これ、SE 的、PG 的には、普通の事ね

 

---
明日見むら
村長さんでした
(^^)/ SQL Query