過去の桐井戸端BBS (桐ver.8)
7600 データ入力用フォームについて NANA 2000/09/12-16:26
NANAです。
先日は、初めての試みである、データ入力用フォームの作成で、大変お世話になりました。<(_ _)>
このフォームの特性をまだ良くつかんでいないので、少しでもイベントやフォームに改良を加えると、
エラーが発生するので悩んでいます。

今回はデータ入力用フォームに、担当者コードを入力した時点で、担当者名を表示させるために
#表引き(&担当者,=,"M_担当者.tbl",[担当者コード],[担当者名])
を担当者名のテキストのソースに設定してみました。
&担当者を[担当者コード]にして、二通り試しました。

しかし、どちらともイベントの実行中に
「解析できないデータが含まれています」
というエラーが出てしまいます。

先日bonitoさんがレスをつけてくれたときの解答に
「変数の種別によっては…、WFM定義時に整合性エラーが出ます
(タイミングとしては変数がまだ宣言されていないので)、が
全然気にせずに保存終了して下さい。」
とありましたが、これはその状態が適用されないのでしょうか?
ご存じの方、どうか教えてください<(_ _)>
7602 Re:データ入力用フォームについて 宮城 2000/09/12-17:31
記事番号7600へのコメント
NANAさん、こんにちは。

まずは K3の次のページ。

http://www.k3-unet.ocn.ne.jp/support/faq/faq26.html

経験的には、変数がまだ宣言されていないというケースが多いです。

bonitoさんのコメントは、CMDをメインとし、補完的に KEVを使ったケースで、
CMD冒頭で変数宣言されていれば、フォームが開くときには当然変数は宣言されているものの、
デバッグか実際に CMDを動かしてなければ、変数管理に当該変数は登録されないため、
そのフォームを単体で開くとエラーになるということです。
だから、きにしちゃだめよ、と。

&担当者は CMDで宣言してませんか?

7610 Re:データ入力用フォームについて 佐田 守弘 2000/09/12-23:53
記事番号7600へのコメント
NANAさん
質問された事への回答は宮城さんが書かれている通りなのですが、
行われている内容にちょっと気になる点があるので確認させて下さい。
担当者コードを入れて担当者名を表示させるとの事ですが、単に表示させるだけなのでしょうか。
担当者コードと担当者名のどちらかあるは両方を表データに入力するのではないかと思ったのですが。
一般的には表には担当者コードのみ入力し、フォーム上では担当者名を表引きして表示するといった方法が使われます。
ですから、&担当者といった変数を使う必要はなく、項目値に担当者コードを入力し、その値で表引きする
 #表引き([担当者コード],=,"M_担当者.tbl",[担当者コード],[担当者名])
といった形になるのかと思うのですが。

佐田守弘(KS-00119)

7614 Re:データ入力用フォームについて アックン 2000/09/13-10:15
記事番号7600へのコメント
NANAさん、こんにちは。
Z_コード入力.wfm (データ入力用フォーム)の編集対象表(タブ)→編集対象表に、
M_担当者.tbl と設定したのではありませんか。
ここはそれ以外の表、たとえば、S_取引日記帳.tbl を設定してください。
M_担当者.tbl を指定すると、自分自身の表(M_担当者.tbl)から表引きしようとするのでエラーになるのです。
Z_コード入力.wfm をフォーム呼び出しした途端にこのエラーが出るはずです。

アックン(=^・^=)

7616 Re:データ入力用フォームについて NANA 2000/09/13-10:34
記事番号7610へのコメント
すみません<(_ _)>早とちりでした。
エラーの内容は、
『フォーム:(5220)担当者名::ソース
<<解析できません>>
KU1171:編集対象表がありません』
と言うものでした。
佐田さんの仰るとおりただ表引きして担当者名を表示させたいだけなのです。
7617 Re:データ入力用フォームについて NANA 2000/09/13-10:38
記事番号7614へのコメント
仰るとおり、M_担当者.tbl と設定しました^^;ゞ
でもそのエラーが出たので、S_取引日記帳.tbl を設定してみました。
そうしたら、最初から、担当者名が表示され、担当者コード通りの名前が表示されません。
タブオーダーを設定しても、その項目はとばされてしまうのですが、
どうしたらよいでしょうか?

