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

《 桐質問以外の話題は、「のほか掲示板」からどうぞ 》
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomal文字列変換について(3) | Nomal平均額の算出(4) | Nomal絞り込み 条件名 エラー KD1084:比較式の形式に誤りがあります(2) | Nomal変数自体の文字列変換(4) | Nomal中央値について(10) | Nomal数値型項目で入力の際数値以外のキーを受け付けない(20) | Nomal一括処理について(14) | Nomal数値の複写の「項目計算式」(3) | Nomal認知症検査(1) | Nomal絞り込み検索条件式(3) | Nomal軸単位の異なるデータを一つのグラフで表示させたい(4) | Nomal表のサイズが小さくなる。(6) | Nomal項目の値を変数に取り込むには(2) | Nomal桐10終了(12) | Nomal最新(直近)のデータだけを表示させたい(2) | Nomalレポートについて(12) | Nomal文字列の計算(12) | Nomal表整理の一括化(17) | Nomalwindows10の動作(8) | Nomal経過日を知りたい(5) | Nomal表引きについて(13) | Nomal超初心者です。桐の変数代入について教えて下さい。(2) | Nomal区分ごとに行で色を付けたい(4) | Nomal絞り込み式(5) | Nomal連番を入れたら、その日の年月を自動で入れたい(6) | Nomal併合の絞り込みについて(8) | Nomalライブラリが読み込まれない(1) | Nomal絞り込み:比較式での日時値絞り込みの相談(12) | Nomal常時「訂正」モードにしたい(20) | Nomal桐s-2024 LTへのバージョンアップ(16) | Nomalテキスト読み込み(3) | Nomal一括処理でテキストを選択したい(8) | Nomal課税、非課税(8) | Nomalビルド番号について(4) | Nomal12ヶ月分のレコードを一度に作成する方法について(5) | Nomal一括処理で集計したい(2) | Nomalハンドルとは?(31) | Nomal帳票印刷(7) | Nomalメール送信(9) | Nomal拡張子CSVで項目間をカンマで区切り書き出したい(32) | Nomal正か負かで区分を付けたい(4) | Nomal項目計算式にメモ(4) | Nomal連番を自動入力したい(8) | Nomal項目別 連番生産(9) | Nomalイベントでフォームをまとめて開く(8) | Nomal9000バイトの出力(4) | Nomal一括処理書き方(7) | Nomal印字コマンド(13) | Nomal状態表示について(3) | NomalTXTファイルからDATファイルに変更(4) | Nomalテーブルの項目を整理する際の影響確認(5) | Nomalフォームの閉じ方について(18) | Nomalレポートにつきまして(5) | Nomal【アイデア募集】スケジュール表示(2) | Nomal表番号の謎(16) | Nomal主ウィンドウ と 補助ウィンドウについて(42) | Nomalチェックボックスの動作(8) | Nomal文字列中に、4桁以上の数字が含まれているか検査したい(8) | Nomal変数値の取得方法について(16) | Nomal行制約について(31) |



■記事リスト / ▼下のスレッド
■15103 / 親記事)  文字列変換について
□投稿者/ キリマンジャロ -(2025/09/09(Tue) 11:15:52)
    2025/09/09(Tue) 11:20:34 編集(投稿者)
    2025/09/09(Tue) 11:19:28 編集(投稿者)
    2025/09/09(Tue) 11:19:16 編集(投稿者)

    WIN11、桐10S使用です
    いつもお世話になっております

    項目    データ型

    材厚   数値
    材巾   数値

    材厚コード 文字列
    材幅コード 文字列


    表 材厚  材厚コード 材巾   材巾コード
    1  1.2  1200    69.0  0650

    2  2.5  2500    18.4   0184
     
    3  0.32  0320   114.0   1140
     
    4  0.5  0500    8.0   0080
     

    と入力しています。現在、材厚と材巾を入力してから、材厚コードと材巾コードを手入力してますが、材厚コードと材巾コードを項目計算式などで自動入力したいと考えております。
    お忙しいところ恐縮ですがよろしくお願いいたします。

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

▽[全レス3件(ResNo.1-3 表示)]
■15104 / ResNo.1)  Re[1]: 文字列変換について
□投稿者/ ジェダイの桐 -(2025/09/09(Tue) 13:52:34)
    キリマンジャロさん


    こんにちは!


    > 材厚コード 文字列


    これは、板厚 × 1000 ってことなんでしょうか?

    そうであれば、板厚コードの項目計算式に

     #文字列( [板厚] × 1000, 4 )

    と入力すれば可能です。


    > 材幅コード 文字列

    これは、巾 × 10 と言う事なのでしょうか?

    そうであれば、材巾コードの項目計算式に

     #文字列( ( [材巾] × 10 ), 4 )

    と入力すれば可能です。

    > 表 材厚  材厚コード 材巾   材巾コード
    > 1  1.2  1200    69.0  0650

    69.0 → 誤 0650 正 0690 なんでしょうかね??


    外しているかもしれませんが・・・


