過去の桐井戸端BBS (桐ver.7)
1535 数字の入力時、頭に0をつけ、6桁にしたい。 りょう 1999/3/11-12:27
はじめまして。私はアルバイトで桐を触っている23歳の者です。
今、桐7を使って入力フォームを作っているのですが、わからないことが出てきたのでご質問します。
とても初歩的で簡単な事かもしれないのですが、教えてください。

6桁未満の数字を入力した時に、頭に0をつけて6桁にする。
例えば、
”15” と入力しEnterを押した瞬間に
”000015” となるようにしたいんです。

お願いします。
1536 Re: 福田 1999/3/11-14:08
記事番号1535へのコメント
桐ver.7のヘルプを活用しましょう
まぁ、索引するのは連想ゲームをやっている様なものですがデータ型変換の中の
#文字列を読むと詳細が分かります。

#文字列(#数値([引口座番号]),12)
この場合は12桁になるまで"0"を補充します
上記の,12)にすると先頭に"0"を補充して桁数を揃えます。
上記を,-12)すると、後方に"0"を補充して桁数を揃えます。

頑張ってね、りょうさん
ちょっと慣れてきたら、私の助っ人でもしませんか?(^。^)
1538 Re: りょう 1999/3/11-18:05
記事番号1536へのコメント
>#文字列(#数値([引口座番号]),12)
>この場合は12桁になるまで"0"を補充します
>上記の,12)にすると先頭に"0"を補充して桁数を揃えます。
>上記を,-12)すると、後方に"0"を補充して桁数を揃えます。
>
ご回答ありがとうございました。
・・・でも、数字を入力してEnterを押した瞬間に変換される方法がまだわかりません。

例えば表定義の項目計算式に関数式を入れると、その項目に直接入力できなくなります。
関数を入れるとしたら、どこに入れればいいんでしょうか?

すみませんが、どこに、どういう指定をすべきなのか詳しく教えてください。
お願いします。
1539 Re: kaz 1999/3/12-01:58
記事番号1538へのコメント
・・・でも、数字を入力してEnterを押した瞬間に変換される方法がまだわかりません。

ver7.1使ってます。(up1)
時間型文字列であれば→項目の表示条件→表示幅→ゼロ詰め、空白詰めとかをチェック
すればいいみたいですが、関係ないですね。(表編集時)

数値型、文字列型については上記の指定は選択できないようです。

でも、フォーム画面ではゼロ詰めできます。
テキスト項目のオブジェクト属性→編集→右下の表示継承モードを継承から「指定値」に変更→
すぐ右の設定ボタンを押し→[表示]埋め文字として 0(ゼロ) を入力する

この設定でフォーム画面ではゼロ詰めで表示されるみたいです。
表編集画面に切り替えるとやっぱりゼロは表示されませんね。m( )m 
(桐の仕様でしょうか。しょうがないですね。ほんとに(笑い))
以上ですが、ちょっと時間があったので、書いてみました。
役にたたなかったら、ごめんなさい。まだ、ど素人なものですから。
1540 Re: 宮城 1999/3/12-02:58
記事番号1539へのコメント
正直言って厳しいご要望です。福田さんが書かれていますが、ゼロ付き表現したいなら
桐では文字列にしないといけません。でも、数値項目で入れたいんですよね。

であればテクニックに走りますが、入力画面と受付画面をわけるしかないのでしょうか。

入力時は数値として受け取る。次の瞬間、文字列変換したフォームに切り替える、
ぐらいしかないように思います。
最初から文字列扱いにしておいて、置き換えてあげるという手もありますが。
1542 Re: 福田 1999/3/12-10:50
記事番号1538へのコメント
>・・・でも、数字を入力してEnterを押した瞬間に変換される方法がまだわかりません。
>例えば表定義の項目計算式に関数式を入れると、その項目に直接入力できなくなります。
>関数を入れるとしたら、どこに入れればいいんでしょうか?

----説明補足----
オンラインなので、記憶違いがあるかも知れませんが・・・・・・・・・
数値を入力する項目を [引口座番号]とします←入力する場所です
上記の計算式を指定する項目を [引口座番号桁数揃]とする ←関数を入れる場所です

実際に入力するのは[引口座番号]ですよ、数値型で入力したいのだから数値型にする。
入力した段階で、直ちにその結果を反映させたいとすれば表定義に入り、
項目属性の編集タブをクリックし入力後再計算にチェックを入れておけば良い。
[引口座番号]に数値を入力する Enterすると
[引口座番号桁数揃]直ちに反映されて0000補充で希望通り表示する

