(現在 過去ログ27 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■4219 / inTopicNo.1)  動いていた一括処理に一行程追加したら動かなくなった。
  
□投稿者/ ステラ -(2009/01/09(Fri) 15:35:02)
    あけましておめでとうございます。
    新年早々、よろしくご教示いただきますようお願い申し上げます。(お年賀?)

    いままで動いていた手続き「住所コード更新」に、キー入力行程を入れました。
    それに伴い、今までの処理を二つに分け、各手続きを実行させるようにしましたが、動かなくなりました。

    動作確認のために、今までの分「住所コード更新」をそのままコピペして動かしてみましたが、同じところでエラーになるようです。
    どこがおかしいのか????

    どなたか、教えてください。


    *項目は一部削除してあります。

    ====動かなくなった手続き=====
    (ちなみに、エラーメッセージは”併合のところで表がありません”なる旨がでます。)

     変数宣言 固有 , 文字列 { &格納パス名 , &町名表更新日 }
      &格納パス名 =#連結( &システムパス名 , "住所コード管理\" ) 

    手続き定義開始 住所コード更新()
     変数宣言 自動, 整数{ &OK ,&終了}
     変数読み込み "町名表更新日",固有
     キー入力  プロンプト="町名コード改正年月日を入力してください。 ", モード=全角, 上書き=しない, 初期値=&マスター更新日, 終了状態=&終了,&マスター更新日
     if ( &終了=1 )
           変数書き出し "町名表更新日.var", 固有
          手続き定義実行 比較表作成()
          手続き定義実行 住所コード表整備()
       else
     end
    手続き定義終了


    手続き定義開始 比較表作成()
    変数宣言 自動, 整数{ &OK ,&終了}
      表 #連結( &格納パス名 , "比較表住所コード.tbl"), 終了状態=&OK 
      条件 ( &OK <>1 ) 確認 , ”比較表住所コード.tblは開けませんでした。”
      行削除 *
      表整理 余白割合=10
      読み込み条件登録 表,条件名="住所コード複写",#連結( &システムパス名 ,"住所コード.tbl"),ファイル名変更=しない,{[町名]・・・]},編集表=しない
      読み込み 表,条件名="住所コード複写"
      絞り込み [備考]{=#未定義},文字比較方法=自動
      置換条件登録 条件名="備考入力",確認=しない,[備考]=#連結( &町名表更新日, "更新実施分", &年月日, "削除")
      置換 条件名="備考入力"
      終了 表 
    手続き定義終了
     
    手続き定義開始 住所コード表整備()
         表 #連結( &システムパス名 , "住所コード.tbl"), 終了状態=&OK 
         条件 ( &OK <>1 ) 確認 , ”住所コード.tblは開けませんでした。”
          行削除 *
          表整理 余白割合=10
          読み込み条件登録 テキスト,条件名="町名コード表読込","D:\町名コード表一覧.txt",区切り="09",空白削除=両方,項目名=しない,ファイル名変更=しない,{[町名]・・・・}
          読み込み テキスト,条件名="町名コード表読込"
          条件 (.NOT #行集計状態 .AND .NOT #絞り込み状態 .AND #整列状態) 整列解除
          置換条件登録 条件名="空白除去",確認=しない,[校区]=#TRIM( [校区] , 4 )
          置換 条件名="空白除去"
          置換条件登録 条件名="住所コード整備",確認=しない,[町名コード]=#STR( #NUM( [町名コード] ) )
          置換 条件名="住所コード整備"
         併合条件登録 条件名="住所コード併合",#連結( &格納パス名 , "比較表住所コード.tbl"), 挿入,編集表=しない,{[町名コード]照合[町名コード]・・・}
         併合 条件名="住所コード併合"
         終了 表 
     メッセージボックス "保存" , "新しい50音順町名コード表を読み込み、\n 住所コード表を更新しました。" , 制御文字展開=する
    手続き定義終了



    ====今まで動いていた一括=====

     変数宣言 固有 , 文字列 { &格納パス名 }
     &格納パス名 =#連結( &システムパス名 , "住所コード管理\" ) 

    手続き定義開始 住所コード更新()
    変数宣言 自動, 整数{ &OK ,&終了}
      表 #連結( &格納パス名 , "比較表住所コード.tbl"), 終了状態=&OK 
      条件 ( &OK <>1 ) 確認 , ”比較表住所コード.tblは開けませんでした。”
      行削除 *
      表整理 余白割合=10
      読み込み条件登録 表,条件名="住所コード複写",#連結( &システムパス名 ,"住所コード.tbl"),ファイル名変更=しない,{[町名][町名],・・・},編集表=しない
      読み込み 表,条件名="住所コード複写"
      絞り込み [備考]{=#未定義},文字比較方法=自動
      置換条件登録 条件名="備考入力",確認=しない,[備考]=#連結(&年月日,"削除")
      置換 条件名="備考入力"
      終了 表 
         表 #連結( &システムパス名 , "住所コード.tbl"), 終了状態=&OK 
         条件 ( &OK <>1 ) 確認 , ”住所コード.tblは開けませんでした。”
          行削除 *
          表整理 余白割合=10
          読み込み条件登録 テキスト,条件名="町名コード表読込","D:\町名コード表一覧.txt",区切り="09",空白削除=両方,項目名=しない,ファイル名変更=しない,{[町名],・・・・[郵便番号]}
          読み込み テキスト,条件名="町名コード表読込"
          条件 (.NOT #行集計状態 .AND .NOT #絞り込み状態 .AND #整列状態) 整列解除
          置換条件登録 条件名="空白除去",確認=しない,[校区]=#TRIM( [校区] , 4 )
          置換 条件名="空白除去"
          置換条件登録 条件名="住所コード整備",確認=しない,[町名コード]=#STR( #NUM( [町名コード] ) )
          置換 条件名="住所コード整備"
         併合条件登録 条件名="住所コード併合",#連結( &格納パス名 , "比較表住所コード.tbl"), 挿入,編集表=しない,{[町名コード]照合[町名コード],・・・・
    }
         併合 条件名="住所コード併合"
         終了 表 
    メッセージボックス "保存" , "新しい50音順町名コード表を読み込み、\n 住所コード表を更新しました。" , 制御文字展開=する
    手続き定義終了

    ======
    実行させてみると、比較表住所コードの備考にキー入力が反映された置換されるところまでは完了しています。その後併合のところで、ファイルを探せなくなってしますようです。

    ちなみに、置換を行うために比較表住所コード.tblを開くところの行の、ファイル名の部分(表 #連結( &格納パス名 , "比較表住所コード.tbl"), 終了状態=&OK )の表の記述部分を、併合の表ファイル名のところにコピペして実行してみましたが、同じくエラーでした。






引用返信 [メール受信/OFF] 削除キー/
■4220 / inTopicNo.2)  Re[1]:[手続き定義実行]というコマンド?
□投稿者/ ONnoji -(2009/01/09(Fri) 17:00:13)
    重箱の隅のようなことを書きますが…

     手続き定義実行 比較表作成()
     手続き定義実行 住所コード表整備()

    [手続き定義実行]というコマンドはないのでは???

    手続き定義開始 住所コード更新()
     変数宣言 自動, 整数{ &OK ,&終了}
     変数読み込み "町名表更新日",固有
     キー入力  プロンプト="町名コード改正年月日を入力してください。 ", モード=全角, 上書き=しない, 初期値=&マスター更新日, 終了状態=&終了,&マスター更新日
    ┌if ( &終了=1 )
    │ 変数書き出し "町名表更新日.var", 固有
    │ 手続き定義実行 比較表作成()
    │ 手続き定義実行 住所コード表整備()
    ├else
    └end
    手続き定義終了
引用返信 [メール受信/OFF] 削除キー/
■4238 / inTopicNo.3)  Re[2]: :[手続き定義実行]というコマンド?
□投稿者/ ステラ -(2009/01/13(Tue) 10:14:55)
    ONnojiさん
    返信遅くなってすみません。

    ごめんなさい。
    「手続き定義実行」については、このコピーを作って紙に印刷した時に気づいて
    「手続き実行」に変更して実行してみました。コピーをそのまま使ってしまったので、変更前のまま載ってしまいました。

    その後、前(手続き定義 比較表作成、と住所コード整備に分ける前)の手続き分をそのまま入れ込んで実行してみることにして試してみて、やはり動かなかったのです。

    よろしくお願いします。


引用返信 [メール受信/OFF] 削除キー/
■4239 / inTopicNo.4)  Re[1]: 動いていた一括処理に一行程追加したら動かなくなった。
□投稿者/ 通りすがり -(2009/01/13(Tue) 10:25:37)
    併合 で表名をフルパスで指定しても動かないかい?
引用返信 [メール受信/OFF] 削除キー/
■4240 / inTopicNo.5)  どうしたら??
□投稿者/ ステラ -(2009/01/13(Tue) 11:17:30)
    No4239に返信(通りすがりさんの記事)
    > 併合 で表名をフルパスで指定しても動かないかい?

    動きました・・・。

    パス名の設定がおかしいのでしょうか?

    でも、前の記述の時にはそのまま動きましたし、戻すとまた動きます。

    パス名はこの先フォルダが変わったりした場合のために変数設定してあり、振るパスでの記載は避けたいのです。

    パス管理は以下のようになっていて、
    住所管理はごく稀にしか行われないため、住所管理関係のフォルダは一番下です。

    ====
    フォルダA         ←データ書き出しフォルダ(&書き出しパス名)
    /システム格納フォルダB  ←住所コード.tbl その他基本ファイルフォルダ
                               (&システムパス名)
    /住所管理フォルダC    ←比較表.tbl (&格納フォルダ)

    ここで、&書き出しパス名 を変更すると、この構造が保たれる場合、&システムパス名と&格納パス名 も変わるようにしてあるため、前記「#連結( &格納パス名 , "比較表住所コード.tbl")」のようにファイル名を設定してあります。   