引用返信 [メール受信/OFF]
■15105 / ResNo.2)  Re[2]: 文字列変換について
□投稿者/ キリマンジャロ -(2025/09/09(Tue) 14:57:45)
    No15104に返信(ジェダイの桐さんの記事)
    >>材厚コード 文字列
    >
    >
    > これは、板厚 × 1000 ってことなんでしょうか?
    >
    > そうであれば、板厚コードの項目計算式に
    >
    >  #文字列( [板厚] × 1000, 4 )
    >
    > と入力すれば可能です。
    >
    >
    >>材幅コード 文字列
    >
    > これは、巾 × 10 と言う事なのでしょうか?
    >
    > そうであれば、材巾コードの項目計算式に
    >
    >  #文字列( ( [材巾] × 10 ), 4 )
    >
    > と入力すれば可能です。

    ジェダイの桐さん返信ありがとうございます。
    試したところ、こちらの計算式で上手くいきました!
    このようなやり方があるんですね。勉強になりました。
    素早いご回答ありがとうございました。

    >
    >>表 材厚  材厚コード 材巾   材巾コード
    >>1  1.2  1200    69.0  0650
    >
    > 69.0 → 誤 0650 正 0690 なんでしょうかね??
    >
    >
    > 外しているかもしれませんが・・・
    >

    おしゃる通りこちらは入力ミスでした・・・
    ご指摘ありがとうございます。
    >
解決済み!
引用返信 [メール受信/OFF]
■15106 / ResNo.3)  Re[3]: 文字列変換について
□投稿者/ ジェダイの桐 -(2025/09/09(Tue) 16:18:47)
    キリマンジャロさん


    こんにちは!
    解決して良かったです。


    >> #文字列( ( [材巾] × 10 ), 4 )

    結果は変わりませんが、

    #文字列( [材巾] × 10, 4 )

    この方がスマートです。何故か余計な丸括弧をつけていました・・・
引用返信 [メール受信/OFF]

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■15096 / 親記事)  平均額の算出
□投稿者/ ハロー0123 -(2025/09/03(Wed) 10:01:58)
    お世話になります。
    下記の表の「平均額」欄の計算式はどのようになりますか。

           4月     5月       6月     平均額
     Aさん  250000  (計算式が入ってます)  300000    275000
     Bさん  300000     310000      320000    310000

    前出されていそうな単純な質問ですが、よろしくお願いいたします。

     桐 Ver.9 使用
引用返信 [メール受信/OFF]

▽[全レス4件(ResNo.1-4 表示)]
■15097 / ResNo.1)  Re[1]: 平均額の算出
□投稿者/ 通りすがり -(2025/09/03(Wed) 12:48:07)
    回答じゃないけど書いときますね
    桐やAccessとかでデータベースシステムを作るときには、テーブル設計が一番大事でそれで考えることはほぼ終了
    あとは機械的にフォームやレポートを作ればよいです
    この掲示板の質問の殆どは、テーブル設計が良くないために困難に直面してるケースですね
    まあ、好みですけど

    今回の場合は、以下の形で表を作れば後々困りませんよ
    [年月],[人],[金額]
    2025/04,A,250000
    2025/04,B,300000

引用返信 [メール受信/OFF]
■15098 / ResNo.2)  Re[1]: 平均額の算出
□投稿者/ うにん -(2025/09/03(Wed) 15:49:32)
    レコード内の項目同士の平均は#横平均()関数を使いますが
    3項目しかないなら、単純に3つ足して3で割ってもいいですね。

    気になるのは、Aさんの5月だけ「(計算式が入ってます)」とは、どういう意味でしょう。
    少なくとも[5月](または全部の項目)が数値系の項目でなく文字列ってことでしょうかね。。。
    文字列だと、数値に変換しないと平均が出せませんし、
    計算式なのか数値なのかも判定する必要があるのかな?

引用返信 [メール受信/OFF]
■15100 / ResNo.3)  Re[2]: 平均額の算出
□投稿者/ ハロー0123 -(2025/09/03(Wed) 16:50:37)
    No15098に返信(うにんさんの記事)

    ありがとうございました。
