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

ツリー一括表示

Nomal 連番の自動付与 /tonta (22/09/01(Thu) 10:26) #13544
Nomal Re[1]: 連番の自動付与 /ななーし (22/09/01(Thu) 10:49) #13545
│└Nomal Re[2]: 連番の自動付与 /tonta (22/09/01(Thu) 11:40) #13547
│  └Nomal Re[3]: 連番の自動付与 /ななーし (22/09/01(Thu) 11:53) #13548
Nomal Re[1]: 連番の自動付与 /ONnoji (22/09/01(Thu) 11:39) #13546
│└Nomal Re[2]: 連番の自動付与 /ONnoji (22/09/01(Thu) 15:32) #13550
Nomal Re[1]: 連番の自動付与 /tonta (22/09/01(Thu) 17:18) #13551 解決済み!
│└Nomal Re[2]: 連番の自動付与 /ONnoji (22/09/01(Thu) 18:09) #13552
│  └Nomal Re[3]: 連番の自動付与 /tonta (22/09/03(Sat) 08:51) #13554 解決済み!
│    └Nomal Re[4]: 連番の自動付与 /ONnoji (22/09/03(Sat) 10:36) #13555
Nomal Re[1]: 連番の自動付与 /natsu (22/09/03(Sat) 13:45) #13556
  └Nomal Re[2]: 連番の自動付与 /tonta (22/09/05(Mon) 10:25) #13557 解決済み!


親記事 / ▼[ 13545 ] ▼[ 13546 ] ▼[ 13551 ] ▼[ 13556 ]
■13544 / 親階層)  連番の自動付与
□投稿者/ tonta -(2022/09/01(Thu) 10:26:39)
    2022/09/01(Thu) 10:29:35 編集(投稿者)

    [A] [NO]
    a   1
    a   2
    b   1
    a   3
    c   1
    b   2

    [A]を並び替えれば[NO]に項目名毎に連番を付与(下記)できますが、並び替えないで上記のように項目名毎に連番を付与出来ますか。

    #条件選択(#直前値([A],"")<>[A],1,1,#直前値([NO],0)+1)
[ □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13544 ] / ▼[ 13547 ]
■13545 / 1階層)  Re[1]: 連番の自動付与
□投稿者/ ななーし -(2022/09/01(Thu) 10:49:20)
    本質問はフォームアプリケーションでしょうか?それともテーブルでの会話処理の編集についての質問でしょうか?
    また、OSと桐のバージョンを書いて頂けると助かります。9sと10sでも結構違うので・・・(主に書き方が)

    基本は最大値を参照して登録になるでしょうが、a,b,cごとに最大値を拾って連番にしたいってことでしょうか?
[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13545 ] / ▼[ 13548 ]
■13547 / 2階層)  Re[2]: 連番の自動付与
□投稿者/ tonta -(2022/09/01(Thu) 11:40:10)
    No13545に返信(ななーしさんの記事)
    質問は「表」になります。
    OSwindows10 桐のバージョンは10s
    a,b,c・・・ごとに最大値を拾って連番です。

    よろしくお願いいたします。
[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13547 ] / 返信無し
■13548 / 3階層)  Re[3]: 連番の自動付与
□投稿者/ ななーし -(2022/09/01(Thu) 11:53:35)
    ONnojiさんと同じく表の初期値式でやるには#直前値を使うくらいしか考えれないから無理じゃないですかね・・・おとなしく並び替えして利用した方がよいと思います。
    絞り込みや並び替えは道具箱を利用すればボタン一個で利用できるので利用してみてはいかがでしょうか?

    フォームで同時編集なければフォーム開始時に絞り込みでソートさせて最大値拾っておいて行追加・訂正時に値を代入、繰り上げるとすればできそうっちゃできそうですが。
[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13544 ] / ▼[ 13550 ]
■13546 / 1階層)  Re[1]: 連番の自動付与
□投稿者/ ONnoji -(2022/09/01(Thu) 11:39:25)
    2022/09/01(Thu) 11:54:51 編集(投稿者)

    > [A]を並び替えれば[NO]に項目名毎に連番を付与(下記)できますが、
    > 並び替えないで上記のように項目名毎に連番を付与出来ますか。

    並び替えないと、グループが区別できないので、無理だと思いますけど・・・!?

    p.s.

    もしも並べ替えしないのであれば、

    ・[A]を単一化して書き出した表を用意して、出現レコードの回数、それぞれの[A]の値で絞り込んで、#連番で置換する

    という手順を踏めば、並べ替えは必要ではありませんが、返って手間でしょう。

    フォームを使わないのであれば、表の履歴実行に登録するとか・・・

