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

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

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

■10974 / inTopicNo.1)  複数行を1つにまとめるpert2
  
□投稿者/ kided -(2018/03/27(Tue) 01:34:06)




    お世話になります。再度質問させてください。

    OS:win10
    桐ver.9-2012



    下記の様な3つのテーブルがあった場合

    物件.TBL
    物件 面積 所有者C 所有者
    A 100 10 太郎
    B 120 20 次郎
    C 110 30 一郎 ほか2名


    所有者.TBL
    所有者C 氏名 住所
    10 太郎 東京都
    20 次郎 埼玉県
    30 一郎ほか2名 −
    40 一郎 沖縄
    50 二郎 熊本
    60 三郎 愛媛


    共有者.TBL
    共有C 氏名 所有者C 構成者
    30 一郎ほか2名 40 一郎
    30 一郎ほか2名 50 二郎
    30 一郎ほか2名 60 三郎


    これらを使用して下記の様な結合表は作成できるのですが・・・。


    物件1.VIW
    物件 面積 所有者 住所
    A 100 太郎 東京都
    B 120 次郎 埼玉県
    C 110 一郎 沖縄
    C 110 二郎 熊本
    C 110 三郎 愛媛


    下記の様にする方法が判りません。


    物件2.VIW
    物件 面積 所有者1 住所1 所有者2 住所2 所有者3 住所3
    A 100 太郎 東京都
    B 120 次郎 埼玉県
    C 110 一郎 沖縄 二郎 熊本 三郎 愛媛

    または、

    物件3.VIW
    物件 面積 所有者(住所)
    A 100 太郎(東京都)
    B 120 次郎(埼玉県)
    C 110 一郎(沖縄)、二郎(熊本)、三郎(愛媛)

    共有の情報を一つのレコードに集約する方法を教えてください。


    よろしくお願いします。
引用返信 [メール受信/OFF] 削除キー/
■10976 / inTopicNo.2)  Re[1]: 複数行を1つにまとめるpert2
□投稿者/ ONnoji -(2018/03/27(Tue) 10:30:57)
    2018/03/27(Tue) 11:33:09 編集(投稿者)

    No10974に返信(kidedさんの記事)
    > これらを使用して下記の様な結合表は作成できるのですが・・・。
    >
    > 物件1.VIW
    > 物件 面積 所有者 住所
    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄
    > C   110   二郎  熊本
    > C   110   三郎  愛媛
    >
    > 下記の様にする方法が判りません。
    >
    > 物件2.VIW
    > 物件 面積  所有者1 住所1  所有者2 住所2  所有者3 住所3
    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄  二郎  熊本  三郎  愛媛


    質問の冒頭で長々と結合表を作るまでを見せられたから、てっきり結合表の問題解決かと思ったら、

    何のことはない、結合表とは無関係の問題でした。

    質問のポイントは、次の変換です。

     C   110   一郎  沖縄
     C   110   二郎  熊本
     C   110   三郎  愛媛

     ↓

     C   110   一郎  沖縄  二郎  熊本  三郎  愛媛

    これって、先日の[10961 / 親階層) 複数の行単一の行にまとめたい]の変換と同じです。

    つまり、印字コマンドでタブ区切りのテキストを出力して読み込むだけの話です。

    結合表を使う必要はありませんよ。※というよりも結合表では出来ませんよ。


    > または、
    >
    > 物件3.VIW
    > 物件 面積  所有者(住所)
    > A   100   太郎(東京都)
    > B   120   次郎(埼玉県)
    > C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)
    >
    > 共有の情報を一つのレコードに集約する方法を教えてください。

    質問のポイントは、次の変換です。

     C   110   一郎  沖縄
     C   110   二郎  熊本
     C   110   三郎  愛媛

     ↓

     C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)

    これは、先日の[10953 / 親階層) 7847 のスレッド]の併合を使った変換と同じです。

    つまり、併合の操作が[連結]です。

    ただし、コンマ( , )が濁点( 、)に変わっただけですよ。

    結合表を使う必要はありませんよ。※というよりも結合表では出来ませんよ。