解決済み!
引用返信 [メール受信/OFF]
■15102 / ResNo.4)  Re[3]: 平均額の算出
□投稿者/ ONnoji -(2025/09/04(Thu) 00:28:03)
    > レコード内の項目同士の平均は#横平均()関数を使いますが

    その通りですね。(^^ok

    > 3項目しかないなら、単純に3つ足して3で割ってもいいですね。

    普通の場合にはOKですが・・・

    もしも、平均を求める数値系の項目値に空欄(未入力)が存在した場合は注意が必要ですね。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    つまり、値が空欄(未入力)の項目も平均値を求める際の分母にしてもよいのか??です。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    もしも、測定値の場合のように、欠測で値が空欄(未入力)の項目がある場合には、その項目は集計の対象から除外する必要がありますね。

    しかし、単純に「項目値の合計/項目の数」で計算すると・・・

    表(.tbl/.tbx)の[ファイル属性]の[未定義項目値処理]の設定によって、

    値が空欄(未入力)の項目をゼロ(0)、または未定義値と扱いますよね。

    なので、計算結果としてそれでも良いのかという吟味が必要だと思いますよ。

    ちなみに、#横平均( [項目(begin)], [項目(end)] ) であれば、値が空欄(未入力)の項目は集計の対象から除外されます。
         ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    ・項目値の合計/項目の数

    ・#横平均( [項目(begin)], [項目(end)] )

    の、どちらが適しているかはケースバイケースで検討が必要ですよ。アハハハha

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

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■15089 / 親記事)  絞り込み 条件名 エラー KD1084:比較式の形式に誤りがあります
□投稿者/ TS -(2025/08/25(Mon) 21:45:36)
    桐s-2024 LT

    いつもお世話になっております。

     早速ですが、都道府県.TBX で

    [自治体]
    あああ(東京都)
    いいい(京都府)
    ううう(北海道)
    えええ(大阪府)
    おおお(福岡県)
    ・・・

    絞り込み − 条件名 − 検索条件 で あああ(東京都)を入力すると、

    KD1084:比較式の形式に誤りがあります

    とエラーメッセージが表示され

    検索をする事が出来ません。

    (←の部分(カッコ始まりの部分)が良くないというダイアログ表示。

     どのような検索条件式を入力すれば、あああ(東京都)が検索できる

    ようになるかご教示を頂ければと思います。

     よろしくお願いいたします。


    絞り込み
     条件名
      検索条件
       絞り込み:検索条件
       条件1 あああ(東京都)

    KD1084:比較式の形式に誤りがあります

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

▽[全レス2件(ResNo.1-2 表示)]
■15090 / ResNo.1)  Re[1]: 絞り込み 条件名 エラー KD1084:比較式の形式に誤りがあります
□投稿者/ ONnoji -(2025/08/25(Mon) 22:41:37)
    > 桐s-2024 LT
    >
    > [自治体]
    > あああ(東京都)
    > いいい(京都府)
    > ううう(北海道)
    > えええ(大阪府)
    > おおお(福岡県)
    > ・・・
    >
    > 絞り込み − 条件名 − 検索条件 で あああ(東京都)を入力すると、
    > KD1084:比較式の形式に誤りがあります
    > とエラーメッセージが表示され
    > 検索をする事が出来ません。

    比較式の文字列に記号文字が含まれる場合には、文字列の前後を二重引用符( " )で囲んでください。

    × おおお(福岡県)

    〇 "おおお(福岡県)"


引用返信 [メール受信/OFF]
■15095 / ResNo.2)  Re[2]: 絞り込み 条件名 エラー KD1084:比較式の形式に誤りがあります
□投稿者/ TS -(2025/08/26(Tue) 21:46:10)
    ONnoji 様

    > 比較式の文字列に記号文字が含まれる場合には、文字列の前後を二重引用符( " )で囲んでください。
    >
    > × おおお(福岡県)
    >
    > 〇 "おおお(福岡県)"

     できました。

     有難うございました。
解決済み!
引用返信 [メール受信/OFF]

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■15088 / 親記事)  変数自体の文字列変換
□投稿者/ oyaji -(2025/08/25(Mon) 20:45:24)
    桐10s windows10 です 変数の&を取った文字列、たとえば &abc を abc に変換する方法はありますか

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

▽[全レス4件(ResNo.1-4 表示)]
■15091 / ResNo.1)  Re[1]: 変数自体の文字列変換
□投稿者/ ONnoji -(2025/08/25(Mon) 22:47:10)
    2025/08/26(Tue) 01:24:33 編集(投稿者)

    > 桐10s windows10 です 変数の&を取った文字列、たとえば &abc を abc に変換する方法はありますか

    #文字置換( "&abc", "&", #u )

     または

    #文字置換( "&abc", "&", "" )

    でしょうね。

    ↑これって単なる文字置換ですが・・・?

    #sstr( "&abc", 2 ) ※ #sstr は #部分列 の別名

     または

    #部分列( "&abc", 2 )

    ↑これも単なる文字列から一部分の切り出しですが・・・??

    ちなみに、アンパサンド記号( & )は変数名をリテラル(直接)記述する場合に変数名に付ける接頭辞です。
         ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    従って、変数名自身は、アンパサンド記号( & )以降の文字列です。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・

    例えば、#変数( )という関数で変数:abc を指定する場合には、

     &STR = #変数( "abc" )  /* 組み込み変数:&STR に 変数:&abc の値を代入する */

    または、

     &variableName = "abc"
     &STR = #変数( &variableName ) /* 組み込み変数:&STR に 変数:&abc の値を代入する */

    のようにします。

    p.s.

    > 桐10s windows10 です 変数の&を取った文字列、たとえば &abc を abc に変換する方法はありますか

    ちなみに、貴殿の質問の趣旨がよく判りません。

    変数名は変数を宣言した人自身が把握しているはずなので、Why(なぜ)???なんですけれど・・・ (@_@)

引用返信 [メール受信/OFF]
■15092 / ResNo.2)  Re[2]: 変数自体の文字列変換
□投稿者/ oyaji -(2025/08/26(Tue) 06:22:30)
    >変数名は変数を宣言した人自身が把握しているはずなので

    確かにそうでした。自身も整理できてない状態ですが、ざっくりと説明させていただくと

    [変数] [値]
    a
    b
    c

    のともに項目値が文字列で定義された表があり 以下の文字列を作り

    "変数宣言 文字列{"
    (loop)+"&"+[変数]+","
    "}"

    eval処理して処理の過程で変数宣言をやっていますが、それぞれの変数が示す位置を求めるのに 文字列に戻さないとできないな、というところでの質問でした。

    もう少し考える必要がありそうですね
