過去の桐井戸端BBS (桐ver.8)
9490 項目計算式にてカウンタ型と文字列の連結ができない ezer 2001/01/26-03:35
文字列項目とカウンタ項目の連結は項目計算式の中では不可能なのでしょうか?
数値型だとうまく行くのですが?

[文字列項目]+#str(#num([カウンタ項目]),6)

の様にしたのですが桐に項目計算式ではカウンタ型項目は使用できませんと怒られます。

どなたかご教授下さい。

9510 Re:項目計算式にてカウンタ型と文字列の連結について 尾形 2001/01/27-17:00
記事番号9490へのコメント
>文字列項目とカウンタ項目の連結は項目計算式の中では不可能なのでしょうか?
>数値型だとうまく行くのですが?
>
>[文字列項目]+#str(#num([カウンタ項目]),6)

数値型でも出来ないと思いますけど、出来るのですか?
カウンタ型は項目計算式には使えないようですね。
9516 Re:項目計算式にてカウンタ型と文字列の連結について ezer 2001/01/27-22:11
記事番号9510へのコメント
尾形さんありがとうございます。初めましてよろしくお願いいたします。
ご返事遅くなって申し訳ありませんでした。

>>文字列項目とカウンタ項目の連結は項目計算式の中では不可能なのでしょうか?
>>数値型だとうまく行くのですが?
>>
>>[文字列項目]+#str(#num([カウンタ項目]),6)
>
>数値型でも出来ないと思いますけど、出来るのですか?
>カウンタ型は項目計算式には使えないようですね。

数値型&整数型&長整数&実数でも大丈夫だったのですがカウンター型だけはだめだったのです。

[項目A]=文字項目 [項目B]=数値項目 [項目C]=文字項目とした場合

[C項目]の項目計算式に[項目A]+#STR([項目B],8)とすると

[項目A]の値は A00000001 の様になります。

仕様なのでだめなのでしょうが、ほかの方法があれば是非とも知りたいのですがお教え下さい。
この項目が必要なわけは入力ファイルが20個ほどありそれぞれにカウンター型で受注番号をとっています。
そのデータを一つのファイルに読み込んでいるのですがこの様な場合頭にイニシャルの様な文字をつけて識別しようかと
思ったわけです。
この様なときどの様にすれば良いのかお教え下されば助かります。
それとも別項目にイニシャルの様なものも読み込んで両方のデータで識別しなければならないのでしょうか?

どなたかご存じであればご教授下されば助かります。よろしくお願いいたします。

9518 Re:項目計算式にてカウンタ型と文字列の連結について 悲しげ 2001/01/27-23:05
記事番号9516へのコメント
どもっ、ezerさん
どうしてもカウンタ型を使わなければならないかどうかは未検討ですが、
項目計算式では駄目でも、置換の計算式にカウンタ項目を利用することは禁止されていないようでした。
いかがでしょう?
9519 Re:項目計算式にてカウンタ型と文字列の連結について ezer 2001/01/27-23:24
記事番号9518へのコメント
悲しげさんありがとうございました。
>どうしてもカウンタ型を使わなければならないかどうかは未検討ですが、
>項目計算式では駄目でも、置換の計算式にカウンタ項目を利用すること
>は禁止されていないようでした。いかがでしょう?

早速使ってみます本当にありがとうございました。又愚質問をするかもしれません
がよろしくお願いいたします。

9521 カウンタ値に頭文字 佐田 守弘 2001/01/28-00:37
記事番号9516へのコメント
ezerさん

質問されている通り、カウンタ項目は、項目計算式、項目初期値式などで参照する事はできません。
質問の「カウンタ項目値に頭文字を付けたコードを作る」事については、なぜその様な事をしなければならないかについて、
今一つ分からない部分があります。
私としては、後から述べる様に、データの持ち方から見直す必要があると思います。
ですからその方法を述べる事は、質問に対する解答ではありますが、問題解決の方法ではないかも知れません。

●カウンタ値に頭文字を付けたコードを作る方法
方法は簡単で、別の表に読み込んで、カウンタ型項目値を長整数値に変えれば、目的を達します。
その方法は次の通りです。
入力ファイルが20個あるとの事なので、それぞれを仮に受注01.tlbなどとします。
そして、カウンタ型の項目を[受注番号]とします。
@コードを作るための表を作る
受注01.tblなどに対応して、同じ項目からなる表、「受注01b.tbl」などを作って下さい。
ただし、カウンタ型の[受注番号]は長整数に変えておきます。
またこの表には、目的とするカウンタ値に頭文字を付けた項目を計算式で作って下さい。
こちらの表はカウンタ型ではなく、長整数になっているので、項目計算式で参照できるはずです。
A併合で読み込む
次いで、[受注番号]を参照項目とし、受注01.tblから受注01b.tblに併合を行って下さい。
あるいは併合でなく、読み込みでもできるはずです。
後はお分かりと思いますので、割愛します。

