過去の桐井戸端BBS (桐ver.8)
23059 フォームで文字入力の規制をしたい ジャンゴ 2003/10/29-23:47
久々に投稿します。

桐8を使っています。フォームでデータの入力をしているのですが、
ある項目(A項目とB項目)には、決った文字(A項目には「あ」、B項目には「い」)しか入力しません。
ちなみに文字の入力にはトグルボタンを使っています。
ただし、別の項目(C項目)に特定の文字(「う」)が入力された場合は、
A項目には何も入力できなくし、B項目には「い」を入力できるようにしたいのですが・・・・。

A項目に間違って入力しなければいいことですが、実際の表はかなり複雑になっているので
間違いが多くて困っています。
いい方法があったら教えて下さい
23062 Re:文字入力の規制をする方法 佐田 守弘 2003/10/30-02:25
記事番号23059へのコメント
ジャンゴさん
質問の主旨というか、何ゆえに何をしたいのかが今一つ理解できません。
少し分りやすい例で言い換えながら確認します。

[A][B][C]の3項目がある。

[A]には「東京」の値が入るか、未定義かのどちらかで、千葉、神奈川などの値の
入力は行わない。未定義にはしないというケースもあり得るのですが。

[B]には、「大阪」の値が入るか、未定義かのどちらかで、「京都」「兵庫」などの値は入力させない。

そして[C]に、「関西」と入力したら、[A]には「東京」を入力できなくし、
[B]には[大阪]の入力ができる様にする。
また質問には書いてないが、[C]に「関東」と入力した時には、[B]が「大阪」になるのを禁止し、
[A]に「東京」を入力する事は許可する。

以上の様な意味に解釈して良いでしょうか。

さて、以下は私に理解できない点です。この点をもう少し詳しくお知らせ下さい。

1)決まった値しか入力しない項目が本当に必要なのでしょうか。
[A]も[B]も、値は1通りでしかなく、それが[C]の値で決まるなら、
この項目を持つ事自体が意味を持ちません。なぜ作る必要があるのでしょうか。
必ずどちらかに決まった値を入力させるのであれば、計算式でその値が決まります。
計算項目にすれば済みますし、その値さえ持つ必要がなくなります。

2)後からチェックする理由が不明
[A][B][C]の項目はこの順序であり、この順に入力するのだと思います。
であるとすると、[A]と[B]に入力を許可するかどうかを決める基準となる
[C]を後から入力する点が良く分りません。

[A]に先に「東京」と入力し、その後で[C]に「関西」と入力した場合に、
先に入力が終っている「東京」の値はどう扱う予定でしょうか。

佐田守弘(KS-00119)


23063 Re:文字入力の規制をする方法 うにん 2003/10/30-09:15
記事番号23059へのコメント
>ただし、別の項目(C項目)に特定の文字(「う」)が入力された場合
>は、A項目には何も入力できなくし、B項目には「い」を入力できるよ
>うにしたいのですが・・・・。

B項目は全く無関係なようですが?それは置いといて、A項目の行制約条件に
#COND([C]="う",[A]=#U,1,[A]=#U .or [A]="あ")
とでもすればいいのでは?

23084 Re:文字入力の規制をする方法 ジャンゴ 2003/10/30-21:40
記事番号23063へのコメント
佐田さん、うにんさん早々のご指導ありがとうございます
佐田さんの指摘で、質問内容が不適切極まりないと反省しています。
改めて質問内容を説明します

表は、ある試験のために作ってあります
以下は概略の形です(実際の表は100項目くらいあります)。

A項目には、区分を入力(人系又は理係)
B項目には、理工のみの選択科目(物理、化学)
C項目には、人社のみの選択科目(国語、地理、日本史)

A項目に「人係」と入力した場合、B項目には何も入力できなくし、C項目は入力可能とし
人係のみの選択科目「国語、地理、日本史」のいずれかを入力する。

A項目に「理係」と入力した場合、B項目は入力可能とし理係のみの選択科目
「物理、化学」のいずれかを入力し、C項目は何も入力できなくする。

B、C項目を一つにしてもいいのですが後々の作業のため別々にする必要があります。

「人係」であるのに「物理」を選択するような入力ミスをなくしたいのが主旨です。

どうも上手く説明できないのですが、宜しくお願いします
23087 Re:文字入力の規制をする方法 うにん 2003/10/30-23:09
記事番号23084へのコメント
>「人係」であるのに「物理」を選択するような入力ミスをなくしたいのが主旨で
>す。

う〜ん、D項目に入力することにして、A項目の値によって値集合を切り替えるとかはどうですか?
BとCが必要ならAを元に計算します。たとえばBは
#COND([A]="理系",[D])
となります。

23130 Re:文字入力の規制をする方法 佐田 守弘 2003/11/01-10:34
記事番号23084へのコメント
ジャンゴさん
基本はBとCは1つの項目にすべきです。ただし、
>B、C項目を一つにしてもいいのですが後々の作業のため別々にする必要があり
>ます。
と書かれていて、その理由が分らないので何とも言えないのですが、
いずれにしてもメリットとデメリットを天秤に掛ける話になるのかと思います。
想像ではありますが、同じ項目にしても、後々の作業にそれ程支障にはならない事はあり得る事です。

さて、質問はBとCを別々にした上で、Aの値でBないしCのいずれかに入力を禁止したいとの事ですので、
その方法をお答えします。

●行制約で制限する
 Bの行制約式として、 #条件選択([A]="人系","")
 Cの行制約式として、 #条件選択([A]="理系","")
これで目的を達せられるはずです。

●フォームを使うなら
Aの値によってBとCの入力する方だけを表示し、他方は非表示とする事が
可能になります。以下にぴったりの例を掲げてあります。
http://www.ne.jp/asahi/m.sada/kiri/QA/EVENT/EVNT_02.html

佐田守弘(KS-00119)
23159 Re:文字入力の規制をする方法 ジャンゴ 2003/11/01-23:44
記事番号23130へのコメント
佐田さん、うにんさんありがとうございます
出張してたのでBBS開くことができませんでした

項目を一つにすることがベターですよね。もう一度考え直します
また、佐田さんの

●行制約で制限する
 Bの行制約式として、 #条件選択([A]="人系","")
 Cの行制約式として、 #条件選択([A]="理系","")
これで目的を達せられるはずです。

●フォームを使うなら
Aの値によってBとCの入力する方だけを表示し、他方は非表示とする事が可能になります。

を早速試してみます。

ありがとうでした。また何かありましたら宜しくお願いします。

戻る