引用返信 [メール受信/OFF] 削除キー/
■10977 / inTopicNo.3)  Re[1]: 複数行を1つにまとめるpert2
□投稿者/ まさやん -(2018/03/27(Tue) 12:33:58)
    2018/03/27(Tue) 19:56:36 編集(投稿者)

    2018/03/27(Tue) 12:38:10 編集(投稿者)

    > 物件1.VIW
    > 物件 面積 所有者 住所
    > A 100 太郎 東京都
    > B 120 次郎 埼玉県
    > C 110 一郎 沖縄
    > C 110 二郎 熊本
    > C 110 三郎 愛媛
    >
    >
    > 下記の様にする方法が判りません。
    >
    >
    > 物件2.VIW
    > 物件 面積 所有者1 住所1 所有者2 住所2 所有者3 住所3
    > A 100 太郎 東京都
    > B 120 次郎 埼玉県
    > C 110 一郎 沖縄 二郎 熊本 三郎 愛媛
    >

    上記のような
    所有者1 所有者2 と数字の入った 項目だったとした場合

    変数宣言 整数{&繰,&項目番号}
    変数宣言 数値{&面積}
    変数宣言 文字列{&物件,&所有者,&住所,&項目名}

    表 物件1
    表 物件2

    編集表 物件1

    並べ替え {[物件]}
    繰り返し
       &繰=#条件選択(&物件≠[物件],1,1,&繰+1)

       ** 上記の
       ** 条件 (&物件≠[物件]) &繰=1
       ** 条件 (&物件=[物件]) &繰=&繰+1   のほうが解りやすいかな・。

             
       &物件=[物件],&面積=[面積],&所有者=[所有者],&住所=[住所]

       編集表 物件2
        検索 [物件]_&物件,部分一致=含む
       if (#終端行)
         行追加 [物件]=&物件,[面積]=&面積
         位置指定 行番号=b
       end
         &項目名="所有者"+#文字列(&繰)
         &項目番号=#項目番号(&項目名)  ** &項目名の項目番号を求めます。
         行訂正 &項目番号=&所有者
         &項目名="住所"+#文字列(&繰)   ** &住所の項目番号を求めます
         &項目番号=#項目番号(&項目名)
         行訂正 &項目番号=&住所
    編集表 物件1
       ジャンプ 行番号=+1
       条件 (#終端行) 繰り返し中止
    繰り返し終了

    でも行きますよ。

    所有者が 増えて 所有者4 所有者5 とか 項目が増えていっても大丈夫かな。

    所有者と住所を一緒にする場合 物件3の場合

    end から 編集表 物件1 の間に

         条件 (&繰=1) 行訂正 [所有者]=&所有者+"("+&住所+")"
         条件 (&繰>1) 行訂正 [所有者]=[所有者]+","+&所有者+"("+&住所+")"

    とすればいいです。
引用返信 [メール受信/OFF] 削除キー/
■10978 / inTopicNo.4)  Re[2]: 複数行を1つにまとめるpert2
□投稿者/ ONnoji -(2018/03/27(Tue) 13:02:28)
    2018/03/27(Tue) 22:59:02 編集(投稿者)
    2018/03/27(Tue) 19:25:49 編集(投稿者)
    2018/03/27(Tue) 13:21:06 編集(投稿者)

    > これって、先日の[10961 / 親階層) 複数の行単一の行にまとめたい]の変換と同じです。
    >
    > つまり、印字コマンドでタブ区切りのテキストを出力して読み込むだけの話です。

    ↑これは[10961 / 親階層) 複数の行単一の行にまとめたい]の回答である10962 の一括処理の骨組みはそのままで、ちょっと書き換えるだけでOKですよ。

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

    物件1view.zip を解凍すると以下のファイルがあります。

    <表>

    物件1view.tbl

    ↑は結合表ではありません。実際の運用では 物件1.VIW を使用してください。
     [面積]は数値型にしてあります。

    > 物件 面積  所有者 住所
    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄
    > C   110   二郎  熊本
    > C   110   三郎  愛媛

    <一括処理>

    物件1から物件2へ変換.cmd

    ↓のタブ区切りのテキストファイルが出力されます。

    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄  二郎  熊本  三郎  愛媛

    任意の表を用意して出力されたテキストファイルを読み込んでください。区切りはタブですので何もしなくてもそのまま読み込めます。


    物件1から物件3へ変換.cmd

    ↓のタブ区切りのテキストファイルが出力されます。

    > A   100   太郎(東京都)
    > B   120   次郎(埼玉県)
    > C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)

    任意の表を用意して出力されたテキストファイルを読み込んでください。区切りはタブですので何もしなくてもそのまま読み込めます。


    <老婆心ながら>

    表を集合と考えた場合、

     集合{物件,面積,所有者C,所有者}
     集合{所有者C,氏名,住所}
     集合{共有C,氏名,所有者C,構成者}
     集合{物件,面積,所有者,住所}
      ↓
     集合{物件,面積,所有者1,住所1,所有者2,住所2,所有者3,住所3}

    が出来上がってしまうなんて考えられないでしょ〜。

    なぜならば、突然に 所有者1,住所1,所有者2,住所2,所有者3,住所3 が発生してしまったからです。

    リレーショナル・データベース・モデルは集合の操作なんですよ。

    発想が間違っていると言っているのではありません。

    どんな発想も自由で結構です。

    しかし、リレーショナル・データベース・モデルに適していないことは出来ないのです。

    たぶん、エクセルのような計算用紙、つまり紙の世界の感覚で、「桐なら出来るんじゃない?」と思われているかもしれませんが・・・

    同様に、

     集合{物件,面積,所有者C,所有者}
     集合{所有者C,氏名,住所}
     集合{共有C,氏名,所有者C,構成者}
     集合{物件,面積,所有者,住所}
      ↓
     集合{物件,面積,所有者(住所)}

    が出来上がってしまうこともありえません。

    なぜならば、突然に 所有者(住所) が発生してしまったからです。

    突然に 所有者1,住所1,所有者2,住所2,所有者3,住所3 が発生したり、

    突然に 所有者(住所) が発生する理由はなんでしょうか???

    それは、リレーショナル操作ではなく、頭の中で作った変換結果だからです。

    つまり、どこの表にも存在しない項目が現れる場合には、リレーショナル操作では無い可能性があるのです。

    頭の中で作った変換結果なのですから、

    ゴリゴリと一括処理を使うか、併合などの操作で対応するのがベターです。