引用返信 [メール受信/OFF] 削除キー/
■4241 / inTopicNo.6)  Re[3]: どうしたら??
□投稿者/ 通りすがり -(2009/01/13(Tue) 13:45:34)
    だから〜ん

    止まる時点で、、
    #連結( &格納パス名 , "比較表住所コード.tbl") の中身テキストと、
    フルパス指定のテキストとは、
    全く同じなの?

    止まる時点での、#連結( &格納パス名 , "比較表住所コード.tbl") の値は調べてみたかい?
引用返信 [メール受信/OFF] 削除キー/
■4242 / inTopicNo.7)  Re[3]: 諭より証拠
□投稿者/ ONnoji -(2009/01/13(Tue) 15:19:35)
    > パス名の設定がおかしいのでしょうか?
    > でも、前の記述の時にはそのまま動きましたし、戻すとまた動きます。
    > パス名はこの先フォルダが変わったりした場合のために変数設定してあり、振るパスでの記載は避けたいのです。
    > ここで、&書き出しパス名 を変更すると、この構造が保たれる場合、&システムパス名と&格納パス名 も変わるようにしてあるため、前記「#連結( &格納パス名 , "比較表住所コード.tbl")」のようにファイル名を設定してあります。   

    ある時は動き、またある時には止まる、という状況ならば、
    [トレース出力]コマンドを適当に挿入して、変数の値を[トレース出力]ウィンドウで確認されたらいかがでしょうか???

    諭より証拠。理屈よりも、実際の状態を確かめる方が現実的ですよ。

    例えば…、

    トレース出力 _&システムパス名
    トレース出力 _&格納パス名
    トレース出力 _&書き出しパス名

    [トレース出力]ウィンドウに関しては
    拙作HPの§9 デバッグをご参考にしてください。
    http://www.geocities.jp/siliconvalley_bay_7565/guide09.htm

