過去の桐井戸端BBS (桐ver.8)
2597 3桁の連番 タカ 1999/9/4-03:50
いつも拝見勉強になっています。

今回お聞きしたい事は、♯連番を打つ?
で良いのかな、でも「表」では?
やはりレポートの中のみ有効かな?

百又は十の位に「0」を付けた3桁の連番を作りたい
001
002


010
011 とか


100
101 と

現在は
[A項目](文字列)で「1234」固定で変更無し
[B項目](文字列)で直接3桁の番号を入力しています。

A.B合わせて(連結せず)7桁にしフォントを調節して
印刷しています。
必ず7桁必要です

この[B項目]のみを連番表示できないものでしょうか
「カウンタ型」ではもちろん無理ですよね。
笑ってやって下さい。

知っているようで全然知らない、話にならない「桐」初歩者
2600 Re: 悲しげ 1999/9/4-15:02
記事番号2597へのコメント
どもっ、タカさん

[A項目]+#文字列(#数値([B項目]),3)

ではどうでしょう。
2602 ・・・と書いてはみたけれど 悲しげ 1999/9/4-20:28
記事番号2600へのコメント
どもっ、タカさん、
どうも外しているような気がして来ました。(^^;)

え〜、このようなことを、何のためにやろうとしているのか
で、やり方は幾らでもあるような気がします。おそらくは、
かなり簡単な方法で。
と云うわけで、具体的な実例と目的を挙げた方が、応える方
も考えやすいと思いますよ。(^^)v
2606 Re:遅れました。 タカ 1999/9/6-21:49
記事番号2602へのコメント
どうも、悲しげさん

早々のお応えいただき、ご返事遅れ誠に申し訳ございません。

説明不足重ねて申し訳ございませんでした。

・何処の店舗で       「2桁扱い」
・いつ(年度)       「西暦下2桁」
・顧客コード(その年の連番)「3桁扱い」
 年度が変われば、001から始める。

[B項目]については
「データを入力すると、自動的にNOを
振ってくれる」

「桐」ではデータ型に「カウンタ」が有りますが
その自動的にNOを作ってくれる際に
はじめから3桁又は4桁表示では作って
くれませんよね?

  「1」  「2」・・・ 「10」 「11」を
「001」「002」・・・「010」「011」と
表示させたいのです。

[A項目]については
文字列でもかまわないので
挿入初期値に「1234」としてる

なお
「1234」の意味としては

「12・・」はお店の店舗番号
「・・34」とは、顧客利用年度
本当であれば「・・99」と書くべきでし
たすみません。
西暦下2桁意味となります。

印刷時には
[A項目][B項目]をつないで印刷
又は、つながず横に並べるだけてもOK

ご理解いただけたでしょうか。   タカm(__)m
2609 Re: 悲しげ 1999/9/7-12:41
記事番号2606へのコメント
どもっ、タカさん、何となくわかったような、そうでもないような・・・(^^;)

先ずカウンタ項目(数値系)を利用してゼロ詰めすることは
可能です。別項目において
  #文字列([カウンタ項目],3)
とすればいいだけです。
  [A項目]+#文字列([カウンタ項目],3)
として他項目値と連結させることも可能です。

それと、単に印刷する時だけでよいのなら、レポート定義で
当該カウンタ項目(テキストオブジェクト)のオブジェクト
属性/印字属性/埋め文字/ゼロ詰めを指定する方法も考え
られます。

私が気になったのは、3桁だとすると、カウントが999を超
えるようなデータが発生した場合にどうするのか?
あるいは、項目計算式でゼロ詰めを設定した場合、何かの事情で置換/再計算を実行した際に、
値が更新されてしまう危険性があり得る(つまりIDコード的に使うには適さない)。
カウンタ項目値を利用する場合なら、値は絶対的ですから再計算してもずれませんけど、
逆に削除行があった場合には反映されない
(仮に表示レコード数が10で隠れた削除行が2行あったとしたら最終レコードのカウントは12)・・・etc。
つまり、目的によって設計の仕方を考える必要があるだろう
と云うことで、ゼロ詰めする目的を前回お尋ねしたのは、そのためでした。
2610 Re: 宮城 1999/9/7-14:34
記事番号2609へのコメント
タカさん、悲しげさん、こんにちは。いくつか疑問点があります。