1522123348.zip
/6KB
引用返信 [メール受信/OFF] 削除キー/
■10979 / inTopicNo.5)  Re[3]: 複数行を1つにまとめるpert2
□投稿者/ ONnoji -(2018/03/27(Tue) 13:10:37)
    2018/03/27(Tue) 14:09:34 編集(投稿者)

    一応、一括処理のリストを掲げておきます。※一本道のプログラムは変更が面倒で実用性が乏しいので掲載しません。

    【物件1から物件2へ変換.cmd】

     印字終了
     印字開始 #一括パス名 + "物件1から物件2へ変換タブ区切りテキスト.txt"

     表 "物件1view.tbl"

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

      手続き実行 prc同名処理( [物件] ) /* これは[ジャンプ 行番号 = 次行]と等価 */

     繰り返し終了

     印字終了

     シェル実行 #一括パス名 + "物件1から物件2へ変換タブ区切りテキスト.txt" /* 結果の確認 */

     終了 /* 一括処理終了 */

    手続き定義開始 prc同名処理( 文字列 &物件 )
     変数宣言 自動,整数{ &cnt }

     &cnt = 1
     繰り返し ( &物件 = [物件] )

      手続き実行 prcテキスト出力( &cnt, &物件, [面積], [所有者], [住所] )

      &cnt = &cnt + 1
      ジャンプ 行番号 = 次行
     繰り返し終了

     印字 _13, _10, /* 改行 CR LF */

    手続き定義終了

    手続き定義開始 prcテキスト出力( 整数 &cnt, 文字列 &物件, 数値 &面積, 文字列 &所有者, 文字列 &住所 )

     if ( &cnt = 1 )

      印字 &物件, _09, #str( &面積 ), _09, &所有者, _09, &住所, /* 改行しない */
     else

      印字 _09, &所有者, _09, &住所, /* 改行しない */
     end

    手続き定義終了


    【物件1から物件3へ変換.cmd】

     印字終了
     印字開始 #一括パス名 + "物件1から物件3へ変換タブ区切りテキスト.txt"

     表 "物件1view.tbl"

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

      手続き実行 prc同名処理( [物件] ) /* これは[ジャンプ 行番号 = 次行]と等価 */

     繰り返し終了

     印字終了

     シェル実行 #一括パス名 + "物件1から物件3へ変換タブ区切りテキスト.txt" /* 結果の確認 */

     終了 /* 一括処理終了 */

    手続き定義開始 prc同名処理( 文字列 &物件 )
     変数宣言 自動,整数{ &cnt }

     &cnt = 1
     繰り返し ( &物件 = [物件] )

      手続き実行 prcテキスト出力( &cnt, &物件, [面積], [所有者], [住所] )

      &cnt = &cnt + 1
      ジャンプ 行番号 = 次行
     繰り返し終了

     印字 _13, _10, /* 改行 CR LF */

    手続き定義終了

    手続き定義開始 prcテキスト出力( 整数 &cnt, 文字列 &物件, 数値 &面積, 文字列 &所有者, 文字列 &住所 )

     if ( &cnt = 1 )

      印字 &物件, _09, #str( &面積 ), _09, &所有者 + "(" + &住所 + ")", /* 改行しない */
     else

      印字 "、" + &所有者 + "(" + &住所 + ")", /* 改行しない */
     end

    手続き定義終了