● なぜ頭文字が必要か
>この項目が必要なわけは入力ファイルが20個ほどありそれぞれに
>カウンター型で受注番号をとっています。そのデータを一つのファイルに
>読み込んでいるのですが
との事ですが、その様な事をする理由はなぜですか?
ここに本当の答があると思います。
まず、受注番号にカウンタ項目を使う事は間違っていません。問題は入力は20のファイルで行い、
これを1つにまとめる事にあります。

以下は私が考えた推定理由です。
@ある種別によって入力するファイルを分ける
客別、月別、あるいは店別に別のファイルに分けるなどです。
基本的にはこれらを1つのファイルとするのが正しいでしょう。どうしても別ファイルに
しなければならない場合には、その識別コードはカウンタ型にすべきではありません。

A20人で分散入力し、後から1つの表にまとめる。
これはネットワーク上で共有で入力するのが正しい方法でしょうね。

● 表毎に異なるカウンタ値を持たせる
上記の1の様な場合、どうしても表間で重複しないカウンタ値を持たせたいとします。
これは至って簡単です。
1つ目の表「受注01.tbl」では、カウンタ値を10万ないし100万から始まる値にして下さい。
同様に「受注02.tbl」は20万ないし200万から始まる値にします。
これは最初のレコードで、単に開始値を入力するだけです。
既に値が入力されているなら、
 #連番+100000
の様な計算式で置換すれば、後からでもカウンタ値を書き替えられます。

■ 桐のカウンタ項目について
桐のカウンタ項目は、Accessなどと違って、内部カウンタによって値を発生させる仕組みではなく、
インデックスによって現在の最大値+1が振られる仕組みです。
このため、レコードの入力が終わらなければカウンタ値が確定しません。
その代わり、値が重複しなければ、後からでも値の書き替えができます。
また、カウンタ値は1から始める必要はありません。
最初に、あるいは途中で大きな値を入力すれば、その値から始まる連番号がその後付きます。
佐田守弘(KS-00119)

9527 Re:カウンタ値に頭文字 ezer 2001/01/28-01:52
記事番号9521へのコメント
佐田先生詳しい説明と解説ありがとうございます。

>●カウンタ値に頭文字を付けたコードを作る方法
>方法は簡単で、別の表に読み込んで、カウンタ型項目値を長整数値に変えれば、目的を達しま
>す。その方法は次の通りです。
>入力ファイルが20個あるとの事なので、それぞれを仮に受注01.tlbなどとします。
>そして、カウンタ型の項目を[受注番号]とします。

大変良く分かりました。そのような方法が合ったのですね!!

>● なぜ頭文字が必要かその様な事をする理由はなぜですか?ここに本当の答があると思います。

多分私も分かっていないのかもしれません。引継ぎながら改良していますので・・・・・・
現在の稼働システムはV5にて稼働しております。(入力インターフェースは会話処理です。
そのほか印刷関係、分析等は一括を組んでいます。それをV8に移行する為に悪戦苦闘しております。
桐そのものにも初心者である為ですが。
V8に移行するなら共有にて入力作業等を実現したいのです。)
現状は20個程の入力ファイルがあり入力する項目内容とも全く違っています。
その中には受注品目を入力しています。
しかし受注したものがその数量で発送できないものがほとんどなのです。
その為発送できた数量を中間的なファイルに読み込ませて最終的に全てのデータを一つのファイルに読み込ませ集計し
納品書、請求書、分析等を行っています。
以前受注番号の件で質問させていただいた時も受注番号の事でご指導いただき大変勉強になりました。
ありがとうございました。

>まず、受注番号にカウンタ項目を使う事は間違っていません。問題は入力は20のファイルで行
>い、これを1つにまとめる事にあります。

他にどの様な方法があるのかも検討がつきません。現在はメニューフォーム、入力フォーム等で頭が一杯なのです。

次に続く
9528 Re:カウンタ値に頭文字 ezer 2001/01/28-01:55
記事番号9521へのコメント
実はカウンタ型で入力するのは共有更新にて同時入力する場合にも受注番号が重なることがないことが
3台のパソコンで実験してみたからなのです。