引用返信 [メール受信/OFF] 削除キー/
■4243 / inTopicNo.8)  Re[4]: 諭より証拠
□投稿者/ ステラ -(2009/01/13(Tue) 17:20:57)
    2009/01/13(Tue) 17:27:00 編集(投稿者)
    2009/01/13(Tue) 17:24:40 編集(投稿者)

    ONnoji さん
    早速やってみます。
    つまり、変数がうまく反映されていない可能性をまず探ってみるということですね。

    トレース出力ははじめてです。
    トレース出力ウインドを表示するように環境設定をしておいて、

    一括の記述の節目節目に

    トレース出力 _&システムパス名
    トレース出力 _&格納パス名
    トレース出力 _&書き出しパス名

    を記述して、そのつど状況を確認してみればいいということですね。
引用返信 [メール受信/OFF] 削除キー/
■4244 / inTopicNo.9)  Re[4]: どうしたら??
□投稿者/ ステラ -(2009/01/13(Tue) 17:57:18)
    No4241に返信(通りすがりさんの記事)
    > だから〜ん
    >
    > 止まる時点で、、
    > #連結( &格納パス名 , "比較表住所コード.tbl") の中身テキストと、
    > フルパス指定のテキストとは、
    > 全く同じなの?
    >
    > 止まる時点での、#連結( &格納パス名 , "比較表住所コード.tbl") の値は調べてみたかい?

    一応、止まった時点で変数が入っていることを確認してあったつもりだったのですが、今、確認すると、&格納パス名が空白でうまく拾えていないことが分りました。

    手続き実行 比較住所作成では、うまく表を開いて、キー入力を反映した置換がなされて作成されるので、その後、&格納パス名が消えてしまうようです。

    ONnojiさんのおしゃるように、トレース出力して確認してみます。



