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

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

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

■2925 / inTopicNo.1)  伝票形式フォームのイベント処理で行を追加する方法
  
□投稿者/ Oiller -(2007/09/17(Mon) 21:42:52)
    はじめまして、Oillerです。

    ずっと、桐5を使っていたのですが最近どうしても桐9に切り替えなくてはならなくなり、使い始めたのですが一括処理、イベント処理等どうも勝手が違いプログラム作成がはかどりません。
    諸先輩方にお教えを請いたいと思います。よろしくお願いします。

    環境はWindowsXP+桐ver9-2007(桐9-2004 sp4)です。
    やりたいことは伝票形式フォームを作成し、伝票を作成することです。
    このなかでひとつ桐5で実現していた機能を作成したいのですがこれがうまく
    いきません。

     その機能とは明細行の先頭にコード欄を設け、あるコードを入力すると別の表からコードに該当する複数明細行を引いてきて、セットで追加するものです。
    つまり、セット商品の内容を一行でまとめて表示するのではなく、複数行に個別の商品ごとにしかも一回のコード入力で追加登録したいのです。

     上記機能を実現するなにかうまい方法はありませんでしょうか?

    現在トライしている方法は[明細CODE]の入力後イベントに次の様なコードを書いています。変数はメイン部で定義していますが、ここでは省略しています。
    商品台帳もメイン部で開いています。
    各データリストはカンマ区切りで商品名や価格や数量を並べた文字列です。

    現在このコードだと「KU1068:対象表が更新中またはグループ操作中のためこのコマンドは使用できません 」というエラーメッセジがでて行が追加できません。
    マニュアルを見るとグループ選択状態だと、表整理、行挿入、行移動、行複写 ができないとあります。このあたりがポイントだと踏んでいるのですが、先が見えません。

    手続き定義開始 明細CODE::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
    &fi明細表=#IS表
    &fi売上番号=[売上番号]
    &fiコード=#NUM(&編集文字列)
    編集表 &fi商品台帳
    検索 ↓,[明細CODE]{&fiコード}, 終了状態=&実行リターン
    ケース開始
      ケース(#EOF)
      ケース (90180000<&fiコード .AND &fiコード<90529999)
        &sTITLE=[明細名]
        &sMENULIST=[MENULIST]
        &s明細LIST=[明細LIST]+",END$$$$$"
        &s数量LIST=[数量LIST]
        &s単価LIST=[単価LIST]
        編集表 &fi明細表
        &I=#対応番号(&s明細LIST,"END$$$$$")-1
        繰り返し &J=1,&I,1
          条件 (&sTITLE<>"") 行追加 [売上番号]=&fi売上番号,\
          [明細CODE]=&fiコード,\
          [明細名]=&sTITLE,\
          [明細]=#対応文字列(&s明細LIST,&J),\
          [数量]=#VAL(#対応文字列(&s数量LIST,&J)),\
          [単価]=#VAL(#対応文字列(&s単価LIST,&J))
        繰り返し終了
      ケース その他
        &sTITLE=[明細名]
        &sMENULIST=[MENULIST]
        &s明細LIST=[明細LIST]
        &s数量LIST=[数量LIST]
        &s単価LIST=[単価LIST]
        編集表 &fi明細表
        行訂正 [明細CODE]=&fiコード,\
          [明細名]=&sTITLE,\
          [明細]=&s明細LIST,\
          [数量]=#VAL(&s数量LIST),\
          [単価]=#VAL(&s単価LIST)
    ケース終了
    手続き定義終了

引用返信 [メール受信/OFF] 削除キー/
■2926 / inTopicNo.2)  Re[1]: 伝票形式フォームのイベント処理で行を追加する方法
□投稿者/ 今村 誠 -(2007/09/17(Mon) 22:29:16)
    Oillerさんこんにちは
    入力後イベントではしたいことは実現できないと思います。
    ソース値更新イベントを使うといいと思います。
    値が見つかったら1レコードだけの訂正なのか、数行を追加するかで
    処理が変わります。
    1行だけの場合行訂正でなく項目値代入コマンドがいいと思います。
    数行を追加する場合まず表示モードにする必要があります。
      var Long{&判定,&Count},Str{&並び順,&tmpobj,&focus},数値{&行位置,&枝番}
      method @フォーム.更新モード取得(&判定) /* フォームを更新から表示に変更*/
      cond(&判定<>0) method @フォーム.更新モード設定( 0 )
      method @フォーム.描画禁止( 1 )
    表示モードにするには上記のようなメソッドと、ボタンを押すことでも
    確実に表示モードに切り替えできます。

    イベントの発生順はリンクのONnojiさんのページに説明があります。
引用返信 [メール受信/OFF] 削除キー/
■2930 / inTopicNo.3)  Re[2]: 伝票形式フォームのイベント処理で行を追加する方法
□投稿者/ Oiller -(2007/09/18(Tue) 08:29:39)
    2007/09/18(Tue) 08:58:23 編集(投稿者)

    今村 誠さんおはようございます。

    早速のレスを頂きありがとうございます。
    お教えの通り
    入力後イベントではなくソース値更新イベントを使う
    1行のみの訂正は
    項目値代入コマンドに変更
    追加の場合は
    1行めを項目値代入コマンド
    2行め以降を行挿入コマンドを使うようにした上で
    挿入の前に
          条件(&J=2)メソッド呼び出し @フォーム.描画禁止( 1 )
          条件(&J=2)メソッド呼び出し @フォーム.明細番号取得( &明細番号 )
          条件(&J=2)メソッド呼び出し  ハンドル = &fi明細表,戻り値 =&実行リターン,@フォーム.更新モード設定( 0 )
    挿入の終わりに
        条件(&J>2)メソッド呼び出し ハンドル = &fi明細表,戻り値 =&実行リターン,@フォーム.更新モード設定( 8 )
        条件(&J>2)メソッド呼び出し @フォーム.明細番号設定( &明細番号 )
        条件(&J>2)メソッド呼び出し @フォーム.描画禁止( 0 )
    を追加することで行追加ができるようになりました。

    期待どおりの回答がいただけました。感謝です。

解決済み!
引用返信 [メール受信/OFF] 削除キー/



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

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

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

- Child Tree -
- Antispam Version -