過去の桐井戸端BBS (桐ver.9)
26920 ファイルを多重化して使用すると「ファイルが他のプログラムで使われています」というエラーが出る しぼうかん 2004/07/01-17:18
また、お教え下さい。

[社名]と[住所]を持つ受注.tblを対象表とする受注.wfmに同じく受注.tblを
対象表とする受注多重化.wfmをサブフォームとして貼り付けてあります。

受注多重化.wfm用の受注多重化.kevのフォーム開始イベントで
&表番号を&受注多重化に代入しています。

そして受注.wfmの[社名]が入力済みの受注.wfmに存在すればそこから[住所]データを探して取得し、
なければ過去受注.tblからデータを探して所得したいと思っています。

その方法として受注.wfmの項目[住所]の入力前イベントにフォーム呼び出しコマンドを書き
住所表引き.wfmを開いて住所データを選べるようにしようと考えました。

住所表引き.wfm(編集表=無し)用の住所表引き.kevのメイン部に
(3)の様なコマンドを書いたのですが

>オブジェクト操作 @フォーム.編集対象表=&受注多重化

どうもここの部分で
"ファイルが他のプログラムで使われています"
というとエラーが出ます。
これを回避して目的を達成する方法を教えて下さい。


(1)受注.kev

手続き定義開始 住所::入力前(参照 文字列・・・
&社名=[社名],&連番=[連番]
編集表 &受注多重化
検索 [社名]{[]=&社名,[連番]><&連番},終了状態=&ok
if(&ok=1)
&住所表引き表=1
else if(&ok><1)
&住所表引き表=2
end
フォーム呼び出し "住所表引き",許可作業=*,編集表=しない
手続き定義終了


(2)受注多重化.kev

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
&受注多重化=&表番号
手続き定義終了


(3)受注表引き.kev

名札 メイン

if(&住所表引き表=1)
オブジェクト操作 @フォーム.編集対象表=&受注多重化
else if(&住所表引き表=2)
オブジェクト操作 @フォーム.編集対象表=&過去受注
end

26925 Re:「ファイルが他のプログラムで使われています」エラーの回避について うにん 2004/07/01-19:46
記事番号26920へのコメント

>データを探して取得し、なければ過去受注.tblからデータを探して所得
>したいと思っています。

「所得」は名詞で収入のことです。動詞なのは「しゅとくする」取得です。
(お疲れモードにつきこれだけ^^;)

26929 Re:「ファイルが他のプログラムで使われています」エラーの回避について 佐田 守弘 2004/07/01-21:37
記事番号26920へのコメント
しぼうかんさん
サブフォームの対象表をメインフォームと同じ表としている様ですが、
この受注.tblは、何か別の表を表引きなどで開く設定はしてありませんか?
もし表引きを設定しているとすると、メインフォームから受注.tblが表引き
表を開いた後、サブフォームからは多重化で開かれた受注.tblを開くことになります。
多分これがエラーの原因ではないかと思います。

●対策1
表引き表を共有で開く設定にしてみて下さい。

●対策2
メインフォームとサブフォームが同じ表を編集表としている場合、
多重化しなくても大丈夫ではなかったでしょうか。

佐田守弘(KS-00119)
26932 管理人さんにお願い前コメントは削除して下さい 今村 誠 2004/07/02-09:23
記事番号26920へのコメント
しぼうかんさんこんにちは、動作未確認ですが
1)受注.kev
手続き定義開始 住所::入力前(参照 文字列・・・
 &社名=[社名],&連番=[連番]
 編集表 &受注多重化
 検索 [社名]{[]=&社名,[連番]><&連番},終了状態=&ok
  if(&ok=1)
   (※多重化を許可しておいて下さい。)
   フォーム呼び出し "住所表引き1",許可作業=*,編集表=しない
   ("受注.tbl"を編集表に指定しておく)

  else if(&ok><1)
   フォーム呼び出し "住所表引き2",許可作業=*,編集表=しない
   ("&過去受注"を編集表に指定しておく)
  end
手続き定義終了
26934 Re:「ファイルが他のプログラムで使われています」エラーの回避について 尾形 2004/07/02-09:49
記事番号26920へのコメント
>オブジェクト操作 @フォーム.編集対象表=&過去受注
これって表番号での指定は通るのかなぁ?
通らなかったような気がします


26938 Re:「ファイルが他のプログラムで使われています」エラーの回避について しぼうかん 2004/07/02-11:12
記事番号26920へのコメント
>うにんさん
早速佐田さんへの説明文で訂正しました。(^^;)

>佐田さん

返答有難うございます。

>●対策1
共有にしてみましたがやはり同じエラーがでます。

>●対策2

すいません、文意がわからなかったので代わりに受注多重化.wfmの説明をしてみます。

受注多重化.wfmは受注.wfmの特定の項目について最大値を求めて
"取得"したり、検索したりする作業用のようなフォームで非表示で
サブフォームとして貼り付けてあります。


>今村さん

なるほどオブジェクト操作コマンドをつかって編集表を切り替える替わりにフォーム自体を切り替える方法ですね。

まったく同じ形のフォームなので編集表を切り替えた方が自然だと思ったのですが、
エラーが出てうまくいっていない現状よりはこの方法でやった方がずっと良いので
編集表を切り替える方法が見つかるまでは、この方法でやる事にします。

回答ありがとうございました。


>尾形さん

返答有難うございます。
オブジェクト操作で表番号での指定がとおらないんですか?
エラーの原因がわかれば問題解決の助けになります。
他の書き方を考えてみます。

26947 Re:「ファイルが他のプログラムで使われています」エラーの回避について うにん 2004/07/02-13:16
記事番号26938へのコメント
>オブジェクト操作で表番号での指定がとおらないんですか?

ここは「オブジェクトの属性値」なので、フォーム定義時と同じ形式でないとだめでしょうね。
編集対象表の場合は、フォームを開いたときに開きにいくものですから、
表番号で指定するケースはありえません。
すでに開いている表を指定するなら
#表ファイル名(&表番号)
でできるかな?

26948 解決しました。 しぼうかん 2004/07/02-13:46
記事番号26947へのコメント
うにんさん、あ〜りがとうございました。
うまく行きました。(^^)

>#表ファイル名(&表番号)

コマンドの使い方が一つ勉強になりました!

戻る