>● 表毎に異なるカウンタ値を持たせる
良く分かりました。そのような方法も合ったのですね。
一つ質問なのですが共有更新で共通の受注番号専用のファイルを作りそこにカウンタ型の項目を作り受注番号を振る時に
必ずこのファイルを呼んでから番号を付けて行く様な方法ができれば全てのファイルが連番になるような気がするのですが
この様な方法は可能なのでしょうか。
それとも考えすぎでしょうか?
多分先生の言われるとおりもう一度全てのシステムを見直さなければならないのかもしれませんが
現在のシステムをV8にまず移行しなければならないので、頭を抱えている次第です。

佐田先生の御指摘を大変ありがたく。当方の様な初心者にも丁寧にご説明下さりありがとうございました。
まず、受注番号の件は一番最初の方法で対処してみます。現在のシステムが中間ファイルに読み込む方法に
なっているものですから。
システムの設計を勉強したいなと思っていますがどの様な勉強をすれば良いのかも分からないのです。
皆さんの過去ログをみながら少しづつ勉強していきます。

ezerことtanakiより お礼まで


9530 Re:項目計算式にてカウンタ型と文字列の連結について 尾形 2001/01/28-09:13
記事番号9510へのコメント
>>[文字列項目]+#str(#num([カウンタ項目]),6)
>
>数値型でも出来ないと思いますけど、出来るのですか?
>カウンタ型は項目計算式には使えないようですね。

[数値項目]+[カウンタ項目]の組み合わせならできるといってあるのかと思いました。失礼しました ^^;

9532 Re:カウンタ値に頭文字 佐田 守弘 2001/01/28-13:11
記事番号9527へのコメント
ezerさんは No.9527「Re:カウンタ値に頭文字」で書きました。

>現状は20個程の入力ファイルがあり入力する項目内容とも全く違っています。
>その中には受注品目を入力しています。しかし受注したものがその数量で発送できないものがほとん
>どなのです。その為発送できた数量を中間的なファイルに読み込ませて最終的に全てのデータを一つ
>のファイルに読み込ませ集計し納品書、請求書、分析等を行っています。

どうやらこの辺に本当の答がありそうな気がします。
的確な解答はezerさんの仕事の業務分析をしてみる必要があるのですが、ここではとりあえず気がついた点を述べます。
@20の入力ファイル
それぞれの入力ファイルの入力項目が違っているとしたら、これを1つのファイルにまとめ用途する点に問題があります。
まとめるべきではありません。
しかし、実際にはまとめなければならない訳ですね。
もしまとめるには、それぞれの入力ファイルで共通な項目は何か、異なっている項目は何かを洗い出し、
なぜ個別の項目があるのか、全ての表を共通にできないのかを見直します。
そして、どうしても異なる部分があるなら、その部分は表の正規化を考えるなどの必要があるでしょう。
A未発送の処理
これを別ファイルに書き出す所に何か無理がありそうな気がします。
一部納品数量を同じ表に持っておく、などの方法があるのではないでしょうか。

●今すべき事は
>現在はメニューフォーム、入力フォーム等で頭が一杯なのです。
との事ですが、本来これはシステム分析とシステム設計が終わった後の話だと思います。
私の経験でいえば、表の設計などがきちんとしていないうちにフォームを作っても、結局は無駄仕事になるものです。
とはいえ、勉強のためであれば、それも致し方ない事だと思います。

9537 尾形さん 説明不足にて失礼しました。 ezer 2001/01/29-00:55
記事番号9530へのコメント
尾形さん こちらこそ説明不足で申し訳ありませんでした。
また、お教え下さい。よろしくお願いいたします。

9538 佐田先生 ありがとうございました。 ezer 2001/01/29-01:10
記事番号9532へのコメント
佐田先生 ありがとうございました。

表の設計から作り直す所存でいます。
多分2月中旬頃からシステム全てを見直し作り直します。表も正規化を考えます。
入力ファイルをできる限り共通化をし、項目名を全て見直さなければなりません。
現在前任者が作ったシステムにて稼働していますので、すぐに移行はできないのです。
まず、私自身のスキルを向上させなければなりません、桐8をその間勉強していきたいと思っています。
今は先生のホームページの資料を読んでいます。大変勉強になりありがとうございました。
ここでも又お世話になると思いますのでよろしくお願い致します。

まずはお礼まで。 
この度の質問でお答えいただいた全ての方々にこの場にて感謝を致します。
ezerことtanakiでした。

戻る