過去の桐井戸端BBS (桐ver.8)
11540 一括処理中でフォームを利用するとエラーになる masa 2001/06/13-10:24
私の周りには桐を使う人がいなくて、この投稿や他の関連HPを見てこんなにたくさんの人が実際に使ってるんだなと思うと、なんかうれしい感じます。
それで初めて投稿するのですが、
現在、桐v8.sp6を使用してるものですが,一括処理中に
「フォームに解析できない式が含まれています。」と出るのですがどういう現象が考えられますでしょうか?
(単独でフォームを開く時は問題無く開けます)
一括処理の文が長いのである程度削除しました。
(これ以上削ると更に止まってしまいそうで)
(それでも長くてすみません)、
もし思いつく事がありましたら教えて下さい。
よろしくお願い致します。


変数宣言 固有, 文字列{ &メニュー,&ボタン,&処理名 }
変数宣言 固有, 整数 { &メニューフォーム,&得意先コード,&商品コード,&担当コード,&表示フォーム }
変数宣言 固有, 整数 { &番号,&得意先マスター,&商品マスター}
変数宣言 固有, 文字列{ &閉じる,&料理 }
変数宣言 固有, 長整数{ &値段 }

ウインドウ作成 "メインメニュー.wfm", 位置 = ( 50, 50 ), ハンドル = &メニューフォーム
 表 ”3000配達登録.tbl”
繰り返し ( &メニュー <> "終わり" )
ウインドウ会話 &メニューフォーム, ボタン = &メニュー
ケース開始
ケース ( &メニュー = "得意先マスター" )
手続き実行 得意先マスター処理
ケース ( &メニュー = "終わり" )
ケース終了
ケース開始
ケース ( &メニュー <> "終わり" )
手続き実行 結果表示
&処理名 = &ボタン
ケース終了
ケース開始
ケース ( &ボタン = "メニュー" )
 絞り込み解除 *