引用返信 [メール受信/OFF]
■15093 / ResNo.3)  Re[3]: 変数自体の文字列変換
□投稿者/ ONnoji -(2025/08/26(Tue) 08:17:05)
    2025/08/26(Tue) 12:47:14 編集(投稿者)

    > >変数名は変数を宣言した人自身が把握しているはずなので
    > 確かにそうでした。自身も整理できてない状態ですが、ざっくりと説明させていただくと
    > [変数] [値]
    > a
    > b
    > c
    > のともに項目値が文字列で定義された表があり 以下の文字列を作り
    > "変数宣言 文字列{"
    > (loop)+"&"+[変数]+","
    > "}"
    > eval処理して処理の過程で変数宣言をやっていますが、それぞれの変数が示す位置を求めるのに 文字列に戻さないとできないな、というところでの質問でした。

    表(.tbx)の先頭行から終端行になるまで移動しながら、表の項目:[変数]の値を変数名にして、
                             ・・・・・・・・・・・・・・・・・・

    変数を宣言して項目:[値]の値を代入しているという事だとザックリと思われますが・・・???
                                ・・・・・・・・・・
    代案としては、

    1.新しく、長整数型の項目:[index]を用意して、

    2.変数を宣言する前に、#連番 で置換して通し番号を振っておきます。

    3.表(.tbx)のレコード数と同じ要素数の配列変数を宣言して、
      ・・・・・・・・・・・・・・・・・・・・・

    手続き定義開始 cmdTestClick( )
     変数宣言 自動,文字列{ &macro }
     変数宣言 自動,整数 { &dimMax }

     &dimMax = #総件数
     変数宣言 自動,文字列{ &変数名[ &dimMax ] }
     変数宣言 自動,文字列{ &variableName = "変数名" }

     置換 [index] = #連番
     ジャンプ 行番号 = 先頭行
     繰り返し ( .not #eof )

      &macro = "代入 &" + &variableName + "[" + #str( [index] ) + "] = [値]"
      トレース出力 _&macro

      コマンド &macro
      トレース出力 _[値], "  ", _&変数名[ [index] ]

      ジャンプ 行番号 = 次行
     繰り返し終了

    手続き定義終了

        :&macro : 代入 &変数名[1] = [値]
        :[値] : 1  &変数名[ [index] ] : 1
        :&macro : 代入 &変数名[2] = [値]
        :[値] : 2  &変数名[ [index] ] : 2
        :&macro : 代入 &変数名[3] = [値]
        :[値] : 3  &変数名[ [index] ] : 3
        :&macro : 代入 &変数名[4] = [値]
        :[値] : 4  &変数名[ [index] ] : 4
        :&macro : 代入 &変数名[5] = [値]
        :[値] : 5  &変数名[ [index] ] : 5

    とかねっ!。(^^ゞ

引用返信 [メール受信/OFF]
■15094 / ResNo.4)  Re[4]: 変数自体の文字列変換
□投稿者/ oyaji -(2025/08/26(Tue) 14:40:28)
    丁寧なご提案ありがとうございました。
    実はほかのフォームから直接得られたそれぞれの変数の値をつかって、その[変数]に一致した行でいろいろ操作をしたいと考えていたのですが、ご提案の方法で行が得られますね。

    というかご指摘のとおり、とても変な質問になっていたようで申し訳ありませんでした。
解決済み!
引用返信 [メール受信/OFF]

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▲上のスレッド
■15072 / 親記事)  中央値について
□投稿者/ キリマンジャロ -(2025/08/07(Thu) 12:51:48)
    WIN11、桐10S使用です
    いつもお世話になっております

    項目    データ型
    部品コード  文字列
    加工数   通貨


    表   部品コード    加工数

    1    1200      6000

    2    1200      7000

    3    1200      4000

    4    1200      10000


    とデータがあります。このデータから部品コードごとに、加工数の中央値を出したいと考えております。
    部品コードによって、レコードが奇数や偶数になっています。
    中央値を簡単に出す方法があれば教えていただけますでしょうか。
    よろしくお願いいたします。
      

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

▽[全レス10件(ResNo.6-10 表示)]
■15083 / ResNo.6)  Re[1]: 中央値について
□投稿者/ うにん -(2025/08/13(Wed) 17:57:54)
    文字列関数とか配列変数を使って1パスか2パスでできないかと思ったけど、文字長や要素数の制限が色々ありすぎて実際のデータには使えないかなあと思いました。