7623 Re:データ入力用フォームについて アックン 2000/09/13-14:49
記事番号7617へのコメント
NANAさん>
「編集対象表がありません」というエラーでしたか。失礼しました。

対策は前回同様、編集対象表にダミーの表(たとえば S_取引日記帳.tbl )を指定します。
表引きの式は、NANAさんが当初書かれていたとおりでオーケーです。

  表引き(&担当者,=,"M_担当者.tbl",[担当者コード],[担当者名])

これでうまくいかないときは見本を送りますから、支障がなければメールアドレスをメールしてください。
ウェブマスターの幅田さん経由でも結構です。
ただし、メールでのやりとりはご勘弁ください。

アックン(=^・^=)
7624 Re:データ入力用フォームについて アックン 2000/09/13-14:53
記事番号7623へのコメント
「表引き・・」は「#表引き・・」ですね。
コピー時に#が抜けてました。<(^^;
7625 Re:データ入力用フォームについて アックン 2000/09/13-15:45
記事番号7624へのコメント
他に希望される方は、掲示板に書き込んでください。
メールいただいても応対できませんので。

7626 Re:データ入力用フォームについて NANA 2000/09/13-16:17
記事番号7623へのコメント
早々のレスありがとうございます<(_ _)>
表引きを#表引き(&担当者,=,"M_担当者.tbl",[担当者コード],[担当者名])
編集対象表をS_取引日記帳.tbl に設定しました。
今度は、データの型が一致していません と言うエラーが出てしまいました(-_-;)

お手数ですが、見本をお願いいたします<(_ _)>
7628 Re:データ入力用フォームについて アックン 2000/09/13-17:04
記事番号7626へのコメント
NANAさん>
見本は先ほど添付メールしました。
ファイルサイズが 18KB程度の LHAファイルです。

> 今度は、データの型が一致していません と言うエラーが出てしまいました(-_-;)
もし &担当者と[担当者コード]のデータ型が異なっていたら、同じ型にしてください。

見本では &担当者を &担当者コードとしてますが、整数です。
[担当者コード]も整数です。

で、どうやってもうまく動かん....というときは、
そちらのファイルを LHA か ZIP で圧縮して送ってください。
データは10行程度でいいです。

アックン(=^・^=)

7644 出来ました(^_^)v NANA 2000/09/14-09:54
記事番号7628へのコメント
先ほどメールに添付ファイルして送りましたが、
まことに申し訳ありません<(_ _)>
凄いケアレスミスに気がつきました。
担当者名の表引きですが、
#表引き(&担当者コード,=,"M_担当者.tbl",[担当者コード],[担当者名])を
#表引き(&担当者,=,"M_担当者.tbl",[担当者コード],[担当者名])
としていました(-_-;)

送っていただいたファイルをもう少し検討して、
よりすばらしいものが出来るように頑張りたいと思います(^-^)

アックンさん、本当にありがとうございます<(_ _)>
これからも頑張りますので、どうぞよろしくお願いいたします<(_ _)>
7648 度々申し訳ありません。 NANA 2000/09/14-11:01
記事番号7628へのコメント
今度はまた別のエラーが発生してしまいました。
ちゃんと確認してから書き込みをするべきでした。

お送りした添付ファイルも同じ状態ではないかと思いますが、
277行目で、データの型が一致していません。
と言うエラーです。

担当者コードは数値型です。
テーブルでも同じにしています。

&担当者は文字列
&担当者コードは数値型です。

何がいけないのでしょうか?