フォーム側では入力する[引口座番号]と
結果を見る[引口座番号桁数揃]を作っておく必要があります。
つまり、二つの項目を用意して制御する事になります。

桐には、文字列型に変換する、又は、数値型に変換する事が出来ますから
あまり、こだわる事はないと思います。
例えば、項目の値を連結して表示したい時がありますよね
連結は、文字列連結になるので、必然的に数値を連結したい場合は
その数値を文字列に変換しなければならない。
この型変換が出来なければ、データベースとして有能とは言えません。
きっと売り物にもならないでしょうね(-_-メ)

当然、000125 等の場合は、文字列と云うことになりますし数値型の場合は、
先頭に 0000 は、考えられませんよね。
理解出来なければ、また、書き込んでください。
出来るだけ接続する様にします。
でわ
1543 Re: 桐々舞 1999/3/12-14:03
記事番号1535へのコメント
>6桁未満の数字を入力した時に、頭に0をつけて6桁にする。
>例えば、
>”15” と入力しEnterを押した瞬間に
>”000015” となるようにしたいんです。
>お願いします。

編集属性式に
"先頭付加文字列'"+#部分列("000000",1,6-#桁数(#文字列([すうち])))+"'"
と記述します。
6桁以内であることが前提であることにご注意を!
1550 Re: 入交 1999/3/14-03:49
記事番号1539へのコメント
>ver7.1使ってます。(up1)
>時間型文字列であれば→項目の表示条件→表示幅→ゼロ詰め、空白詰めとかをチェック
>すればいいみたいですが、関係ないですね。(表編集時)
>
>数値型、文字列型については上記の指定は選択できないようです。
>
>でも、フォーム画面ではゼロ詰めできます。
>テキスト項目のオブジェクト属性→編集→右下の表示継承モードを継承から「指定値」に変更→
>すぐ右の設定ボタンを押し→[表示]埋め文字として 0(ゼロ) を入力する
>
>この設定でフォーム画面ではゼロ詰めで表示されるみたいです。
>表編集画面に切り替えるとやっぱりゼロは表示されませんね。m( )m 
>(桐の仕様でしょうか。しょうがないですね。ほんとに(笑い))
>以上ですが、ちょっと時間があったので、書いてみました。
>役にたたなかったら、ごめんなさい。まだ、ど素人なものですから。

よくみに来てますがめったに書き込みをしてません入交です。
この件については僕も興味がありましたので書き込みします。

まずデータの持ち方ですが基本的に数値のほうがいいのではないかと思います。
入力時に瞬時に「0」を任意の桁数で表示するって事ですがデータの管理上はいらないのでは...
オフコンで固定長のデータ管理の場合は必要かな?

入力時はKAZさんの意見に賛成です。
テキストの表示の幅をかえればそれなりに使えるのではないでしょうか?
照会時も同じですよね
印刷のときはレポート印刷でそのデータを関数を使用し「#文字列([任意項],任意桁数)」
てな感じで設定すればテーブル作成者はあくまでも数値で認識し利用者は6桁のデータだと
思えばいいんじゃないのかな?
検索や絞込みのときはいちいち「0」を入力するかどうかを考えればKAZさんの方法が
ベストだと思いますよ。
”000015”で検索する場合”000015”って入力するより”15”って入力するほうが4回もキーを
余分に押さなくてすむし

書き出しする際は結合を使用しレポートと同じ式を設定し属性を文字列にすれば書き出しても
「0」のついた例なら”15”なら"000015"って書き出しできると思いますよ。
テーブル上に6桁を表示させるための項目を作るのはデータが大きくなる原因となるので
避けたほうがいいですよ。
こんな考え方どうでしょう。  入交
1558 Re: kaz 1999/3/14-23:53
記事番号1550へのコメント
引用はほとんど省略 m()m

>>フォーム画面ではゼロ詰めできます。
>>テキスト項目のオブジェクト属性→編集→右下の表示継承モードを継承から「指定値」に変更→
>>すぐ右の設定ボタンを押し→[表示]埋め文字として 0(ゼロ) を入力する

>入力時はKAZさんの意見に賛成です。

桐桐舞さんが、書いた式にはおどろきました。^^;さすがって感じでしたが、
私のやり方に賛成してくれてありがとうございます。入交さん。
まあ、いろんな方法があるということで自分なりに納得してはいます。
正解はひとつじゃないと、いうことを感じている今日このごろです。(笑い)

編集属性式に
"先頭付加文字列'"+#部分列("000000",1,6-#桁数(#文字列([すうち])))+"'"
と記述します。

こんな式どっから考え付いたんでしょうね。マニュアルには載ってないとおもいますが。・・・

戻る