引用返信 [メール受信/OFF] 削除キー/
■10981 / inTopicNo.6)  Re[1]: 複数行を1つにまとめるpert2
□投稿者/ まさやん -(2018/03/27(Tue) 19:45:28)
    2018/03/29(Thu) 08:51:11 編集(投稿者)
    2018/03/27(Tue) 23:34:11 編集(投稿者)
    2018/03/27(Tue) 23:32:27 編集(投稿者)
    2018/03/27(Tue) 20:55:10 編集(投稿者)
    2018/03/27(Tue) 20:07:35 編集(投稿者)
    2018/03/27(Tue) 19:46:35 編集(投稿者)

    > 下記の様な3つのテーブルがあった場合

    > 物件.TBL

    > 所有者.TBL

    > 共有者.TBL

    > 物件2.VIW
    > 物件 面積 所有者1 住所1 所有者2 住所2 所有者3 住所3
    > A 100 太郎 東京都
    > B 120 次郎 埼玉県
    > C 110 一郎 沖縄 二郎 熊本 三郎 愛媛
    >
    > または、
    >
    > 物件3.VIW
    > 物件 面積 所有者(住所)
    > A 100 太郎(東京都)
    > B 120 次郎(埼玉県)
    > C 110 一郎(沖縄)、二郎(熊本)、三郎(愛媛)
    >
    > 共有の情報を一つのレコードに集約する方法を教えてください。

    3つの情報を 一つにしてみました。

    サンプルは  トレースと 遅延と 表表示 が入っています。
    順を追って表の変化がみられるといいと思って付けています。
    必要のない時は 削除をお願いします。

    桐をはじめたころ 今思えば いろんな表を 作ってしまった
    それを 一つの表にまとめてみたいということが 私も経験あります。

    今では 表を整理して簡素化していますが、 簡素化したいとか思ったときに
    このような感じで 作ったことがあります。

    ある程度の 組み立てが解れば
    桐の一括やイベントで思うこと何でもできると思います。
    すみません 私もここまで来るのに しばらくかかりましたが(笑)

    サンプルは ただ 例をみて 私なりに共通点を探してみて 組み立ててみました。

    実際には 元の表が もっと複雑かもしれません また違っているかもしれません。
    質問に合った例を基準としてやってみました

    ただ 実際問題として 
    物件1.VIW
    物件 面積 所有者 住所
    A 100 太郎 東京都
    B 120 次郎 埼玉県
    C 110 一郎 沖縄
    C 110 二郎 熊本
    C 110 三郎 愛媛

    物件2.VIW
    物件 面積 所有者1 住所1 所有者2 住所2 所有者3 住所3
    A 100 太郎 東京都
    B 120 次郎 埼玉県
    C 110 一郎 沖縄 二郎 熊本 三郎 愛媛

    という 物件2の 表にするより  物件1 の表を 一覧表フォーム化して
    物件をグループ化にして 表示したほうが 見やすいのでは?

    ダウンロードして 初めてCMD を実行されるときに 確認を求められるかもしれません。



1522154897.zip
/27KB
引用返信 [メール受信/OFF] 削除キー/
■10983 / inTopicNo.7)  Re[4]: 複数行を1つにまとめるpert2
□投稿者/ ONnoji -(2018/03/28(Wed) 09:16:17)
    2018/03/28(Wed) 10:47:18 編集(投稿者)
    2018/03/28(Wed) 09:55:01 編集(投稿者)
    2018/03/28(Wed) 09:24:10 編集(投稿者)

    > 物件1view.tbl
    >
    > ↑は結合表ではありません。実際の運用では 物件1.VIW を使用してください。
    >  [面積]は数値型にしてあります。
    >
    > 物件 面積  所有者 住所
    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄
    > C   110   二郎  熊本
    > C   110   三郎  愛媛
    >
    > <一括処理>
    >
    > 物件1から物件2へ変換.cmd
    >
    > ↓のタブ区切りのテキストファイルが出力されます。
    >
    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄  二郎  熊本  三郎  愛媛
    >
    > 物件1から物件3へ変換.cmd
    >
    > ↓のタブ区切りのテキストファイルが出力されます。
    >
    > A   100   太郎(東京都)
    > B   120   次郎(埼玉県)
    > C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)

    ↑上の変換が間違っているとか、正しくないと言っているのではありません。

    当然こういうニーズはあるでしょう。

    でも、リレーショナル操作(結合表)では無いんですよ。

    ちなみに、以下の逆変換は

    A   100   太郎  東京都
    B   120   次郎  埼玉県
    C   110   一郎  沖縄  二郎  熊本  三郎  愛媛

      ↓

    A   100   太郎  東京都
    B   120   次郎  埼玉県
    C   110   一郎  沖縄
    C   110   二郎  熊本
    C   110   三郎  愛媛

    正規化なんです。

    同じく、以下の逆変換も

    A   100   太郎(東京都)
    B   120   次郎(埼玉県)
    C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)

      ↓

    A   100   太郎  東京都
    B   120   次郎  埼玉県
    C   110   一郎  沖縄
    C   110   二郎  熊本
    C   110   三郎  愛媛

    正規化なんですね。

    つまり、逆変換すると非正規化データを正規化データにすることになるのです。

    従って、今回の質問の変換は、[正規化→非正規化]変換になるのです。

    というわけで、[正規化→非正規化]変換はリレーショナル操作(結合表)ではないというわけです。

    繰り返しますが、[正規化→非正規化]変換が間違っているとか、正しくないと言っているのではありません。

    当然こういうニーズはあるでしょう。

    でも、リレーショナル操作(結合表)では無いんですよ。

    だから、結合表では作れないのですよ。


    <蛇足>

    > 例)
    > A店 A-1
    > A店 A-2
    > A店 A-3
    > A店 A-4
    > A店 A-5
    > B店 B-1
    > C店 C-1
    > C店 C-2
    >
    > ↓
    >
    > A店 A-1,A-2,A-3,A-4,A-5
    > B店 B-1
    > C店 C-1,C-2
    >
    > と変更したいと考えております。

    > ■7848  Re[1]: 複数行のデータを1つにまとめたい
    > □投稿者/ 通りすがり -(2014/03/01(Sat) 23:59:38)
    >
    > これ、データベースの処理じゃないから、近道ないです
    > 普通に地道に行ってください
    >
    > 一括処理で
    > 並べ替えて先頭レコードから、文字列変数に、項目値と","を加えて行きます
    > 店名が変わったら、書き込んで、変数リセット

    ちなみに、7847 のスレッドでも、

    「データベースの処理じゃないから、近道ないです」と看破した意見が述べられていました。

    まさにその通りで、結合表では出来ないのです。

    ただし、コンマ区切り等では、事前処理を行う条件付で、[併合]の操作[連結]で可能でした。

    しかし、これはコンマ区切り等に限定される操作で、なんでもかんでも[併合]の操作[連結]で行けるわけではありません。