>・何処の店舗で       「2桁扱い」
>・いつ(年度)       「西暦下2桁」
>・顧客コード(その年の連番)「3桁扱い」
> 年度が変われば、001から始める。

この表では店舗ごとの管理をなさるのでしょうか。でなければ、まず、
店舗を絞ってからでないと連番管理ができません(絞ればできるということですけど)。

次に顧客管理目的ととれますが、このやり方ではお客さんにこのコード
を書いたカードでも渡してそのカードから採取するぐらいしかなさそうです。
しかも、年度ごと店舗ごとにわかれてしまう。

タカさん、氏名+電話番号ぐらいで管理されたほうがよろしくはありませんか。

桐のテクニックからいえば、悲しげさんの書かれているようにダミー項目持たせたり、
顧客コードと顧客データの表、顧客データと取引データの表に分けてしまう等々考えられます。

悲しげさんの指摘されている懸念がありますので、私も項目計算で作るのには反対です。
やるなら、最終値を別表にとっておき、変数に代入し +1して行挿入時編集、その値で最終値を更新という手を使います。
2611 Re: はまだ 1999/9/8-03:53
記事番号2606へのコメント
>・何処の店舗で       「2桁扱い」

100店舗まで管理できるということですね。
(文字列置換えがわずらわしければ、10〜99までの90店舗管理)

>・いつ(年度)       「西暦下2桁」

これは項目初期値に年度をいれることにより可能ですね

>・顧客コード(その年の連番)「3桁扱い」

本来の意味の顧客コードではありませんね。店舗というからには何らかの
その年度に売上げている商品単品、もしくは一度に売上げている商品
グループの連番管理コードでしょう。(上限は1000件までですね。)

ここでタカさんのいわれるA項目、B項目にわけている意味はわかりま
せんが、これを7桁のコード管理(店舗コード+年度コード+3桁連番)
をし項目値として保存することにかんしては意味合いがわかります。

入力者があるフォーム店舗コードを打ち、売上げ商品あるいは商品グループ
を入力するとこの7桁のコードが生成されればいいのであれば、単純に
店舗コードx100000+年度コードx1000+連番としたらいいでしょう。
コードの先頭が固定(桁数の意味で)であれば連番項目をあえて0埋め
するのに労力をかける必要はないとおもいますがどうでしょうか。
2634 Re: タカ 1999/9/9-17:33
記事番号2611へのコメント
>単純に
>店舗コードx100000+年度コードx1000+連番としたらいいでし
>ょう。コードの先頭が固定(桁数の意味で)であれば連番項目をあえて0埋め
>するのに労力をかける必要はないとおもいますがどうでしょうか。

あっ! たまもぅー!
そうだ・・・

お恥ずかしい。今はこの言葉だけしか出てこない。
(-_-メ)

「悲しげさん」、「宮城さん」、「はまださん」
大変お騒がせ致しました。

「Disc出でこない対処時の穴に入りたい。」
2677 Re: 1999/9/13-21:56
記事番号2597へのコメント
こんにちは、私も桐初心者です。
他の方が良い方法を考えたので、今更ながらと思いますが、
実は私も同様の悩みを持っていました。
それは、連番で以下のことをしたかったからです。
年度 月 連番
99−09−001
99−09−002
きっとプログラマの方は何故必要なのかと思われるでしょう
が、手入力時代の遺産かも・・・・。

そこで以下のようにしてみました。
挿入初期値式にて
"99"+"-"+#文字列( &月,2 )+"-"+#文字列( #数値( #LAST(
#直前値( [連番] , "00-00-000" ) , 3 ) )+1,3 )

"99"は店番かな?・・・年度は1999と出るため(設定のため)
あえて左記としました。

直前値の初期値は別の方が良いかも。

欠点は月が変わったときの連番は「001」を手入力することです。
(もっと良い方法を知っている方はぜひアドバイスを)

戻る