私が作成したものでは、
&担当者では、フォーム呼び出しの際のエラー、
&担当者コードでは、277行目の絞り込みでのエラーです。

お時間ありましたら、確認していただけませんでしょうか?
よろしくお願いいたします。

7650 Re:度々申し訳ありません。 アックン 2000/09/14-11:45
記事番号7648へのコメント
NANAさん>
まだまったく動かしておりませんが、とりあえず該当行を見せてもらいました。
ここは比較式を代入した変数ですから、
[担当者コード]_文字列型の変数名 にしてください。

276  置換 [受注日]=#日時日付([受注日])
277  絞り込み [担当者コード]_&担当者コード
278  絞り込み [受注日]{&開始日<=[]<=&終了日}

この3行をコメントアウト(先頭に*を付ける)して、以下の5行を入れてください。

 cond ( #処理条件名検索( 3,"abc" ) ) 検索条件削除 "abc"
 &比較式 = #str(&担当者コード),\
 &STR = "d"" "+#tistr(&開始日,0,1,0)+"""<=[]<=d"" "+#tistr(&終了日,0,1,0)+""""
 検索条件登録 条件名 = "abc" , { [担当者コード]_&比較式 , [受注日]_&STR }
 絞り込み 条件名 = "abc"

&比較式は組み込み変数で、ここでは仮に用いているだけですから、
いずれは他の文字列型の変数に変更してください。

条件名を使うと高速に絞り込みできます。

アックン(=^・^=)

7654 Re:度々申し訳ありません。 NANA 2000/09/14-14:58
記事番号7650へのコメント
アックンさんありがとうございます<(_ _)>
絞りのみのコマンドは、文字列型の
変数名出なければいけなかったんですよね^^;ゞ

エラーが出ずに正常に動くようになったのは
良いのですがここでまた一つ問題が発生です。

一度検索をして印刷をかけたあと、再度別の情報で印刷をかけたいときに、
立て続けに開いてみると、入力用のフォームに、担当者コードのテキストボックスに
先ほどのデータが残っています。
これを空白にする、または選択状態にして置いて、そのまま数値を入力できる方法はありませんか?
マニュアルを調べているのですが、なかなか見つかりません。
そう言ったことがもし出来るのでしたら、教えてください<(_ _)>

ちなみに置換 [担当者コード]=""を
イベント処理の中に書き込みましたが、
変化はありませんでした^^;ゞ
7655 Re:度々申し訳ありません。 宮城 2000/09/14-15:24
記事番号7654へのコメント
私もあれっ?と思いました。
従来、絞り込み [項目名]{&変数名}で搾り込めてたのに、認められなくなったようですね。

>入力用のフォームに、担当者コードのテキストボックスに
>先ほどのデータが残っています。
>これを空白にする、または選択状態にして置いて、
>そのまま数値を入力できる方法はありませんか?

項目値なら行訂正、変数なら代入でヌルにした後、

メソッド呼び出し @テキストX.再描画()
メソッド呼び出し @フォーム.描画更新()

でダメですか? (テキストボックスにすら私には理解不能の挙動があり、ダメの可能性あり。)

ならばこんな手も。
当該テキストボックスのオブジェクト属性→編集のタブ→挿入モードを上書きに。
(横道それますが、なんでオブジェクトリストでは「入力ステータス」なの?)

フォーカス取得イベントで、

メソッド呼び出し @フォーム.更新モード設定(2)

これで上書きで訂正モードにはなります。


7657 Re:度々申し訳ありません。 アックン 2000/09/14-16:14
記事番号7654へのコメント
NANAさん>
> ちなみに置換 [担当者コード]=""を
Z_コード入力.wfm をフォーム呼び出しする直前に、
&担当者コード = "" , &開始日 = "" , &終了日 = ""
とすればオーケーです。

この質問を受ける前に少しだけプログラムを動かしてみたところ、
M_担当者.TBL の参照制約がおかしくて開くことができず、
今回の質問の該当個所を試せない状態です。
すみませんが、正常なものをもう一度送ってください。
このファイルだけで結構です。

まだこれからもいろいろ質問があるでしょうから、よろしく。

アックン(=^・^=)
7668 変数で絞り込み 悲しげ 2000/09/15-00:19
記事番号7655へのコメント
どもっ、宮城殿
ビクッと反応してしまったのですが、

>私もあれっ?と思いました。従来、絞り込み [項目名]{&変数名}
>で搾り込めてたのに、認められなくなったようですね。

この部分、具体的にはどのようなことを意味しているのでしょう?
    絞り込み [項目名]{&変数名}
の記述では構文エラーとなってしまうと云うことでしょうか?
訳あって、非常に気になっています。(^^;)
7672 Re:変数で絞り込み 宮城 2000/09/15-12:23
記事番号7668へのコメント
悲しげさん、こんにちは。
たしか、「あえて、絞り込み [項目名]{&変数名}でいく」といつかお書きになっていましたね。

細かな状況は覚えていませんが、思った通りにならず、おのれ!と
絞り込み [項目名]_&変数名に変えました。

SP6β1でしたが、NANAさんも書かれているということは???

7689 Re:変数で絞り込み アックン 2000/09/16-15:08
記事番号7672へのコメント
悲しげさん、宮城さん、こんにちは。

宮城さん>
>SP6β1でしたが、NANAさんも書かれているということは???
話題にしていたのは、
<項目名>{<変数名>} ではなく、
<項目名>_<変数名> です。

後者は項目のデータ型が数値であっても、変数は文字列型ですという話です。

<項目名>{<変数名>} は正しい書式ではありません。
実際にテストをしたところ、Windows版は結果が不定でした。
エラー表示しないですっと通してしまうんですけど、
結果はうまくいったりいかなかったりでした。
悲しげさん、これはやっぱり使わない方がいいと思いますよ。(^^;
DOS桐でも結果が不定だったように記憶しています。

エラーメッセージを出すとか、
何らかの対策をとられた方がいいと思います。>堀川さん

アックン(=^・^=)
7697 Re:変数で絞り込み(1) 悲しげ 2000/09/17-17:17
記事番号7689へのコメント
すいません、明らかに別件の話題なんですが(^^;)、成り行き上、このまま続けさせていただきます。

>宮城さん>
>>SP6β1でしたが、NANAさんも書かれているということは???
>話題にしていたのは、
><項目名>{<変数名>} ではなく、
><項目名>_<変数名> です。
>後者は項目のデータ型が数値であっても、変数は文字列型ですという話です。

処理の詳細はメールの中のようでして、よく判らないままコメントをつけてしまいましたが、
今回改めてツリーを読ませていただいたところ、ようやく意味が判りました。
要するにデータ型の問題ですね。
  #7650>277行目  絞り込み [担当者コード]_&担当者コード
この時、項目[担当者コード]も項目&担当者コードも数値型であることから
ここは単に
  絞り込み [担当者コード]=&担当者コード
とするだけでよかったはずです。
アンダーバー変数方式は、アックンも仰るとおり、文字列型についてだけのことだったと思います。
数値型変数でアンダーバー方式の記述をすればそりゃエラーになるでしょう。(^^;)

あるいは
  絞り込み [担当者コード]{&担当者コード}
でも私は問題無く動くような気がしないでもありませんが、でも宮城さんは
sp6β1ではこの記述は「認められなくなった」と仰った上で、
逆にアンダーバー方式に書き直したらうまく行ったようですから、却って不思議です。
何か別件ものと混乱してませんでしょうか(?_?)

さて、この度私もようやくにしてsp6β2でこの[項目名]{&変数}の件を試してみました。
その結果、sp5以前でもそうだったように特に問題ある挙動は見られませんでした。

アックン曰く
><項目名>{<変数名>} は正しい書式ではありません。
>実際にテストをしたところ、Windows版は結果が不定でした。
>エラー表示しないですっと通してしまうんですけど、
>結果はうまくいったりいかなかったりでした。
>悲しげさん、これはやっぱり使わない方がいいと思いますよ。(^^;
>DOS桐でも結果が不定だったように記憶しています。

結果が不定だったと云うことは、絞り込みされたりされなかったりと云うことだろうと思います。
この件については、確かにDOS版でもアックンは同様の主張をされていたことを私も記憶しています。
ただしその時の最終結論は、処理の前に「選択解除」の記述を忘れていたことによる不定でした。(^^;)
Windows版によるテストも、事前の「絞り込み解除」を忘れている可能性はいかがでしょう?

※長いので分割します。
7698 Re:変数で絞り込み(2) 悲しげ 2000/09/17-17:18
記事番号7697へのコメント
続きです。

え〜、私が何故このことにこんなにこだわっているかについて書きます。
お手数ながら、項目として[品名]を有する"商品.TBL"を作って下さい。
品名としては色々入れていただく中に
  0.1w/v%methanol
ってのを入れておいて下さい。そして次の一括処理を動かします。
----------------------------------------------------------------
変数宣言 長整数{&メニュー},文字列{&検索}
表 "商品.TBL"
繰り返し
 メニュー2 &メニュー,1,(10,10),"[Esc]で終了"\
      ,"アンド変数で検索,アンダーバー変数で検索"
 if(&メニュー>0)
  表表示
  絞り込み解除
  キー入力 (01,01),プロンプト="",モード=全角,上書き=しない\
       ,初期値="0.1w/v%methanol",終了状態=&実行リターン,&検索
  if(&実行リターン=0 .or &検索="")
   繰り返し中止
  else if(&メニュー=1)
   絞り込み [品名]{&検索},部分一致検索=しない
   確認
  else if(&メニュー=2)
   絞り込み [品名]_&検索,部分一致検索=しない
   確認
  end
 else
  繰り返し中止
 end
繰り返し終了
終了
----------------------------------------------------------------
[項目名]{&変数}方式では支障なく、
[項目名]_&変数方式では必ず「KD1084:比較式の形式に誤りがあります」エラーが出るはずです。
つまり変数の中に演算子文字列の類(+-,半角スペース等)を含む場合には、
このアンダーバー方式では必ずエラーとなる訳です。
これは少なくともV4以来一貫した(不具合的な)仕様です。
これには当時非常に困っていたところ、ア○ク○様から[項目名]{&変数}方式の示唆を受け、
ようやく乗り切ることができ、今日に至っております。
以降、DOS/Windowsを貫いて、特に「不定」とかの不具合には出会わないまま
(否、気が付かないだけかも?)、使い続けております。
云うまでもないことですが、私は別に好き好んで使っている訳ではさらさらありません。
上例のようなケースで困っていてやむを得ず使っているんですからね。
この点、即ち「アンダーバー方式では、変数内に演算子文字列を含む場合にはエラーとなる」点の
改良をサポートにも連絡して来ましたが、特に前向きの回答はいただけておりません。
そして、「代用として私は[項目名]{&変数}方式を使っている」旨も付記したところ、
返答として、正確な文言は忘れましたが「今後構文解析は厳密になって行くので、
[項目名]{&変数}方式を使わずアンダーバー方式に書き換えておいた方が無難」的な
忠告を受けたりしました。

私としても上記不具合的仕様を改善してさえくれれば、アンダーバー方式に
乗り換えるに全くやぶさかではないのでありますが、
少なくともsp6β2の現在に至っても改善はされていないようで、残念です。
(sp6β1の挙動は不明)

アックン曰く
>エラーメッセージを出すとか、
>何らかの対策をとられた方がいいと思います。>堀川さん

私も堀川さんへ緊急伝言。
上記アックンの発言は一切無視して(^^;)、エラーメッセージとかの対策は取らせないで下さいませ。(^^;)
(むしろ、挙動的にもエラーにしないで下さいませ)
そして、アンダーバー方式での不具合改善にそろそろ着手するように開発にお伝えいただければ幸いです。
私の数年越しのお願いでござんす。
7700 Re:変数で絞り込み(2) hidetake 2000/09/17-17:52
記事番号7698へのコメント
>[項目名]{&変数}方式では支障なく、[項目名]_&変数方式では必ず「KD1084:
>比較式の形式に誤りがあります」エラーが出るはずです。

完全一致で選択するのだったら、&検索=""""+&検索+"""" としてから
選択してはいけないのですか?

含むだったら、「部分一致検索=しない」のまま、&検索="*"+""""+&検索+""""+"*"
しても良いだろうし?


7704 ああ、7年の勘違いか(^^;) 悲しげ 2000/09/17-21:14
記事番号7700へのコメント
どもっ、hidetakeさん、アンダーバー方式ですが

>完全一致で選択するのだったら、&検索=""""+&検索+"""" 
>としてから選択してはいけないのですか?
>
>含むだったら、「部分一致検索=しない」のまま、
>&検索="*"+""""+&検索+""""+"*" しても良いだろうし?

「こんなことはもう何年間もお試し済みじゃわい(^^;)」と思いつつも
一応試してみると、あれ、あれ、あれれれれれ?????

できました。
完璧に出来ました。V8sp6β2のみならずV5のr11でも完璧にうまく行きます。
う〜ん、要するに7年ほど前のダブルクォーティションの数の勘違いに起因するものと思われます。
当時も、部分一致検索含めてタブルクォーティション(ダブ子さん)付きで色々試したはずだったのですが、
変数に演算子文字列を含む時にたまたま数を間違ったんでしょうかね。
いやぁ、7年間のカンチ君だったようです。ああ、恥かし。(^^;)

と云う訳で、アックン、堀川さん、宮城さん他の皆様、
この話は無かったことに……。(^^;)(^^;)

※でも、項目名{*&変数*}は便利だったです、ダブ子さんに惑わされない分わかりやすいし。
7712 Re:度々申し訳ありません。 NANA 2000/09/18-13:25
記事番号7657へのコメント
お休み中だったので書き込みが遅れました<(_ _)>

>> ちなみに置換 [担当者コード]=""を
>Z_コード入力.wfm をフォーム呼び出しする直前に、
>&担当者コード = "" , &開始日 = "" , &終了日 = ""
>とすればオーケーです。
はすでに設定していたのですが、
残ってしまっていました。

今現在は宮城さんの方法、
当該テキストボックスのオブジェクト属性→編集のタブ→挿入モードを上書きに。
を使わせていただいています。

今後ともよろしくお願いいたします<(_ _)>
7713 Re:度々申し訳ありません。 NANA 2000/09/18-13:27
記事番号7655へのコメント
お休み中だったので書き込みが遅れました<(_ _)>

今現在は宮城さんの方法、
当該テキストボックスのオブジェクト属性→編集のタブ→挿入モードを上書きに。
を使わせていただいています。

お休みあけで久しぶりにBBSに来てみたら、そのあとの
レスの数に驚きました。

みなさん、桐を使い込んでいらっしゃるようなので、
前のバージョンと変わったところなど凄くお悩みのようですが、
私の場合、バージョンは8から使い始めた超初心者なので、
「こういうものなのかぁ」と言う感じで丸覚えです^^;ゞ

なので、>>SP6β1でしたが、NANAさんも書かれているということは???
と言う、みなさんが疑問に思うほど、
深く考えて書き込んだことではありません^^;ゞ
申し訳ありませんでした<(_ _)>

これから、
>メソッド呼び出し @テキストX.再描画()
>メソッド呼び出し @フォーム.描画更新()
の方も試してみたいと思います。

今後ともよろしくお願いいたします。

戻る