引用返信 [メール受信/OFF] 削除キー/
■10986 / inTopicNo.8)  Re[5]: 複数行を1つにまとめるpert2
□投稿者/ ONnoji -(2018/03/29(Thu) 09:00:42)
    2018/03/29(Thu) 09:03:13 編集(投稿者)

    > 一応、一括処理のリストを掲げておきます。※一本道のプログラムは変更が面倒で実用性が乏しいので掲載しません。

    WBS( Work Breakdown Structure )で示すと↓以下の通り。

    1 一括処理(メイン)

    └ 1.1 prc同名処理
      │
      └ 1.1.1 prcテキスト出力

    ↑上のリンク(呼び出し)関係は判りますが、部品化の雰囲気が乏しいので、

    ↓以下のようにモジュール(プロシージャ)を表現してみます。

     メイン・モジュール
     ┌ 一括処理(メイン)
     │
     │ → モジュールA
     │
     └

     モジュールA
     ┌ prc同名処理
     │
     │ → モジュールB
     └

     モジュールB
     ┌ prcテキスト出力
     │
     │
     └

    ↑上を見た時にモジュール(プロシージャ)が部品のように見えれば成功です。

    そして、モジュール(プロシージャ)分割しないで一本道の場合には、

    ↓以下のようになります。

    ┌ 一括処理(メイン)

    │┌ ** 同名処理
    ││
    ││┌ ** テキスト出力
    │││
    │││
    ││└
    ││
    │└



    ↑上を見ると判るように、モジュール(プロシージャ)分割しない場合には、

    複数の機能が重なっていて、複雑さが軽減されないので、プログラムの読み易さは最悪です。

    また、全体がひとつの部品になっているので、部分的な変更でも全体に影響します。

    そして、部品化されていないので、部品を流用することもできません。

    だから、モジュール(プロシージャ)化してプログラムを作成するべきなのです。


    【引用】モジュール 出典: フリー百科事典『ウィキペディア(Wikipedia)』
    モジュール(英: module)とは、工学などにおける設計上の概念で、システムを構成する要素となるもの。いくつかの部品的機能を集め、まとまりのある機能を持った部品のこと。
    モジュールに従っているものをモジュラー (英: modular)という。

    入出力を絞り込み、標準化することで、システム開発を「すり合わせ」から「モジュールの組合わせ」にすることができる[1]。

    ■ソフトウェア
    プログラミングにおいて、一連の機能をひとまとまりになる複数の機能:モジュールに分割し、それぞれ別に開発する場合がある。
    こうすることで、全体として完成を早めることができる上、
    モジュール単位でテストしたりすることが可能になり、モジュールの入れ替えで機能を高めたり補修したりすることができるようになる。

    プログラムのモジュールは、できるだけ他のモジュールとの結合度を弱めて、独立性を高めることが望ましい。

    モジュールは、(一般に凝集した)サブルーチンとデータ構造の集合体としてのソフトウェアの実体である。
    モジュールはその部分だけでコンパイル可能な単位でもあり、
    再利用可能であると同時に、複数のプログラマが同時並行的にそれぞれ異なるモジュールの開発を行うことが可能となる。
    モジュールの特徴として「モジュール性」とカプセル化があり、それらによって複雑なプログラムを理解しやすくできる。

    モジュールはインタフェースと実装を分離する。
    モジュールのインターフェイスはそのモジュールが外部に提供すべき要素とそのモジュールが必要とする要素を表している。
    実装はそのインターフェイスで提供するよう定義された機能を実際に実現するコードを含む。
    モジュールの概念を明示的にサポートする言語として、Ada、D言語、F言語、FORTRAN、Pascal、ML、Modula-2、Python、Ruby などがある。

    ■モジュール性
    モジュール性(Modularity)はプログラムの属性であり、モジュールによって構成される範囲の程度を示すものである。
    プログラミングにおけるモジュラーアプローチは人工知能システム構築で一般化しつつある。
    大規模人工知能システムは特定の機能を持つモジュールを組み合わせて構成され、各モジュールが相互に通信することでシステム全体としての動作を決定する。

    プログラム内の任意の2つの部分が相互に関連することが多い場合、そのようなコードはモジュール性が低い。
    一方モジュール間のインターフェイスがきちんと定義されていて、それ以外の相互の関連が存在しないプログラムコードは、モジュール性が高いと言える。

    モジュラープログラミングはモジュール性を高める技法である。

    ■モジュールとクラス
    モジュールとクラスの違いは以下の通りである。

    ・クラスにはインスタンスとしてオブジェクトを生成する機能がある。
    ・クラスは他のクラスの動作やデータを継承することができる。
    ・ポリモーフィズムにより、クラスのインスタンス間の関係は実行時に変化するが、モジュール間の関係は静的である。

    モジュールとクラスの類似点は以下の通りである。

    ・どちらも実装の詳細を外部から隠蔽する。
    ・どちらも階層(モジュール階層とクラス階層)を形成することができる。