引用返信 [メール受信/OFF]
■15084 / ResNo.7)  Re[2]: 中央値について
□投稿者/ ONnoji -(2025/08/13(Wed) 20:40:46)
    2025/08/14(Thu) 21:10:24 編集(投稿者)
    2025/08/13(Wed) 21:05:07 編集(投稿者)

    > 文字列関数とか配列変数を使って1パスか2パスでできないかと思ったけど、
    > 文字長や要素数の制限が色々ありすぎて実際のデータには使えないかなあと思いました。

    ↑これいいヒントですね。(^^♪

     手続き実行 procedureName( "6000,7000,4000", &result )

    こんなイメージかなぁ〜と思いました。アハハハha

     ◇ ◇ ◇ ◇ ◇ ◇ ◇

    サンプルを作ってみました。

    数日を目途に削除しますのでダウンロードはお早めに願います。

    追記:2025-08-14

    新たに元データから併合:連結でデータを集計する方式のサンプルを用意しましたので、この投稿のサンプルは削除しました。(^^ok
       ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    部品コード 加工数
    ----------------
    部品A  6000
    部品A  7000
    部品A  4000
    部品A  10000
    部品B  7000
    部品B  4000
    部品B  10000

    ■トレース

     :&dimMax : 4  &oddNumber : 0  &pcsList : 6000,7000,4000,10000
     :ソート前  1  &pcsListDim[ &i ] : 6000
     :ソート前  2  &pcsListDim[ &i ] : 7000
     :ソート前  3  &pcsListDim[ &i ] : 4000
     :ソート前  4  &pcsListDim[ &i ] : 10000
     :
     :ソート後  1  &pcsListDim[ &i ] : 4000
     :ソート後  2  &pcsListDim[ &i ] : 6000
     :ソート後  3  &pcsListDim[ &i ] : 7000
     :ソート後  4  &pcsListDim[ &i ] : 10000
     :
     :偶数  &dimMax : 4  &targetDimNumPrimary : 2  &targetDimNumSecondary : 3
     :&targetDimNumPrimary : 2  &targetDimNumSecondary : 3  &result : 6500 ← 中央値
     :                            ・・・・・・・・・・・・
     :&dimMax : 3  &oddNumber : 1  &pcsList : 7000,4000,10000
     :ソート前  1  &pcsListDim[ &i ] : 7000
     :ソート前  2  &pcsListDim[ &i ] : 4000
     :ソート前  3  &pcsListDim[ &i ] : 10000
     :
     :ソート後  1  &pcsListDim[ &i ] : 4000
     :ソート後  2  &pcsListDim[ &i ] : 7000
     :ソート後  3  &pcsListDim[ &i ] : 10000
     :
     :奇数  &dimMax : 3  &targetDimNum : 2  &result : 7000 ← 中央値
     :                     ・・・・・・・・・・・・


    ■test_中央値.kex

    名札  メイン



    手続き定義開始 cmd中央値を求めるClick( )
     変数宣言 自動,文字列{ &title = "cmd中央値を求めるClick( )" }
     変数宣言 自動,文字列{ &partsCode }
     変数宣言 自動,文字列{ &pcsList }
     変数宣言 自動,文字列{ &comma = #jis( #hex("2C") ) }
     変数宣言 自動,整数 { &multTblNum }

     多重化
     &multTblNum = #is表

     解除 *   /* 多重化した直後はすべて解除されていますが念のために */
     並べ替え { [部品コード]昇順 }

     ジャンプ 行番号 = 先頭行
     &partsCode = [部品コード]
     繰り返し ( .not #eof )

      &pcsList = &pcsList + #cond( &pcsList <> #u, &comma ) + #str( [加工数] )
      **トレース出力 _&pcsList

      ジャンプ 行番号 = 次行 /* これを忘れると無限ループになるよ */
      if ( &partsCode <> [部品コード] )
       **メッセージボックス &title, &partsCode + ":" + &pcsList, アイコン = i, ボタン指定 = 1

       手続き実行 prc中央値を求める( &partsCode, &pcsList )


       &partsCode = [部品コード]
       &pcsList  = #u
      end
     繰り返し終了

     終了 表 &multTblNum

    手続き定義終了

    手続き定義開始 prcSort(参照 数値 &dim[] )
     変数宣言 自動,数値{ &s, &fin, &n, &i, &numA, &numB }

     &n = #配列要素数( "dim" )
     &s = 2
     繰り返し

      &fin = &s
      &s  = &n
      繰り返し &i = &n, &fin, -1

       &numA = &dim[ &i ]    /* 数値の場合は &numA */
       &numB = &dim[ &i - 1 ]  /* 数値の場合は &numB */

       if ( &numA < &numB )   /* 数値の場合は &numA < &numB */
        &dim[ &i - 1 ] = &numA /* 数値の場合は &numA */
        &dim[ &i ]   = &numB /* 数値の場合は &numB */
        &s = &i
       end
      繰り返し終了

      if ( &s = &n )
       繰り返し中止
      end
     繰り返し終了

     **<参考書籍>
     **現代データ構造とプログラム技法 萩原宏・西原清一 著 オーム社刊 ISBN4-274-12831-8
    手続き定義終了

    手続き定義開始 prc中央値を求める( 文字列 &partsCode, 文字列 &pcsList )
     変数宣言 自動,文字列{ &title = "prc中央値を求める( )" }
     変数宣言 自動,文字列{ &comma = #jis( #hex("2C") ) }
     変数宣言 自動,整数 { &dimMax }
     変数宣言 自動,整数 { &oddNumber } /* 奇数ならば1 偶数ならば0 */
     変数宣言 自動,整数 { &i, &loop, &step = 1 }
     変数宣言 自動,整数 { &targetDimNum }
     変数宣言 自動,整数 { &targetDimNumPrimary, &targetDimNumSecondary }
     変数宣言 自動,数値 { &result }

     **メッセージボックス &title, &partsCode + ":" + &pcsList, アイコン = i, ボタン指定 = 1

     &dimMax = 1 + #文字数( &pcsList ) - #文字数( #文字置換( &pcsList, &comma, #u ) )
     &oddNumber = #mod( &dimMax, 2 )
     トレース出力 _&dimMax, "  ", _&oddNumber, "  ", _&pcsList

     変数宣言 自動,数値{ &pcsListDim[ &dimMax ] }
     &loop = &dimMax
     繰り返し &i = 1, &loop, &step
      &pcsListDim[ &i ] = #num( #対応文字列( &pcsList, &i ) )
      トレース出力 "ソート前", "  ", &i, "  ", _&pcsListDim[ &i ]
     繰り返し終了
     トレース出力 ""

     手続き実行 prcSort( &pcsListDim) /* 配列変数:&pcsListDim を昇順でソートする */

     &loop = &dimMax
     繰り返し &i = 1, &loop, &step
      トレース出力 "ソート後", "  ", &i, "  ", _&pcsListDim[ &i ]
     繰り返し終了
     トレース出力 ""

     if ( &oddNumber ) /* &oddNumber は1(イチ)または0(ゼロ)の論理値なので &oddNumber = 1 と書かなくて良い */

      ** 奇数
      &targetDimNum = #切り上げ( &dimMax / 2, 0 )
      &result    = &pcsListDim[ &targetDimNum ]
      トレース出力 "奇数", "  ", _&dimMax, "  ", _&targetDimNum, "  ", _&result
      トレース出力 ""

     else

      ** 偶数
      &targetDimNumPrimary  = &dimMax / 2
      &targetDimNumSecondary = &targetDimNumPrimary + 1
      &result    = ( &pcsListDim[ &targetDimNumPrimary ] + &pcsListDim[ &targetDimNumSecondary ] ) / 2
      トレース出力 "偶数", "  ", _&dimMax, "  ", _&targetDimNumPrimary, "  ", _&targetDimNumSecondary
      トレース出力 _&targetDimNumPrimary, "  ", _&targetDimNumSecondary, "  ", _&result
      トレース出力 ""
     end

     メッセージボックス &title, &partsCode + "の中央値:" + #str( &result ), アイコン = i, ボタン指定 = 1

    手続き定義終了


    p.s.

    なお、文字列型の配列変数のソートについては拙作webページをご覧ください。

    コチラ
     ↓
    桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
    https://silicon7565.cloudfree.jp/guide/guide_Part2.htm#section28-1
    28.1 配列変数のソート
    ■配列変数をソートする方法 ― 桐のイベント道場 かっこうログ 2002年06月03日より

引用返信 [メール受信/OFF]
■15085 / ResNo.8)  Re[3]: 中央値について
□投稿者/ ONnoji -(2025/08/13(Wed) 23:55:07)
    そうそう、値が1つだったらどうするのかな??

    それでも[中央値]と呼ぶのでしょうかね。アハハハ。

    こんな感じでよさそうですが?・・・

     ◇ ◇ ◇ ◇ ◇

    手続き定義開始 prc中央値を求める( 文字列 &partsCode, 文字列 &pcsList )
     変数宣言 自動,文字列{ &title = "prc中央値を求める( )" }
     変数宣言 自動,文字列{ &comma = #jis( #hex("2C") ) }
     変数宣言 自動,整数 { &dimMax }
     変数宣言 自動,整数 { &oddNumber } /* 奇数ならば1 偶数ならば0 */
     変数宣言 自動,整数 { &i, &loop, &step = 1 }
     変数宣言 自動,整数 { &targetDimNum }
     変数宣言 自動,整数 { &targetDimNumPrimary, &targetDimNumSecondary }
     変数宣言 自動,数値 { &result }

     **メッセージボックス &title, &partsCode + ":" + &pcsList, アイコン = i, ボタン指定 = 1

     &dimMax = 1 + #文字数( &pcsList ) - #文字数( #文字置換( &pcsList, &comma, #u ) )
     &oddNumber = #mod( &dimMax, 2 )
     トレース出力 _&dimMax, "  ", _&oddNumber, "  ", _&pcsList

     変数宣言 自動,数値{ &pcsListDim[ &dimMax ] }
     &loop = &dimMax
     繰り返し &i = 1, &loop, &step
      &pcsListDim[ &i ] = #num( #対応文字列( &pcsList, &i ) )
      トレース出力 "ソート前", "  ", &i, "  ", _&pcsListDim[ &i ]
     繰り返し終了
     トレース出力 ""

     手続き実行 prcSort( &pcsListDim) /* 配列変数:&pcsListDim を昇順でソートする */

     &loop = &dimMax
     繰り返し &i = 1, &loop, &step
      トレース出力 "ソート後", "  ", &i, "  ", _&pcsListDim[ &i ]
     繰り返し終了
     トレース出力 ""

     if ( &oddNumber ) /* &oddNumber は1(イチ)または0(ゼロ)の論理値なので &oddNumber = 1 と書かなくて良い */

      if ( &dimMax > 1 )

       ** 奇数
       &targetDimNum = #切り上げ( &dimMax / 2, 0 )
       &result    = &pcsListDim[ &targetDimNum ]
       トレース出力 "奇数", "  ", _&dimMax, "  ", _&targetDimNum, "  ", _&result
       トレース出力 ""

      else

       &result    = &pcsListDim[ 1 ]
       トレース出力 "奇数", "  ", _&dimMax, "  ", _&targetDimNum, "  ", _&result
       トレース出力 ""

      end

     else

      ** 偶数
      &targetDimNumPrimary  = &dimMax / 2
      &targetDimNumSecondary = &targetDimNumPrimary + 1
      &result    = ( &pcsListDim[ &targetDimNumPrimary ] + &pcsListDim[ &targetDimNumSecondary ] ) / 2
      トレース出力 "偶数", "  ", _&dimMax, "  ", _&targetDimNumPrimary, "  ", _&targetDimNumSecondary
      トレース出力 _&targetDimNumPrimary, "  ", _&targetDimNumSecondary, "  ", _&result
      トレース出力 ""
     end

     メッセージボックス &title, &partsCode + "の中央値:" + #str( &result ), アイコン = i, ボタン指定 = 1

    手続き定義終了


引用返信 [メール受信/OFF]
■15086 / ResNo.9)  Re[4]: 中央値について
□投稿者/ ONnoji -(2025/08/14(Thu) 10:32:04)
    2025/08/17(Sun) 15:40:32 編集(投稿者)

    > 手続き実行 procedureName( "6000,7000,4000", &result )

    このイメージで、併合の[連結]を使って加工数リストを作成しました。(^^♪

    添付ファイルがあります。

    解凍すると4つのファイルがあります

     test2_参照表.tbx
     test2_中央値.kex
     test2_中央値.tbx
     test2_中央値.wfx ← コマンドボタンを実行してください

    数日を目途に削除しますのでダウンロードはお早めに願います。

     ◇ ◇ ◇ ◇

    ■ test2_参照表.tbx

    項目番号 項目名  データ型 項目計算式
    1    部品コード 文字列  
    2    加工数  数値  
    3    作業用  文字列  "," + #str( [加工数] )

    部品コード 加工数  作業用
    --------------------------
    部品A   6000  ,6000
    部品A   7000  ,7000
    部品A   4000  ,4000
    部品A   10000  ,10000
    部品B   7000  ,7000
    部品B   4000  ,4000
    部品B   10000  ,10000
    部品C    500  ,500


    ■ test2_中央値.tbx

    項目番号 項目名   データ型 項目計算式
    1    部品コード  文字列  
    2    連結リスト 文字列  
    3    中央値   数値

    部品コード 連結リスト       中央値
    ----------------------------------------
    部品A  ,6000,7000,4000,10000   6500
    部品B  ,7000,4000,10000      7000
    部品C  ,500            500

    ※このデータはフォームの[中央値を求める]ボタンを実行した結果の値

    ■ test2_中央値.wfx

    フォーム
     ├ ファミリ
     ├ ワークスペース
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ ├ cmd中央値を求める ← コマンドボタンを実行してください
     │ ├ a
     │ ├ lbl部品コード
     │ ├ lbl中央値
     │ └ lbl連結リスト
     └ フォーム明細部
       ├ 行セレクタ
       ├ txt部品コード
       ├ txt中央値
       └ txt連結リスト

     オブジェクト名: cmd中央値を求める
     標題     : 中央値を求める

      機能名   機能パラメータリスト
     1 表示
     2 手続き実行 cmd中央値を求めるClick
     3 なし
     4 なし


    ■ test2_中央値.kex

    名札  メイン



    手続き定義開始 prcSort(参照 数値 &dim[] )
     変数宣言 自動,数値{ &s, &fin, &n, &i, &numA, &numB }

     &n = #配列要素数( "dim" )
     &s = 2
     繰り返し

      &fin = &s
      &s  = &n
      繰り返し &i = &n, &fin, -1

       &numA = &dim[ &i ]    /* 数値の場合は &numA */
       &numB = &dim[ &i - 1 ]  /* 数値の場合は &numB */

       if ( &numA < &numB )   /* 数値の場合は &numA < &numB */
        &dim[ &i - 1 ] = &numA /* 数値の場合は &numA */
        &dim[ &i ]   = &numB /* 数値の場合は &numB */
        &s = &i
       end
      繰り返し終了

      if ( &s = &n )
       繰り返し中止
      end
     繰り返し終了

     **<参考書籍>
     **現代データ構造とプログラム技法 萩原宏・西原清一 著 オーム社刊 ISBN4-274-12831-8
    手続き定義終了

    手続き定義開始 cmd中央値を求めるClick( )
     変数宣言 自動,文字列{ &title = "cmd中央値を求めるClick( )" }
     変数宣言 自動,文字列{ &targetTbl }
     変数宣言 自動,整数 { &status }

     解除 *
     行削除 *, 圧縮

     &targetTbl = #一括パス名 + "test2_参照表.tbx"
     併合  &targetTbl, 両方, 編集表 = する, 終了状態 = &status, { [部品コード]照合[部品コード],[連結リスト]連結[作業用] }
     **戻り値 説明
     ** 1   正常に終了した
     ** 0   共有違反以外のエラーが発生した
     **-2   他の利用者が置換や併合などの処理を実行中(ファイル排他)
     トレース出力 _&status, "  ", _&targetTbl

     if ( &status = 1 )
      手続き実行 prc中央値を求める( )
     else
      メッセージボックス &title, "[併合]コマンドの実行に失敗しました:終了状態 = " + #str( &status ), アイコン = e, ボタン指定 = 1
     end

    手続き定義終了

    手続き定義開始 prc中央値を求める( )
     変数宣言 自動,文字列{ &title = "prc中央値を求める( )" }
     変数宣言 自動,数値 { &result }

     解除 *
     ジャンプ 行番号 = 先頭
     繰り返し ( .not #eof )

      手続き実行 prc中央値の計算( [部品コード], #sstr([連結リスト], 2 ), &result ) /* #sstr([連結リスト], 2 ) は、先頭のコンマ(,)が不要のため */
      行訂正 [中央値] = &result

      ジャンプ 行番号 = 次行 /* これを忘れると無限ループになるよ */
     繰り返し終了

    手続き定義終了

    手続き定義開始 prc中央値の計算( 文字列 &partsCode, 文字列 &pcsList, 参照 数値 &result )
     変数宣言 自動,文字列{ &title = "prc中央値の計算( )" }
     変数宣言 自動,文字列{ &comma = #jis( #hex("2C") ) }
     変数宣言 自動,整数 { &dimMax }
     変数宣言 自動,整数 { &oddNumber } /* 奇数ならば1 偶数ならば0 */
     変数宣言 自動,整数 { &i, &loop, &step = 1 }
     変数宣言 自動,整数 { &targetDimNum }
     変数宣言 自動,整数 { &targetDimNumPrimary, &targetDimNumSecondary }

     **メッセージボックス &title, &partsCode + ":" + &pcsList, アイコン = i, ボタン指定 = 1

     &dimMax = 1 + #文字数( &pcsList ) - #文字数( #文字置換( &pcsList, &comma, #u ) )
     &oddNumber = #mod( &dimMax, 2 )
     トレース出力 _&dimMax, "  ", _&oddNumber, "  ", _&pcsList

     変数宣言 自動,数値{ &pcsListDim[ &dimMax ] }
     &loop = &dimMax
     繰り返し &i = 1, &loop, &step
      &pcsListDim[ &i ] = #num( #対応文字列( &pcsList, &i ) )
      トレース出力 "ソート前", "  ", &i, "  ", _&pcsListDim[ &i ]
     繰り返し終了
     トレース出力 ""

     手続き実行 prcSort( &pcsListDim) /* 配列変数:&pcsListDim を昇順でソートする */

     &loop = &dimMax
     繰り返し &i = 1, &loop, &step
      トレース出力 "ソート後", "  ", &i, "  ", _&pcsListDim[ &i ]
     繰り返し終了
     トレース出力 ""

     if ( &oddNumber ) /* &oddNumber は1(イチ)または0(ゼロ)の論理値なので &oddNumber = 1 と書かなくて良い */

      ** 奇数
      if ( &dimMax > 1 )

       &targetDimNum = #切り上げ( &dimMax / 2, 0 )
       &result    = &pcsListDim[ &targetDimNum ]
       トレース出力 "奇数", "  ", _&dimMax, "  ", _&targetDimNum, "  ", _&result
       トレース出力 ""

      else

       &result    = &pcsListDim[ 1 ]
       トレース出力 "奇数", "  ", _&dimMax, "  ", _&targetDimNum, "  ", _&result
       トレース出力 ""

      end

     else

      ** 偶数
      &targetDimNumPrimary  = &dimMax / 2
      &targetDimNumSecondary = &targetDimNumPrimary + 1
      &result    = ( &pcsListDim[ &targetDimNumPrimary ] + &pcsListDim[ &targetDimNumSecondary ] ) / 2
      トレース出力 "偶数", "  ", _&dimMax, "  ", _&targetDimNumPrimary, "  ", _&targetDimNumSecondary
      トレース出力 _&targetDimNumPrimary, "  ", _&targetDimNumSecondary, "  ", _&result
      トレース出力 ""
     end

     メッセージボックス &title, &partsCode + "の中央値:" + #str( &result ), アイコン = i, ボタン指定 = 1

    手続き定義終了

    p.s.

    なお、文字列型の配列変数のソートについては拙作webページをご覧ください。

    コチラ
     ↓
    桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
    https://silicon7565.cloudfree.jp/guide/guide_Part2.htm#section28-1
    28.1 配列変数のソート
    ■配列変数をソートする方法 ― 桐のイベント道場 かっこうログ 2002年06月03日より


引用返信 [メール受信/OFF]
■15087 / ResNo.10)  Re[5]: 中央値について
□投稿者/ キリマンジャロ -(2025/08/20(Wed) 13:41:26)
    うにんさん、ONnojiさんありがとうございます。

    アドバイスを頂いて、中央値の値を求めることが簡単になりデータの集計がかなり楽になりました。
    また、質問させていただくかと思いますが、よろしくお願いします!
解決済み!
引用返信 [メール受信/OFF]

■記事リスト / レス記事表示 → [親記事-9] [10-10]






01682

Mode/  Pass/

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

- Child Tree -
- Antispam Version -