引用返信 [メール受信/OFF] 削除キー/
■4245 / inTopicNo.10)  Re[5]: 諭より証拠
□投稿者/ うにん -(2009/01/13(Tue) 20:33:22)
    > を記述して、そのつど状況を確認してみればいいということですね。

    変数を使ってるコマンドがおかしいのだから変数値の確認で解決するでしょうけど、動く方のをみても「&システムパス名」が設定されてない。
    他にも字下げが変+条件文が確認だけでその後分岐してないことからみて色々省略されてるようです。
    もうちょっと整理するか、どうせ長々のせるなら省略しないで全部書かないと分析できません。

    余談ですが、#連結は+で間に合うので使ったことありません。

引用返信 [メール受信/OFF] 削除キー/
■4247 / inTopicNo.11)  更に訳がわからなくなりました。
□投稿者/ ステラ -(2009/01/14(Wed) 01:13:18)
    ONnojiさん

    > 諭より証拠。理屈よりも、実際の状態を確かめる方が現実的ですよ。

    ありがとうございます。
    早速やってみましたが、更にわけがわからなくなりました。

    確認のためにフォーム開始イベントも入れて、各手続き実行のところ*に3つの変数のトレース出力をいれて実行してみました。
    ===
    手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
     *1
    手続き定義終了


    手続き定義開始 住所コード更新()
     変数宣言 自動, 整数{ &OK ,&終了}
     変数読み込み "町名表更新日",固有
     キー入力  プロンプト="更新年月日を入力してください。 ", モード=全角, 上書き=しない, 初期値=&町名表更新日, 終了状態=&終了,&町名表更新日
     if ( &終了=1 )
           変数書き出し "町名表更新日.var", 固有
    *2
          手続き実行 比較表作成()
    *3
          手続き実行 住所コード表整備()
    *4
       else
     end
    手続き定義終了

    ===
    変数のトレース結果は、
    *1はすべてOKでしたが、
    *2ではすでに&格納パス名のみ空白、しかし、手続き比較表作成で、表#連結( &格納パス名 , "比較表住所コード.tbl")は無事開かれ諸手続きがなされて実行終了。
    *3でも&格納パス名のみ空白、手続き住所コード表整備では当然、表#連結( &システムパス名 , "住所コード.tbl")は開かれ、諸手続きがなされて(ファイルを確認)、やはり併合のところで、表#連結( &格納パス名 , "比較表住所コード.tbl")ファイルが見つからないとエラーで止まりました。

    なぜ、&格納パス名が空白になってしまうのか、
       *2では、空白にもかかわらず表が開くのに、*3以降では開かないのか?
       (というか、なぜ、*2では開くことができるのか???)
    全くわけがわからなくなってしまったのです。

    うにんさんのところでも答えますが、このイベント内の省略は注釈等を削除したのと、項目を割愛させてもらっただけで、記述の頭がそろっていないのは、私のいい加減な性格のためです。(最後にはそれなりにそろえるつもりではありますが・)

    やはり、関連ファイルをアップしないととても抜粋では無理でしょうか。