引用返信 [メール受信/OFF] 削除キー/
■10987 / inTopicNo.9)  Re[6]: 複数行を1つにまとめるpert2
□投稿者/ kided -(2018/03/30(Fri) 00:23:38)
    ONnojiさま
    お返事遅くなり申し訳ありません。
    ご丁寧な解説ありがとうございます。

    一括処理のプログラムはよくわからないんですが・・・。

    > これ、データベースの処理じゃないから、近道ないです

    というのが気になって質問させていただきました。


    > つまり、逆変換すると非正規化データを正規化データにすることになるのです。

    > 従って、今回の質問の変換は、[正規化→非正規化]変換になるのです。

    > というわけで、[正規化→非正規化]変換はリレーショナル操作(結合表)ではないというわけです。

    > 繰り返しますが、[正規化→非正規化]変換が間違っているとか、正しくないと言っているのではありません。


    データの持ち方が逆ということでよろしいのでしょうか?



    TBLの定義を

    A   100   太郎  東京都
    B   120   次郎  埼玉県
    C   110   一郎  沖縄
    C   110   二郎  熊本
    C   110   三郎  愛媛

    にするということですか?

    もしそうだとすれば、上記のようなデータの持たせ方をすれば結合表で

    A   100   太郎(東京都)
    B   120   次郎(埼玉県)
    C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)

    は可能なんですか?

    年間に数十件のこういった作業があるため、一括処理や会話処理をしないで
    結合表でできるようにしたいと思いまして再度質問します。
引用返信 [メール受信/OFF] 削除キー/
■10988 / inTopicNo.10)  Re[2]: 複数行を1つにまとめるpert2
□投稿者/ kided -(2018/03/30(Fri) 00:24:12)
    まさやんさま
    お返事遅くなり申し訳ありません。
    ご丁寧な解説ありがとうございます。

    サンプルデータを研究してみます。

    桐は、会話処理で殆どの事が出来てしまい便利に使っているのですが、一括やイベントまではまだ良く判りません。

    勉強します。


引用返信 [メール受信/OFF] 削除キー/
■10989 / inTopicNo.11)  Re[7]: 複数行を1つにまとめるpert2
□投稿者/ kided -(2018/03/30(Fri) 00:34:33)

    サンプルデータ動かしてみました。
    物件1view.tblのようにデータ入力していく必要があるんですね。