[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13546 ] / 返信無し
■13550 / 2階層)  Re[2]: 連番の自動付与
□投稿者/ ONnoji -(2022/09/01(Thu) 15:32:07)
    2022/09/01(Thu) 15:33:40 編集(投稿者)

    > a,b,c・・・ごとに最大値を拾って連番です。

    レコードを追加する時に、グループの最大値(最終値)に1(イチ)加算するという事なんですね。

    最大値+1と書いてくれたらすぐに分かったのですが・・・(^^ゞ

    これは[フォーム+イベント処理]でその[フォームの編集対象表]を多重化して、
                       ・・・・・・・・・・・・・・・・
    裏でこっそりとグループの最大値(最終値)を探索して、1(イチ)加算するのが現実的だと思いますよ。

[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13544 ] / ▼[ 13552 ]
■13551 / 1階層)  Re[1]: 連番の自動付与
□投稿者/ tonta -(2022/09/01(Thu) 17:18:26)
    ななーしさん、ONnojiさん

    並び替えて、最大値に+1しかないようですね。

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

解決済み!
[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13551 ] / ▼[ 13554 ]
■13552 / 2階層)  Re[2]: 連番の自動付与
□投稿者/ ONnoji -(2022/09/01(Thu) 18:09:57)
    2022/09/02(Fri) 10:53:39 編集(投稿者)
    2022/09/01(Thu) 18:18:31 編集(投稿者)

    > ななーしさん、ONnojiさん
    >
    > 並び替えて、最大値に+1しかないようですね。

    サンプルを作ってみました。ご参考にしてください。

    添付ファイルを解凍して

    フォーム:グループ毎の連番を振る.wfm を開いて、[A]に行追加・挿入してください。

    自動的に採番します。

    内容はあくまでも参考です。細かいことは気にせずに見てください。

    ファイルは桐9-2012です。桐10sでは桐コンバータで変換してください。

    なお、添付ファイルは数日を目途に削除しますので、ダウンロードはお早めに願います。

     ◇ ◇ ◇ ◇ ◇ ◇

    ■グループ毎の連番を振る.wfm

     フォーム
     ├ ファミリ
     ├ ワークスペース
     │ └ cmdStartup
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ ├ a
     │ ├ lblA
     │ └ lblNO
     └ フォーム明細部
       ├ 行セレクタ
       ├ txtA
       └ txtNO

     グループ毎の連番を振る.wfm の開始時実行コマンドボタン

     オブジェクト名: cmdStartup
     標題     : cmdStartup

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmdStartupClick
     3 なし
     4 なし

    ■グループ毎の連番を振る.tbl

    項目番号 項目名 データ型
    1     A    文字列        
    2     NO    長整数        
                    

    ■グループ毎の連番を振る.kev

    名札  メイン
     変数宣言 局所,整数 { &mMultiTblNum }



    手続き定義開始 cmdStartupClick( )
     変数宣言 自動,文字列{ &icon, &title = "cmdStartupClick( )", &msg }
     変数宣言 自動,整数 { &traceON }
     変数宣言 自動,整数 { &multiTblNum }

     &traceON = 0
     条件 ( &traceON ) トレース出力 &title + "を実行開始しました"

     編集表 &hwindow
     多重化
     &mMultiTblNum = #is表

     **if ( &mMultiTblNum )
     ** 終了 表 &multiTblNum
     **end
     編集表 &hwindow

     &msg =     "done"
     **メッセージボックス &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する

     条件 ( &traceON ) トレース出力 &title + "を実行終了しました"
    手続き定義終了

    手続き定義開始 フォーム::行挿入終了前(長整数 &明細番号,長整数 &モード,参照 長整数 &行挿入継続)
     変数宣言 自動,文字列{ &icon, &title = "フォーム::行挿入終了前( )", &msg }
     変数宣言 自動,文字列{ &objectName }
     変数宣言 自動,文字列{ &string }
     変数宣言 自動,文字列{ &expression }
     変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }
     変数宣言 自動,整数 { &return }
     変数宣言 自動,長整数{ &NO }
     変数宣言 自動,整数 { &traceON }

     &traceON = 1
     条件 ( &traceON ) トレース出力 &title + "を実行開始しました"

     条件 ( &traceON ) トレース出力 _&モード
    ┌if ( &モード )
    │ &string = [A]
    │ 条件 ( &traceON ) トレース出力 _&string

    │ 編集表 &mMultiTblNum
    │ &expression = &WQ + &string + &WQ
    │ 解除 *
    │ 絞り込み [A]_&expression
    │┌if ( .not #eof )
    ││
    ││ 並べ替え { [NO]降順 }
    ││ ジャンプ 行番号 = 先頭
    ││ &NO = [NO]
    ││ 条件 ( &traceON ) トレース出力 _&NO
    ││
    ││ 編集表 &hwindow
    ││ 項目値代入 [NO] = &NO + 1
    ││ **&msg =     "[NO] = " + #str( [NO] )
    ││ **メッセージボックス &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する
    │├else
    ││
    ││ 編集表 &hwindow
    ││ 項目値代入 [NO] = 1
    │└end
    └end


     条件 ( &traceON ) トレース出力 &title + "を実行終了しました"
    手続き定義終了

[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13552 ] / ▼[ 13555 ]
■13554 / 3階層)  Re[3]: 連番の自動付与
□投稿者/ tonta -(2022/09/03(Sat) 08:51:48)
    ONnojiさん

    > サンプルを作ってみました。ご参考にしてください。

    ダウンロードして実行してみました。
    あきらめておりましたが、完璧に出来ておりました。

    イベント処理は全くわからないのですが、興味がわいてきました。

    ありがとう御座いました。
