5 返信 最新の回答 日時: Nov 20, 2013 11:58 PM ユーザー:株式会社アネビー

    フォーム形式で表を埋め込みたいのですが?

    株式会社アネビー

      タイトル

      フォーム形式で表を埋め込みたいのですが?

      フォーラムに投稿

           製品DBを作成し、「製品コード」または「製品名」を検索項目として、

           その検索項目の下に検索された製品の詳細情報表形式で表示したと思っています。

           検索は上記2項目のAND条件で各項目は前方一致で検索したいと思います。

           ポータルを使用して可能かと思い試してみたのですが、リレーションを作成しなくていけないため、

           前方一致の検索ができませんでした。

           また下記機能の実装も考えています。

           1.製品検索時にある区分の製品を検索対象外にする

           2.検索した一覧に中から1製品を選択し、選択した製品製品コードで、製品の入出庫明細を検索し

           入出庫数を合計するような処理も実装する予定です。

           何かうまい方法あれば、ご教示ください。

            

        • 1. Re: フォーム形式で表を埋め込みたいのですが?
          Shin

               検索を行なって対象を絞り込み、表示するしか無いでしょう。

               前方一致にしないといけないようなゆれのある入力ではDBの構築は難しいですよ。コードで完全運用するなどの、運用の変更を考えられるべきでしょう。

          • 2. Re: フォーム形式で表を埋め込みたいのですが?
            sago350@未来Switch
                 コードに意味があって、前方から絞り込みたいのでしょうか。
                 いくつか方法があります。
                 私が考えつくものとしては下記3つです。
                  
            1)リレーションで行うパターン
            2)スクリプトで通常の検索をして結果を表示させるパターン
            3)ポータルフィルタを使うパターン
                  
                  
            1)について
                 リレーションのキーに成るように
                 MS-06という型番がある場合は下記のような計算フィールドを用意しておいて、そのフィールドに対してリレーションをかけます。
                 ---------
                 M
                 MS
                 MS-
                 MS-0
                 MS-06
                 ---------
                 古くからある手法かと思います。
                  
            2)について
                 検索項目の値で検索して、検索結果である対象レコードのリレーションのキーと成る値をポータルを表示させる為のリレーションキーになるフィールドに入れます。
                 検索結果が下記のような場合は
                 ---------
                 2 MS-06
                 8 MSN-06S
                 9 MS-08
                 ---------
                 2,8,9の値をポータルを表示させるためのフィールドに改行区切りで入れます。
                 そうすると、絞りこまれた形で出ますよね。
                  
                  
            3)について
                 サンプルファイルを作ったので参照下さい。
                 ポータルフィルタの機能を使って、下記のような計算式を埋め込んでいます。
                 ------------------------------------------------
                 Let([
                 %製品CD = M製品::製品コード ;
                 %製品名 = M製品::製品名 ;
                 %検索|製品CD = 検索フォーム::製品コード ;
                 %検索|製品名 = 検索フォーム::製品名 ;
                  
                 %検索|文字数|製品CD = Length ( %検索|製品CD ) ;
                 %検索|文字数|製品名 = Length ( %検索|製品名 ) ;
                 %検索文字|製品CD = Left ( %製品CD ; %検索|文字数|製品CD ) ;
                 %検索文字|製品名 = Left ( %製品名 ; %検索|文字数|製品名 ) 
                  
                 ];
                 Case(
                 %検索文字|製品CD = %検索|製品CD and 
                 %検索文字|製品名 = %検索|製品名 ; 1 ;
                 0
                 )
                  
                 )
                 ------------------------------------------------
                 簡単に言うと、Left関数で左から検索項目に入力した文字数分だけ削り取って比較しています。
                  
            • 3. Re: フォーム形式で表を埋め込みたいのですが?
              株式会社アネビー
                   アドバイスありがとうございます。
                    
                   1)にて実装を試してみましたが、「リレーションシップ編集」で
                   計算フィールドで設定(1桁、2桁、3桁・・・10桁)してリレーションをはったのですが、
                   各桁数との条件はAND条件となり、検索できません。
                   OR条件なら検索できると思いますが、
                   OR条件の設定ができません。方法が誤っているのでしょうか?
                    
              3)について
                   「Left関数で左から検索項目に入力した文字数分だけ削り取って比較しています」の
                   の仕組みはわかるのですが、サンプルの計算式の内容は初心者の私には勉強不足で
                   理解できませんでした。
                   参考に教えていただきたのですが、「%」の意味はなんでしょうか?
                   マニュアルにも記載ありませんでした。
                   また、LET関数を使用する意味もわかりません。
                   勉強不足で申し訳けございません。
              • 4. Re: フォーム形式で表を埋め込みたいのですが?
                sago350@未来Switch

                     ■1)について
                     フィールドを分けるとandになるので、1つのフィールドに改行区切りで値を入れます。

                     ■Let関数を使用する意味
                     Let関数を使用しなくても実現は出来ますが、計算式が今より複雑になってしまうのです。
                     計算式をスッキリ見易くする為に使っています。

                     ■%について
                     これは私がLet関数を見易くする為につけている記号です。
                     Let関数は計算式内で変数を定義する関数です。
                     %から始まる箇所は、Let関数で定義した変数です。
                     これが無いと、変数かフィールド名か解り難いので付けています。ですので、★でも▲でもOKです。
                      

                • 5. Re: フォーム形式で表を埋め込みたいのですが?
                  株式会社アネビー

                       ありがとうございます。

                       あれからいろいろネット検索し、改行を入れて解決しました。

                       このような手法(テクニック)はマニュアルや書籍には記載してないので、

                       ネットおよび試行錯誤がたよりです。