引用返信 [メール受信/OFF] 削除キー/
■10990 / inTopicNo.12)  Re[8]: 複数行を1つにまとめるpert2
□投稿者/ ONnoji -(2018/03/30(Fri) 01:16:21)
    2018/03/30(Fri) 09:02:23 編集(投稿者)
    2018/03/30(Fri) 01:41:44 編集(投稿者)
    2018/03/30(Fri) 01:32:22 編集(投稿者)

    > 一括処理のプログラムはよくわからないんですが・・・。
    >
    >>これ、データベースの処理じゃないから、近道ないです
    >
    > というのが気になって質問させていただきました。
    >
    >>つまり、逆変換すると非正規化データを正規化データにすることになるのです。
    >
    >>従って、今回の質問の変換は、[正規化→非正規化]変換になるのです。
    >
    >>というわけで、[正規化→非正規化]変換はリレーショナル操作(結合表)ではないというわけです。
    >
    >>繰り返しますが、[正規化→非正規化]変換が間違っているとか、正しくないと言っているのではありません。
    >
    > データの持ち方が逆ということでよろしいのでしょうか?

    全然違います。

    結合表での操作では出来ないと言う事を、逆側から証明したのです。

    > TBLの定義を
    >
    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄
    > C   110   二郎  熊本
    > C   110   三郎  愛媛
    >
    > にするということですか?
    >
    > もしそうだとすれば、上記のようなデータの持たせ方をすれば結合表で
    >
    > A   100   太郎(東京都)
    > B   120   次郎(埼玉県)
    > C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)
    >
    > は可能なんですか?

    結合表だけでは、絶対に出来ません。

    併合ならば可能です。

    すでに、回答した以下の内容と同じです。

    > ■7849  Re[1]: 複数行のデータを1つにまとめたい
    > □投稿者/ 尾形 -(2014/03/02(Sun) 07:02:22)
    >
    > どうも、こんにちは
    >
    > 併合コマンドに「連結」指定があるようです

    ※一括処理の必要はありません。会話処理でも可能。

    事前にデータの末尾にコンマを付けておく

     A店 A-1, ← コンマを追加
     A店 A-2,
     A店 A-3,
     A店 A-4,
     A店 A-5,
     B店 B-1,
     C店 C-1,
     C店 C-2,

     ↓ 単純に[挿入置換]で併合、ただし操作は[連結]

     A店 A-1,A-2,A-3,A-4,A-5,
     B店 B-1,
     C店 C-1,C-2,

     ↓ 末尾のコンマを削除

     A店 A-1,A-2,A-3,A-4,A-5
     B店 B-1
     C店 C-1,C-2

    コンマ( , ) が濁点( 、 )に変わるというところが違いです。

    > 年間に数十件のこういった作業があるため、一括処理や会話処理をしないで
    > 結合表でできるようにしたいと思いまして再度質問します。

    何度再質問されても、[結合表では出来ません]というお答えしかできません。


    > サンプルデータ動かしてみました。
    > 物件1view.tblのようにデータ入力していく必要があるんですね。

    サンプルでは、表でしたが、実際には 物件1.VIW を使ってください。

    しかし、貴殿は一括処理が苦手とのことなので、

    併合を使用して、

    > A   100   太郎  東京都
    > B   120   次郎  埼玉県
    > C   110   一郎  沖縄
    > C   110   二郎  熊本
    > C   110   三郎  愛媛

     ↓

    > A   100   太郎(東京都)
    > B   120   次郎(埼玉県)
    > C   110   一郎(沖縄)、二郎(熊本)、三郎(愛媛)

    の結果を求めることをお勧めします。


    <追伸>

    本件は、

    ○ 一括処理    タブ区切りテキストを出力して、別の表に読み込む
    ○ 会話処理:併合 ただし、濁点区切り等に限ります。
    × 結合表     不可能です

    です。

    データの持ち方は、貴殿の方でお考えになるものです。

    ただし、どのようにデータを持っても、貴殿が求める「複数行を1つにまとめる」という結果は結合では得られないです。

    これが、「データベースの処理じゃないから、近道ないです」という表現になっていたのです。

    結合表に関する再質問は堂々巡りになるので、これで打ち切りとしてください。

    よろしくお願いいたします。m(__)m


引用返信 [メール受信/OFF] 削除キー/
■10991 / inTopicNo.13)  Re[9]: 複数行を1つにまとめるpert2
□投稿者/ kided -(2018/03/30(Fri) 10:30:25)
    ONnojiさん

    できないものはできない
    という端的なアドバイスありがとうございます。

    これで打ち切ります。

    貴重なお時間をお割きいただきありがとうございました。
引用返信 [メール受信/OFF] 削除キー/
■10992 / inTopicNo.14)  Re[1]: 複数行を1つにまとめるpert2
□投稿者/ 尾形 -(2018/03/30(Fri) 12:28:25)
    どうも、こんにちは

    > 共有者.TBL
    > 共有C 氏名 所有者C 構成者
    > 30 一郎ほか2名 40 一郎
    > 30 一郎ほか2名 50 二郎
    > 30 一郎ほか2名 60 三郎

    この構成だと、共有者.tblで、レコード特定できる方法がないので
    [共有No]みたいな項目を追加して


    > 物件2.VIW
    > 物件 面積 所有者1 住所1 所有者2 住所2 所有者3 住所3
    > A 100 太郎 東京都
    > B 120 次郎 埼玉県
    > C 110 一郎 沖縄 二郎 熊本 三郎 愛媛

    物件2.viwの定義は [所有者] [共有者1] [共有者2]
    「所有者」と「共有者」で定義分けして

    viwの
    絞り込み条件1に [共有No]=1
    絞り込み条件2に [共有No]=2
    絞り込み条件3に [共有No]=3

    こんな感じだとできそうな気もします

    ただ、MAX共有者数分だけ、viw項目定義が必要かな



引用返信 [メール受信/OFF] 削除キー/
■10993 / inTopicNo.15)  Re[2]: 複数行を1つにまとめるpert2
□投稿者/ 尾形 -(2018/03/30(Fri) 13:02:23)
    すいません、一部訂正と補足です

    > viwの
    > 絞り込み条件1に [共有No]=1
    > 絞り込み条件2に [共有No]=2
    > 絞り込み条件3に [共有No]=3


    共有者.tblは、MAX共有者数分だけ多重結合で

    絞り込み条件1に、
    ["共有者.tbl".共有No]=1
    ["共有者.tbl:<1>".共有No]=2
    ["共有者.tbl:<2>".共有No]=3

    こんな感じでいけるのではないかと


