過去の桐井戸端BBS (桐ver.9) |
23583 | 一括処理で別のフォルダのレポートファイルを印刷した後もとのフォルダのフォームが見つからないというエラーになる | 鳴瀬 | 2003/11/29-19:11 |
フォルダAの下にフォルダBがあります。 フォルダAにある一括処理cmdから、 結合 "B\なんとか.viw" レポート印刷 "B\とある.rpt" は実行できるのですが、レポート印刷後、一括に戻った時点で フォルダAにあるフォームが開けない、「見つかりません」というエラーが返ってきます。 エラーメッセージを見ると、どうもフォルダBの中にあるとして フォームを探しているようです。 (フォームのフルパスとして"C:\A\B\開けないフォーム.frm"としてBが付加されているので) どうして、このようになるのですか?(桐の仕様でしょうか?) カレントディレクトリが変更されるのは、上の結合のせいでしょうか? 問題を解決にするにはどうすれば可能ですか? (カレントをフォルダAに強制的に戻す方法は。) よろしく、お願いします。 | |||
23584 | Re:カレントディレクトリの移動 | 宮城 | 2003/11/29-20:33 |
記事番号23583へのコメント 鳴瀬さん、こんにちは。 相対パスを指定できないのは桐の仕様です。「データパス」というものがありまして、 「一番手前に開いている表の・・・(略)・・・パスになります。」(リファランスより。) もっとも多く使うファイルのフォルダを「データパス」で宣言し、 それ以外のフォルダのファイルは絶対パスで記述するか、こまめにデータパスを 宣言しなおすかのいずれかでしょうね。 # フルパス記述の気持ちだけの手抜き法。フルパスファイル名を丸ごと # 「&なんとか表」と変数宣言し代入してしまいます。 | |||
23585 | Re:カレントディレクトリの移動 | うにん | 2003/11/29-20:36 |
記事番号23583へのコメント 「データパス名」コマンドを使います。 | |||
23586 | Re:カレントディレクトリの移動 | 宮城 | 2003/11/30-00:44 |
記事番号23584へのコメント やりずぎました。うにんさんのお書きになってるように一括処理冒頭に 「データパス名 "C:\A\",固定=する」と記述するだけで十分ですね。 | |||
23587 | Re:カレントディレクトリの移動 | 鳴瀬 | 2003/11/30-08:08 |
記事番号23585へのコメント 宮城さん、うにんさん、ありがとうございました。 >「一番手前に開いている表の・・・(略)・・・パスになります。」 あっ、 そ、そーなんですか。 今までなんとなく動いていたので全然気にしていませんでした。 レポート印刷終了後、結合を破棄終了する 「終了 表,編集対象表」 を追加したら解決しました。 >「データパス名 "C:\A\",固定=する」 これを使用する機会を経験したことがないのですが、 作成中の一括では "C:\A" は不定です。 つまり、一括が存在するフォルダの下にある"B"というフォルダ内を 参照しながら作業することを想定しています。 ("B"は固定したフォルダ名です。) データパス名コマンドを利用(応用?)して、これに対処する工夫はありますか? とりあえず懸案が解決したのでこれは無視してもかまいません。 | |||
23588 | Re:カレントディレクトリの移動 | KH | 2003/11/30-09:10 |
記事番号23587へのコメント 鳴瀬さん、おはようございます、途中割り込み失礼します。 >作成中の一括では "C:\A" は不定です。 >つまり、一括が存在するフォルダの下にある"B"というフォルダ内を >参照しながら作業することを想定しています。 >("B"は固定したフォルダ名です。) >データパス名コマンドを利用(応用?)して、これに対処する工夫は >ありますか? >とりあえず懸案が解決したのでこれは無視してもかまいません。 今作成中でC:\A\に一括があり、その下のc:\a\b\の中に表データや レポート・フォームがあるという事で、完成すれば、新しい○△フォルダに写し、 c:\○△フォルダ¥ ←一括のあるフォルダ c:\○△フォルダ¥B\ ←表データ等のあるファイル という状態で処理をするということですね。 関数に#一括パス名、#データパス名で、一括処理のパス名とデータパス名を取得するものがありますから、 この内の#一括パス名を使用して、 変数宣言 固有,文字列{&datapass} &datapass=#連結("c:\",#一括パス名,"B\") データパス名 &datapass とすれば、よいと思います。 以降はデータある c:\○△フォルダ¥B\ のパスは&datapass+ファイル名で指定できますが、 こんなことではないでしたでしょうか。 |