解決済み!
[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13554 ] / 返信無し
■13555 / 4階層)  Re[4]: 連番の自動付与
□投稿者/ ONnoji -(2022/09/03(Sat) 10:36:43)
    2022/09/04(Sun) 11:59:17 編集(投稿者)
    2022/09/03(Sat) 12:16:29 編集(投稿者)

    > ダウンロードして実行してみました。
    > あきらめておりましたが、完璧に出来ておりました。

    了解しました。(*^^)ok

    添付ファイルは削除しました。

    そんなに難しいことはしていないので、内容はご理解できると思います。

    もしも、不明な点があれば、この掲示板でお問い合わせください。

    [フォーム+イベント処理]に関しては拙作webページも参考にしてみてください。

    こちら
     ↓
    桐の釣魚大全のトップ 日本語データベース桐10s 対応
    http://silicon7565.html.xdomain.jp/

    [桐のイベント処理の入門講座]と[桐のイベント処理の詳細な解説」他が用意してあります。

    全くの[フォーム+イベント処理]の初心者ならば、拙作webページの

    新 フォームアプリケーション入門 §1
    新 フォームアプリケーション入門 §2

    をお勧めします。

    内容は NULLフォームを対象としていますが、※最初はフォームの編集対象表が無い方がシンプルに学習できます

    [フォーム+イベント処理]の基本をちゃんと押さえてありますのでご安心ください。

    イベント処理はプログラミングなので、プログラミングの経験が無いと最初は難しく感じます。

    しかし、誰でも最初からプログラミングが出来たわけではありません。

    誰でも最初は初級者なんです。かくいう私も最初は初級者でしたよ。

    なので、勇気を出して一歩踏み出してみてください。

    それから、[フォーム+イベント処理]のお勉強をする時間が取れない人や、

    手っ取り早く[フォーム+イベント処理]で仕事をしたい人には、拙作:INF_Framework をお勧めします。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    これはすでにあらかじめ出来上がっている[フォーム+イベント処理]です。

    [フォーム+イベント処理]のテンプレートと言えば分かり易いでしょうかね???。

    正確にはアプリケーションの土台なので、フレームワークと言います。

    このフレームワークを利用すれば、極めて短時間にフォームが作成出来て、

    さらにユーザ固有の手続きを追加して使うことが出来ます。

    例えば、今回ご案内したイベントハンドラの フォーム::行挿入終了前( )も追加して利用できます。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    拙作:INF_Framework 第3.3版 改訂版(MkII) 基本セットは、

    この【多遊】さんのHPの観験桐(ダウンロードページ)の#201でダウンロードできます。

    また、拙作webページの
    [桐の釣魚大全のトップ > ワークショップ > ダウンロード]の順で進み[ダウンロード]ページでダウンロード出来ます。


    拙作フレームワーク(INF_Framework)の具体的な使用例は以下のwebページが参考になります。

    是非ご覧ください。

    こちら
     ↓
    あこめの桐のプログラミング入門 桐10s by AKome
    http://akome409102.html.xdomain.jp/


    p.s.

    > [A]を並び替えれば[NO]に項目名毎に連番を付与(下記)できますが、並び替えないで上記のように項目名毎に連番を付与出来ますか。
    >
    > #条件選択(#直前値([A],"")<>[A],1,1,#直前値([NO],0)+1)

    表の項目の項目計算式というのは、レコード内の項目を組み合わせて導かれる[導出項目]にしておくのが無難ですよ。

    例えばお馴染みの[金額]の時の[単価]*[数量]などが[導出項目]です。

    これって直前のレコードの値を参照していませんから、再計算した時に並び順の影響を受けません。

    それ以外には、[年齢]という項目を作り、項目計算式にする人がよくいますが、そうすると日時が進んで誕生日を迎える人が続出します。

    その都度、再計算すればいいですが、再計算を忘れればアウトです。

    なので、表に[生年月日]という項目だけを用意して、フォームのテキストボックスで年齢計算の式を指定すれば、

    フォームを開いた時にちゃんと計算してくれます。

    おそらく一覧表印刷では項目しか印字出来ないので、

    計算結果が日時によって変動するのを承知の上で計算項目を作るのだろうと思いますが、

    画面で確認するのであればフォームを作れば良いですし、印刷するのであればレポート印刷で足ります。

    これならば、再計算を忘れてアウトになる心配は要らないですよね。

    このように計算結果が何らかの理由で変動・移ろいゆく計算式はなるべく使用しない方がベターですよ。

    あれやこれやと思案して、[作業用の項目]を付け足したりすると結果的に(判りにくい)トリッキーになってしまい、

    保守が容易でない表を作成することになるのでお勧めしません。

    その時限りの効果よりも、将来も見据えた対処をすることをお勧めします。





[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13544 ] / ▼[ 13557 ]
■13556 / 1階層)  Re[1]: 連番の自動付与
□投稿者/ natsu -(2022/09/03(Sat) 13:45:12)
    解決済のところ、恐縮ですが…

    何らかの理由で「並べ替え」ではなく「項目計算式」で自動発番したいとのこと
    項目計算式で変数が使えればと思ったことは数知れず、
    変数が使えなければダミーの項目で対応しています。

    > #条件選択(#直前値([A],"")<>[A],1,1,#直前値([NO],0)+1)

    このスクリプトで行くのであれば
    まず、[A]にでてくるアイテム"a", "b", "c" をダミー項目名として追加します。
    続いて[a]の項目計算式は #cond([A]="a",#直前値([],0)+1,1,#直前値([],0))
    [b][c]も同じように作成して、[NO]の項目計算式を
    #cond([A]="a",[a],[A]="b",[b],[A]="c",[c])
    にすればOKです。ダミー項目のデータ型はもちろん[No]と一緒です。

    ただし、[A]の種類が多くなりすぎたり新規アイテムが登場すると
    その都度、表の再定義が必要で管理が大変です。

    また、行挿入や削除後に再計算すると、当然ですが
    連番も再計算されますので注意が必要です。


[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 13556 ] / 返信無し
■13557 / 2階層)  Re[2]: 連番の自動付与
□投稿者/ tonta -(2022/09/05(Mon) 10:25:43)
    natsuさん

    連絡遅くなってすいません。

    下記にて問題なく出来ました。
    いろんな方法があるんですね。
    勉強になりました。ありがとうございました。


    >>#条件選択(#直前値([A],"")<>[A],1,1,#直前値([NO],0)+1)
    >
    > このスクリプトで行くのであれば
    > まず、[A]にでてくるアイテム"a", "b", "c" をダミー項目名として追加します。
    > 続いて[a]の項目計算式は #cond([A]="a",#直前値([],0)+1,1,#直前値([],0))
    > [b][c]も同じように作成して、[NO]の項目計算式を
    > #cond([A]="a",[a],[A]="b",[b],[A]="c",[c])


解決済み!
[ 親 13544 / □ Tree ] 返信 [メール受信/OFF] 削除キー/


Mode/  Pass/

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

- Child Tree -
- Antispam Version -