&得意先コード = #未定義
ケース終了
繰り返し終了
ウインドウ終了 &メニューフォーム
中止 表
終了
* ----------------
*
* 手続き群
* 手続き 得意先マスター処理
*
名札 得意先マスター処理
表 "3000配達登録.tbl", モード = 参照, 使用フォーム = "3001配達登
録.wfm"
ウインドウ作成 "3001配達登録.wfm",位置 = ( 300, 150 ),ハンドル = &得
意先マスター
繰り返し
/* 配達登録 */
ウインドウ会話 &得意先マスター,ボタン = &ボタン
ケース開始
ケース ( &ボタン <> "メニュー" )
/* コードを指定 */
&得意先コード = &ボタン
検索 [A] = *&得意先コード*
ケース開始
ケース ( .NOT #終端行 )
絞り込み [A] = *&得意先コード*
ケース その他
/* 得意先コードなし */
確認 "この得意先コードはありません"
ケース終了
ケース終了
条件 ( &ボタン = "メニュー" .OR .NOT #終端行 ) 繰り返し中止
繰り返し終了
ウインドウ終了 得意先マスター処理
手続き終了
* --------
* 手続き 結果の表示
名札 結果表示
&有効件数=#総件数
ウィンドウ作成 "3001配達登録.wfm",位置=(150,150),ハンドル=&
表示フォーム

-----フォームの得意先マスターボタンを押すとここで止まってしまいます。-----

 表 ”3000配達登録.TBL”
&番号 = 1
位置指定 行番号 = 先頭
繰り返し
ウインドウ会話 &表示フォーム,ボタン = &ボタン
ケース開始
ケース ( &ボタン = "次" .AND &番号 < &有効件数 )
位置指定 行番号 = 次行
&番号 = &番号 + 1
ケース ( &ボタン = "前" .AND &番号 > 1 )
位置指定 行番号 = 前行
&番号 = &番号 - 1
ケース終了
条件 ( &ボタン = "絞り込み" .OR &ボタン = "メニュー" ) 繰り返し中

繰り返し終了
ウインドウ終了 &表示フォーム
手続き終了





11542 Re:一括処理中のフォーム利用について tuji 2001/06/13-10:36
記事番号11540へのコメント
>「フォームに解析できない式が含まれています。」と出るのですがどういう現象が
>考えられますでしょうか?(単独でフォームを開く時は問題無く開けます)

フォームが単独で開けるのであれば,
フォームで定義した局所変数と,
一括処理で定義した変数がダブっていませんか?

11543 Re:一括処理中のフォーム利用について masa 2001/06/13-11:14
記事番号11542へのコメント
tujiさん
さっそく回答頂きありがとうございます。

>フォームが単独で開けるのであれば,
>フォームで定義した局所変数と,
>一括処理で定義した変数がダブっていませんか?
>
との事ですがフォームでは局所変数は使用していませんでした。
他の原因を思い当たればよろしくお願い致します。


11550 Re:一括処理中のフォーム利用について masa 2001/06/13-15:11
記事番号11542へのコメント
tujiさん
>フォームが単独で開けるのであれば,
>フォームで定義した局所変数と,
>一括処理で定義した変数がダブっていませんか?
>

先程は失礼しました。意見をヒントによくフォームの固有変数の所を見てみると、
変数値は「得意先マスター」で一括処理の中は
 ケース ( &メニュー = "得意先マスター" )で全角と半角の違いがありました。
すみません。
只、まだ同じ所で同じエラーで止まってしまいます。
又、何処かの変数が違うという事でしょうか?
よろしくお願い致します。


11552 Re:一括処理中のフォーム利用について 今村 誠 2001/06/13-15:43
記事番号11550へのコメント
masaさんこんにちは変数宣言は省きました

 ウインドウ作成 "メインメニュー.wfm", 位置 = ( 50, 50 ), \
 ハンドル = &メニューフォーム
※ 表 ”3000配達登録.tbl”←これは得意先に入ってからが良いのでは
 繰り返し ( &メニュー <> "終わり" )
  ウインドウ会話 &メニューフォーム, ボタン = &メニュー
   ケース開始
    ケース ( &メニュー = "得意先マスター" )
       手続き実行 得意先マスター処理
    ケース ( &メニュー = "終わり" )
   ケース終了
※  ケース開始             ここから
    ケース ( &メニュー <> "終わり" )
       手続き実行 結果表示
       &処理名 = &ボタン
   ケース終了
   ケース開始
    ケース ( &ボタン = "メニュー" )
       絞り込み解除 *
       &得意先コード = #未定義
※  ケース終了             ここまでは得意先の中で
 繰り返し終了              手続きにしたがよいのでは
  ウインドウ終了 &メニューフォーム
  中止 表
 終了
* -------- 手続き群--------
 名札 得意先マスター処理
※  表 "3000配達登録.tbl", モード = 参照,\ ここは専有がよいのでは
  使用フォーム = "3001配達登録.wfm"
   ウインドウ作成 "3001配達登録.wfm",位置 = ( 300, 150 ),\
ハンドル = &得意先マスター
  フォーム形式編集 ,画面消去=する,更新=許可,許可作業=*,終了状態=&終了
   ウインドウ終了 &表示フォーム
手続き終了

コマンドボタンの
    機能   機能パラメータ
1 表示     確定する
2 なし   #代入(&モード,”半角”),#代入(&処理名 ,"項目名")
3 手続き実行  ”検索絞り込み”


手続き実行 検索絞り込み()
 cond (.not #eof) 行マーク定義 2
キー入力 (10,1),プロンプト=&処理名,モード=&モード,上書き=する,\
終了状態=&終了,&得意先コード
検索 &処理名_&得意先コード,文字比較方法=自動,部分一致検索=含む
 cond (#eof) 確認 "該当するデータはありません。"
 cond (#eof) &番号=50
 cond (#eof) ジャンプ 行マーク=2
 cond (&番号=50) 行マーク解除 2
 cond (&番号<>50) 絞り込み &処理名_&得意先コード,文字比較方法=自動,\
部分一致検索=含む
end

ケース会話はむずかしいのでイベントにしてみました。

フォームは同じフォームのようですのでグループ選択状態でない場合
検索できます。
おそらく、メインフォームと得意マスターの間を行き来しているからだと思います。
販売と得意を2個一度にウィンドを作成して、左に販売右に得意で探したいコードを
コマンドボタンでしたらいかがでしょうか。
11554 Re:一括処理中のフォーム利用について 今村 誠 2001/06/13-16:05
記事番号11552へのコメント

>手続き実行 検索絞り込み()

一括ごっちゃになって書き間違えました。

手続き定義開始 検索絞り込み()

が正しい記述です。
11558 Re:一括処理中のフォーム利用について masa 2001/06/13-17:53
記事番号11552へのコメント
今村 誠さん
回答どうもありがとうございます。

ケース会話もイベント処理も桐V8の一括処理サンプルの中から利用している状態なので
まだ詳しくは解りません。すみませんが下記処理はイベントの何処で入力するのでしょうか?
又、そのまま全文、同じ入力で構いませんでしょうか?


>手続き定義実行 検索絞り込み()
> cond (.not #eof) 行マーク定義 2
>キー入力 (10,1),プロンプト=&処理名,モード=&モード,上書き=する,\
>終了状態=&終了,&得意先コード
> 検索 &処理名_&得意先コード,文字比較方法=自動,部分一致検索=含む
> cond (#eof) 確認 "該当するデータはありません。"
> cond (#eof) &番号=50
> cond (#eof) ジャンプ 行マーク=2
> cond (&番号=50) 行マーク解除 2
> cond (&番号<>50) 絞り込み &処理名_&得意先コード,文字比較方法=自動,\
>部分一致検索=含む
>end

---------遅れてすみませんがやろうとしてる事は---------------------------
メインフォームの中にたくさんコマンドボタンがあって、その一つが得意先マスターです。
それをクリックしたら得意先マスターのフォームが表れ、名前で絞り込んだり追加や
訂正をしたいのです。
よろしくお願い致します。


11562 Re:一括処理中のフォーム利用について 今村 誠 2001/06/13-18:15
記事番号11558へのコメント
masaさんこんにちは、以下の手続き定義をイベントファイルに書くと
コマンドボタンで代入した項目名を検索後絞り込みします。
メイン部は変数宣言他をするところで、アスタリスク*の1行下からが
左クリックイベントやマウスインアウトや一般手続きを書くところです。

イベントファイルの作り方は過去ログの宮城さんのコメントに
http://www.fuku3.com/~habata/kbbs/kakov8/08835.htm

手続き定義開始 検索絞り込み()
 cond (.not #eof) 行マーク定義 2
キー入力 (10,1),プロンプト=&処理名,モード=&モード,上書き=する,\
終了状態=&終了,&得意先コード
検索 &処理名_&得意先コード,文字比較方法=自動,部分一致検索=含む
 cond (#eof) 確認 "該当するデータはありません。"
 cond (#eof) &番号=50
 cond (#eof) ジャンプ 行マーク=2
 cond (&番号=50) 行マーク解除 2
 cond (&番号<>50) 絞り込み &処理名_&得意先コード,文字比較方法=自動,\
部分一致検索=含む
手続き定義終了

作成した例は、拙作ではございますが、【多遊】さんのホームページの
簡易メニューと出勤簿というタイトルで出勤簿.kevに検索の記載例があります。
http://www8.freeweb.ne.jp/animal/mokuchan/download/dl-list.htm

ファイルは解凍しないと見られません。

イベントファイルは桐に作ってもらいましたか?
11571 「フォームに解析できない式が含まれています。」とは 佐田 守弘 2001/06/14-00:19
記事番号11550へのコメント
masaさん
「フォームに解析できない式が含まれています。」とは、
フォームを解析する時点で、フォーム中に書かれている計算式が評価不能である事を意味します。

まずフォームを評価するタイミングですが、
@定義したフォームを保存する時
A保存されているフォームを開いて表示する時です。
そして質問の件はこのうちのAの方ですね。

次に評価不能の原因ですが、
@式の記述が誤っているため評価できない
これは通常は起こり得ません。なぜならフォームを保存する時に式の誤りはチェックされているからです。
A式の中に使われている変数が定義されていない
通常、これが原因です。

さて、一括処理からフォームを開く場合、あるいはイベントを使う場合には、
一括処理やイベントの中でフォームで使う変数を定義する場合があります。
イベントの場合、フォームを開けばイベントが開かれて変数が定義されますから問題ありませんが、
一括でフォームを開く場合には、フォーム単独で開こうとすると変数が定義されていないので、
この種のエラーが起きます。

しかし質問の件は、これと逆なんですね。

途中で気がつかれた様に、一括で定義している変数名の記述と、フォームの中で使っている変数名(値ではありません。変数名です)
が全角と半角の違いがあれば、別の変数とみなされますから、変数が定義されていない事になり、このエラーになります。
この場合には、フォームを単体で開いても同じエラーになるはずです。

フォーム単体では開け、一括から開こうとするとエラーになるケースとして考え得るのは、
フォームだけで宣言できる局所変数を使っていて、この変数が一括の中で削除されている言しか考えにくいのですが。
なお、変数名で変数を指定する方法を使っていると、変数を指定する値がある変数の値いかんで、この種のエラーは発生し得ます。

いずれにしても一括だけではなく、フォームで使っている変数とを比較評価し、エラーが起きた時点で変数管理を開いて、
変数がどうなっているかを確認する必要があるかと思います。

佐田守弘(KS-00119)
11574 Re:一括処理中のフォーム利用について 今村 誠 2001/06/14-07:55
記事番号11552へのコメント
masaさんこんにちはもう一つミスを訂正します
>* -------- 手続き群--------
> 名札 得意先マスター処理
>※  表 "3000配達登録.tbl", モード = 参照,\ ここは専有がよいのでは
>   使用フォーム = "3001配達登録.wfm"
>   ウインドウ作成 "3001配達登録.wfm",位置 = ( 300, 150 ),\
> ハンドル = &得意先マスター     ここのハンドルと
>  フォーム形式編集 ,画面消去=する,更新=許可,許可作業=*,終了状態=&終了
>   ウインドウ終了 &表示フォーム      ここのハンドル
>手続き終了

引用した時同じフォームなのに最初は&得意先マスター
手続きの結果表示には&表示フォームでした。
またウインドウ終了のところには得意先マスター処理となっています
この辺がエラーメッセージの原因と思います。

ウインドウ終了 &表示フォーム

ウインドウ終了 &得意先マスター
にしてください。
11575 Re:一括処理中のフォーム利用について みつお 2001/06/14-08:45
記事番号11558へのコメント
みつお といいます

一括処理の止まる位置は 表 ”3000配達登録.TBL” がすでに開いているのに
閉じる処理のないまま、再度開く処理の命令が来てるせいだと思います
とにかく、少し読みづらい内容になってます、もっと簡潔に出来る筈ですが・・・・

>---------遅れてすみませんがやろうとしてる事は---------------------------
>メインフォームの中にたくさんコマンドボタンがあって、その一つが得意先マスターです。
>それをクリックしたら得意先マスターのフォームが表れ、名前で絞り込んだり追加や
>訂正をしたいのです。
>よろしくお願い致します。
>
だったら私そのやうな一括処理沢山書いたこと有ります
構わなければ
"メインメニュー.wfm", ”3000配達登録.TBL”"3001配達登録.wfm",
のフアィル添付して送って下さい、勿論TBLフアィルについてはダミーでも結構で
3,4行有れば良いです


★管理人さんへこのような、直接やりとりが違反だったら削除願います。

11583 Re:「フォームに解析できない式が含まれています。」とは masa 2001/06/14-13:21
記事番号11571へのコメント
佐田 守弘さん
回答ありがとうございます。

>A式の中に使われている変数が定義されていない
>通常、これが原因です。

との事で確かにフォーム単体では局所変数は設定してありません。
(一括処理中で止まった後、局所変数を見ても何もありませんでした)
単純に*.TBLのデータをテキストとしてフォームに表示させてる
状態です。(それで単独ではフォームは開けるのですかね?)
一括処理やその書き方をまだそんなに詳しく知らないので、V8に付いてきた
「サンプルの一括処理のお食事のRestrant.cmd」を利用して作ったので
どこかにおかしい所があるのだと思います。
みつおさんより、その実際のフォーム等を送って下さいと、あたたかい言葉を頂き、
お言葉に甘えて送らさせて頂きました。
自分でも回答をヒントにもっと使えるよう頑張ります。
その他の方々にも色々と回答を頂きほんとに感謝しております。
ありがとうございます。


11603 Re:一括処理中のフォーム利用について masa 2001/06/14-20:16
記事番号11554へのコメント
今村 誠さん
回答ありがとうございます。
試してみたのですが、メインフォームのボタンがクリック出来ない
(反転表示というのでしょうか?)状態になってしまいました。
「多遊」さんのHPからダウンロードした「出勤簿.wfm」も難しくて解りませんでした。
もう少し簡単な形式を探して試してみたいと思います。
ありがとうございます。


11605 Re:「フォームに解析できない式が含まれています。」とは みつお 2001/06/14-20:46
記事番号11583へのコメント
この件書き忘れたので追加
メインメニュー.WFMのフアイルを見比べて下さい13ヶ所くらい書き換えてます。

☆オブジェクトの属性の処で「オブジェクト名」と「標題」☆
11610 Re:ありがとうございます。感激しました。 masa 2001/06/14-21:13
記事番号11605へのコメント
みつおさん
頂いたファイルを拝見しました。すばらしくて感激しました。
まさにやろうとしている事が出来ていて、それ以上の追加もされていて
ほんとうにどうもありがとうございます。
どこに違いがあるのかをじっくり見させて頂きます。
ほんとうにどうもありがとうございました。

戻る