引用返信 [メール受信/OFF] 削除キー/
■4248 / inTopicNo.12)  分かりにくくてごめんなさい
□投稿者/ ステラ -(2009/01/14(Wed) 01:25:32)
    うにんさん、ごめんなさい

    > もうちょっと整理するか、どうせ長々のせるなら省略しないで全部書かないと分析できません。

    確かに少し省略しています。元のシステムに住所コードを使うため、そのメンテナンス部分だけを抜き出して質問しました。
    ただ、住所コード更新.kev は注釈等を削除したのみで、このままで省略はありません。
    (条件も、キー入力時に直前更新日を初期値で呼び出し、処理が済んでいたらそのままEscしてもらえばいいかと思ったので、確認だけにしました。実際同じ更新分をで処理しても、影響ないのですが。)

    &システムパス名と、&書き出しパス名 は、システム開始のフォームイベントで共通変数として定義してあります。
    そのフォームからボタンで住所コード管理フォームを開き、今回相談させていただいた住所コード更新.kevになります。

    知識が拙いため、どのように要点を抜き出していいのか分からなかったのと、
    諸事情によりすべてをアップすることができないため申し訳ありません。



    > 余談ですが、#連結は+で間に合うので使ったことありません。

    コンピューターそのものを使いながら覚えている途中で、基礎知識なしに#連結からはいりました。
    +ですむなんて・・・!
    今後、さっそく使わせていただきます。
    ちなみに、
    表 ( &格納パス名+ "比較表住所コード.tbl")
    でいいのですか。( )は要らないのでしょうか。

引用返信 [メール受信/OFF] 削除キー/
■4249 / inTopicNo.13)  Re[5]: 更に訳がわからなくなりました。
□投稿者/ homepiyo -(2009/01/14(Wed) 08:31:16)
    2009/01/14(Wed) 08:38:03 編集(投稿者)
    2009/01/14(Wed) 08:33:27 編集(投稿者)

    No4247に返信(ステラさんの記事)
    ステラさん、こんにちは。

    たぶん
     変数読み込み "町名表更新日",固有

    のところで&格納パス名が未定義になっているように思います。
    (1)変数読み込みを&格納パス名の設定の前に移動するか
    または、(2)&格納パス名を共通変数にするとよいのでは?

    なぜ、*2では開くことができるのか?
    *2では処理中のパスが&格納パス名なので開く。
    *3では処理中のパスが&システムパス名なので併合できない。
    と推測しています。間違っていたらすいません。


引用返信 [メール受信/OFF] 削除キー/
■4250 / inTopicNo.14)  Re[5]: 更に訳がわからなくなりました。
□投稿者/ 通りすがり -(2009/01/14(Wed) 08:49:26)
    まず、落ち着け
    変数にターゲット絞れてるんだから、ツール → 変数管理 で見てみればOK
    デバッグ → 一行単位で実行、手続き単位で実行、ブレークポイント設定 とかあるから
引用返信 [メール受信/OFF] 削除キー/
■4251 / inTopicNo.15)  Re[7]: 分かりにくくてごめんなさい
□投稿者/ ONnoji -(2009/01/14(Wed) 09:56:32)
    以下の3点をチェックしたらいかがでしょうか???

    1.[変数読み込み]コマンドを実行している行が有るか否か?

    2.同じ変数名を複数回[変数宣言]しているか否か?

    3.スコープが異なる同名の変数を使用しているか否か?

    p.s.

    [変数読み込み]コマンドを使っているみたいですね。
    これがいちばん怪しいでしょうね…。