引用返信 [メール受信/OFF] 削除キー/
■10994 / inTopicNo.16)  Re[3]: 複数行を1つにまとめるpert2
□投稿者/ 尾形 -(2018/03/31(Sat) 03:42:50)
    桐の結合表って分かりにくいですね
    サンプル付けてみました (展開結合.viwを開きます)


    絞り込み条件は、結合後の絞り込みみたいなので
    絞込用のviwがいるのね


    売上伝票ヘッダに、売上明細の1行目を表示する
    とかの応用なので、個人的には「データベースの処理ではない」
    とまでは言えないような気もします


1522435370.zip
/23KB
引用返信 [メール受信/OFF] 削除キー/
■10999 / inTopicNo.17)  Re[2]: 複数行を1つにまとめるpert2
□投稿者/ 鳴瀬 -(2018/04/01(Sun) 18:46:38)
    > 共有者.TBL
    > 共有C 氏名 所有者C 構成者
    > 30 一郎ほか2名 40 一郎
    > 30 一郎ほか2名 50 二郎
    > 30 一郎ほか2名 60 三郎

    物件の所有者が複数いる場合での共有者の一覧を
    縦持ち形式で保持しているファイルですか?
    (所有者が一人の場合はこのファイルには記載しない。所有者.TBLで管理すると理解しました。)

    併合でも結合でもこれを横持ちの形式
    30 一郎 二郎 三郎
    の形にいかにして直すかが肝だと思います。

    転置集計でも集計関数として #項目値 が使えれば簡単なのにと,いつも思っています。
    管理工学さん,どうなんでしょうか?

    緒方さんがおっしゃる通り
    >この構成だと、共有者.tblで、レコード特定できる方法がないので
    >[共有No]みたいな項目を追加して
    が必要だと思います。

    この改変のもとで私も結合表を作ってみました。
    なお,元々も表の項目名や項目値を変えてあります。注意してくださ。

1522575998.zip
/22KB
引用返信 [メール受信/OFF] 削除キー/
■11000 / inTopicNo.18)  Re[3]: 複数行を1つにまとめるpert2
□投稿者/ 鳴瀬 -(2018/04/02(Mon) 10:09:58)
    No10999に返信(鳴瀬さんの記事)
    1つの物件を共有所有する人数が3人以下を想定して作成しましたが
    所有数が2人の場合には期待通りにならない欠陥がありました。
    1つの物件を所有(共有)する人数は与えられた3つの表内の項目値を参照するだけではわかりませんので”共有者.TBL”を行集計した結果を書き出した表”共有者(行集計).TBL”を作成して,これも使うように改変しました。
    多分,これでOkだと思います。

1522631398.zip
/26KB
引用返信 [メール受信/OFF] 削除キー/
■11001 / inTopicNo.19)  Re[4]: 複数行を1つにまとめるpert2
□投稿者/ 鳴瀬 -(2018/04/02(Mon) 12:35:02)
    度々申し訳ございません。
    viwの結合条件を少し変えました。#11000は無視してください。
    ついでに最大4人対応にしてみました。

1522640102.zip
/25KB
引用返信 [メール受信/OFF] 削除キー/
■11003 / inTopicNo.20)  Re[1]: 複数行を1つにまとめるpert2
□投稿者/ 通りすがり -(2018/04/07(Sat) 12:31:09)
    複数値フィールド:
    MSaccessでは、Access2007よりシェアポイントリストと連携の必要性から複数値フィールドが実装されました
    その実態は、Accessの中の人がコッソリ、正規化された隠しテーブルから項目値毎にクロス集計クエリを作って、それらを選択クエリでつなげるもの
    Access2007からデータベースエンジンが一新されて、その専用高速処理が可能になったとか
    
    それでもな、複数値フィールドはお粗末で、
    ちょっと複雑なDB設計をすると破綻する、
    項目値を限定された候補リストから選ぶ入力が良く、項目値の種類が増えると実用的でない
    結局、殆ど使われてない、使えない
    
    1.
    今回の件では、無理に1行に纏めずに物件ごとにカード型フォームで見るのが良いんじゃないのかな
    常道オススメ
    
    2.
    もしくは、共有者情報をあえて正規化せずに下記のようにメモ書きにする
    (データ分割の必要に備えて、規則性をもって入力)
    物件と所有者は1対1対応だからテーブル分けない方が良いです
    ↓↓
    
    
    物件.TBL
    物件ID	物件名	面積	所有者	住所	共有CD
    1	A	100	太郎	東京都	2		
    2	B 	120	次郎	埼玉県	null
    3	C	110	一郎	沖縄県	null
    
    
    共有情報.TBL
    共有ID	共有情報
    1	安倍晋三:日本国総理大臣
    2	二郎:熊本県、三郎:愛媛県、エリカ:東京都:スゲー美人
    
    
    まあ、別に共有情報もTBL分けなくても良いんだけど	

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



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

このトピックに書きこむ

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

Mode/  Pass/

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

- Child Tree -
- Antispam Version -