過去の桐井戸端BBS (桐ver.5)
2559 データベースの正規化について(コードの桁数を揃えたい) T・S 1999/8/31-16:00
桐V5を使って作業をしています。
次のようにデータベースのテーブルで正規化ができず困っています。
所属code の項目で、本来コードの桁数が4桁でなければならないところ
コードが2桁のものや3桁のものが混在しています。
これを、置換等を使って 所属code 頭に0を補い4桁にする良い方法はないで
しょうか。

[所属code][名前]
21     神奈川
27     横浜
67     川崎
129    平塚
4549   茅ヶ崎

   ↓

[所属code][名前]
0021   神奈川
0027   横浜
0067   川崎
0129   平塚
4549   茅ヶ崎
2561 Re: 悲しげ 1999/8/31-16:38
記事番号2559へのコメント
どもっ、T・Sさん、
当該項目は文字列型であることを前提にコメントしますが、

  #文字列(#数値([所属code]),4)

でいいと思います。
2562 Re: tuji 1999/8/31-16:53
記事番号2559へのコメント
手元にVer5がないのでVer8でしか検証してませんが
#文字列([所属code],4)
でとりあえず出来るかなと思います。

以下式入力に表示されていたコメントです。

数値 num を文字列に変換し、n 文字になるまで先頭に 0 を補う。
n に負の値を指定すると数値 num の小数桁 |n| 桁まで変換する。

【例】 #文字列(123,8) → "00000123"
#文字列(123.4,-2) → "123.40"

《別名》 #STR #文字列
2563 Re: 宮城 1999/8/31-16:53
記事番号2559へのコメント
T・Sさん、こんにちは。[所属code]は文字列型でよろしいでしょうか?
全角・半角混在もありませんね? もしあれば、#半角あたりをお使い下さい。

さて、以下で可能です。

#条件選択(#文字数([所属code])=1,"000"+[所属code]¥
     ,#文字数([所属code])=2,"00"+[所属code]¥
     ,#文字数([所属code])=3,"0"+[所属code]¥
     ,1,[所属code])

入力ミスすることもありえますので、別項目起こしてそこで置換して下さ
い。

なんでしたら、[文字数]も項目追加し、#文字数([所属code])置換でと
り、文字数に応じて選択し、ゼロ追加の置換を行うやりかたもあります。

はずしてますでしょうか?

「正規化」 ちと意味が違うような・・・。
2564 Re: 宮城 1999/8/31-17:25
記事番号2563へのコメント
重くるしい方法を説明してしまったようで。(^^;;

「¥」なんて一括処理風に記述してますが、もちろん実際にはつなげて下
さい。
2565 Re: 宮城 1999/8/31-18:03
記事番号2559へのコメント
ちと、興味深かったんでもう少し考えてみましたが、そもそも、なぜ4桁
でなければならなかったんでしょうか? 数値タイプで定義されていれば、
表示が何桁でもいいはずですね。

また、[code]と[名前(ここでは以後名称にします)」という項目、本当
に要りますか? 今はとにかく容量をおさえたいというニーズは、表示を
別にするならばほとんどないはずです。しかも、なんとか名称表示させよ
うとしますよね。かなり機械的に[code]と[名称]をセットで設定されるか
たが多いと思いますが、[code]にはユニークキーとして使いやすいという
意味しかないような気がしています(ちょっと極論)。

[code]体系に意味を持たせようとしているにしても、かなり種類が限定さ
れるのでないかぎり、早晩破綻します。

都道府県なんてのも確かに限定されてはいますが、誤入力を防止するため
に値集合で選ばせれば充分ではないでしょうか。

とはいえ悩んでますので、他のかたのご意見うけたまわりたく。
2571 本来数値タイプであるべきものを文字列タイプで はまだ 1999/9/1-01:08
記事番号2565へのコメント
>ちと、興味深かったんでもう少し考えてみましたが、そもそも、なぜ4桁
>でなければならなかったんでしょうか? 数値タイプで定義されていれば、
>表示が何桁でもいいはずですね。
>
私の場合本来絶対に数値タイプであるべきものを文字列タイプにおきかえて
使用しております。
受、発注システムとなりますとそのデータのユニークキーは相当の桁数と
なります。以前のオフコンでは納入業者に何桁もあるユニークキーを納品
伝票に記入してもらい、それを入力していくというシステムでしたが、結局
このユニーキーを確実に特定するという処理が業者にとって相当の負担と
なり、本来の業務に支障でてきました。
そこで桐システムでは発注伝票のNo表記は2桁までとして本来の納品伝票
に記載するもの以外で確実に付記してもらうのはこの発注伝票NOだけとしま
した。
納品入力時は発注伝票Noを入力すると次項目でユニークな発注伝票NOを
最新のものから順にあわらす表引き窓が開き、これを特定すると発注NOと
型式、数量を連結したデータが表引き窓にあらわれるというしくみです。
ここで0で桁をうめなければ、1の次は11その次が2となり順番がくるって
くるというわけです。今のシステムは開発業者とコンピュータにとっては面倒
な処理でしょうが、発注、納品入力するエンドユーザにとってはこちらのほう
が好評でした。
(というより以前のオフコンシステムは結局使ってもらえなかった。)
色々柔軟なシステムを組もうとしたときに対応できるのが桐のよいところだと
思っています。
結合のスピードの遅い桐ではデータベース正規化を意識しすぎるのはかならず
しも正解とは思えません。むしろ表計算、データベースの枠にとらわれない
桐の特性をいかしていったらいいと思います。
2572 コード番号について 太郎 1999/9/1-08:02
記事番号2571へのコメント
すでにコード番号がふってある場合は使えないでしょうが
自分は、例えば、5桁の数字番号が必要な場合1から始めるの
ではなく10001からコードを開始するようにしてます。
まあ、御参考までに。
2577 Re: 宮城 1999/9/1-16:04
記事番号2571へのコメント
はまださんの方式に全面的に賛成です。当社は電気部品の末端納入業者です。
納入先は自分たちの事務合理化のため、品目コード・発注ナンバーをふり、
専用納入伝票への記載・製品への添付を求めます。

当社の納入先が数社ならまだしもざっと数えて100社、オーダーは900
件ほどあります。受注時、営業マンが当社のフォーマットに手書きし、それ
を女性が入力するという当たり前の手順ですが、品目コード・発注ナンバー
には20桁近いものまであり、入力ミス防止ロジックは組みようがありませ
ん。なにせ意味すらわからないのですから。

>そこで桐システムでは発注伝票のNo表記は2桁までとして本来の納品伝票
>に記載するもの以外で確実に付記してもらうのはこの発注伝票NOだけとしま
>した。

はまださんのところの納入業者になりたかった!
2590 Re: T・S 1999/9/3-14:14
記事番号2565へのコメント
 出張に行っている間に、このようにたくさんの方から回答いただき有り難うござ
いました。
 おかげさまで助かりました。どうも有り難うございました。
 初心者な者で、また、何かありましたらよろしくお願いします。

・・・正規化については、勉強不足で知ったかぶりで使ってしまいました。
もっと勉強してから使いたいと思います。・・・とほほ。

戻る