引用返信 [メール受信/OFF] 削除キー/
■4252 / inTopicNo.16)  ありがとうございました
□投稿者/ ステラ -(2009/01/14(Wed) 13:20:56)
    みなさん、ありがとうございました。

    変数ファイルを確認したら、&格納パス名が空白に・・・m(-_-)m

    思い込みだけでなく、トレースを使ってくまなく確認するということを学びました。

    &格納パス名は今後のメンテナンスで変更する場合があるので、変数読み込みしないよう局所変数に変えました。

    とりあえず動くようになりましたが、

    表 #連結(&格納パス名,"比較表住所コード")が、トレース確認*2で&格納パス名が空白のまま、その後の手続きで開けた理由が分りません。
    (*3で&格納パス名空白で、後の手続き内の併合でこの表が開かなかったのは理解できるのですが・・・

    結果オーライですかねぇ。
    解決チェックしますが、もし、付足で教えていただけるものならよろしくお願いします。

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■4253 / inTopicNo.17)  Re[7]: 現在のデータパス
□投稿者/ ONnoji -(2009/01/14(Wed) 15:15:48)
    > 表 #連結(&格納パス名,"比較表住所コード")が、トレース確認*2で&格納パス名が空白のまま、その後の手続きで開けた理由が分りません。
    > (*3で&格納パス名空白で、後の手続き内の併合でこの表が開かなかったのは理解できるのですが・・・

    絶対パスが無い場合、暗黙のうちにデフォルトのパスが使われると思いますよ。

    現在のデータパスを調べるには、関数:#データパス名 を使いますよ。
引用返信 [メール受信/OFF] 削除キー/
■4254 / inTopicNo.18)  Re[6]: 説明がよくなかったです。
□投稿者/ homepiyo -(2009/01/14(Wed) 20:11:15)
    2009/01/14(Wed) 20:15:48 編集(投稿者)


    > なぜ、*2では開くことができるのか?
    > *2では処理中のパスが&格納パス名なので開く。
    > *3では処理中のパスが&システムパス名なので併合できない。
    > と推測しています。間違っていたらすいません。
    >
    説明がよくなかったです。内容は以下のことを言おうとしていました。

    *2では処理中のパスが &システムパス名+"住所コード管理\"なので&格納パス名が未定義であっても"比較表住所コード.tbl"で開く。

    *3では &システムパス名+"住所コード.tbl"を開く。併合では&格納パス名は未定義なので"比較表住所コード.tbl"を処理中のパス(&システムパス名)で探すことになる。&システムパス名に"比較表住所コード.tbl"はみつからずエラーになる。




引用返信 [メール受信/OFF] 削除キー/
■4255 / inTopicNo.19)  Re[8]: 現在のデータパス
□投稿者/ うにん -(2009/01/14(Wed) 22:15:26)

    > 絶対パスが無い場合、暗黙のうちにデフォルトのパスが使われると思いますよ。
    >
    > 現在のデータパスを調べるには、関数:#データパス名 を使いますよ。

    そんで、階層構造は固定でトップのディレクトリだけ移動になるなら、そこを
    データパス名 &トップ,固定=する
    とかやると、中のディレクトリは変数使わないで定数にできたりします。

引用返信 [メール受信/OFF] 削除キー/
■4256 / inTopicNo.20)  Re[7]: 説明がよくなかったです。
□投稿者/ ステラ -(2009/01/15(Thu) 10:02:35)
    No4254に返信(homepiyoさんの記事)
    > 2009/01/14(Wed) 20:15:48 編集(投稿者)
    >

    > *2では処理中のパスが &システムパス名+"住所コード管理\"なので&格納パス名が未定義であっても"比較表住所コード.tbl"で開く。
    >
    > *3では &システムパス名+"住所コード.tbl"を開く。併合では&格納パス名は未定義なので"比較表住所コード.tbl"を処理中のパス(&システムパス名)で探すことになる。&システムパス名に"比較表住所コード.tbl"はみつからずエラーになる。
    >

    なるほど、すごくよく分りました。
    ありがとうございました。

引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -