none
CrystalReports の Group Expert に設定できる項目について RRS feed

  • 質問

  • Crystal Reports の Group Expert に設定できる項目について

    いつもお世話になっております。
    参考にさせていただいております。
    よろしくお願いします。

    【環境】

    ・VisualStadio2010(英語32bit)
    ・MicrosoftVisualC#2010
    ・Silverlight
    ・Telerik Q2
    ・Oracle10g
    ・CrystalReports2010β版(外国語)
    上記環境で帳票出力開発しております。
    CrystalReports初心者で英語の開発環境のため手間取っています。

    CrystalReportsで出力するのに必要な項目だけのViewを作成しました。

    Viewの項目を使用しGroup化して改ページ制御などを行いたいのですが下記エラーになります。

    --------------------------------------------------------------------
    Error
    This group section cannot be printed because its condition field is nonexistent or invalid. Format the section to choose another condition field. Error in File temp_7c5c196c-bdda-499f-a384-5f10a1973b42 {F965403A-8EF5-4719-BB08-FA4C699C5E70}.rpt: Invalid group condition.
    --------------------------------------------------------------------

    設定はGroupを追加し、 Field Explorer > Group Name Fields > Group Name Fields > Group Expert に行いました。

    同じViewの項目でも他の項目を設定するとGroup化できるものもあります。

          できる項目   できない項目
    型     NUMBER     VARCHAR
    NULL許容  OK       NG

    上記のような差異があったので
    Group化できない項目を
    TO_NUMBER(できない項目)にしてVIEWを作成したり、
    VIEW作成元のテーブルでNUMBER型・NULL許容OKに属性変更しましたがエラーになりました。

    Groupに指定できる項目(カラム)に条件(制約)があるのでしょうか?

    以上、ご教示いただきますようよろしくお願いいたします。

    2010年11月15日 4:25

回答

すべての返信

  • 2008ですが、varcharでも問題なくグループ化できますよ。

    エラーメッセージで判断するとセクションの非表示条件に問題があるようなきがしますけど、このまえのグループヘッダーの表示条件弄ったところは適切に変更してますか?

     

    #開発もとのフォーラム によると2010の正式版がでたっぽい?

     

    • 回答としてマーク penep2 2010年11月24日 10:14
    2010年11月15日 11:28
  • gekka様

    回答ありがとうございます。

    varcharでもグループ化できるのですね。
    2008でできるのなら2010β2版でもできそうです。

    現状といたしましては
    グループ化したい項目でグループ化ができないので
    改ページ制御の式などを入れない状態でテストしています。

    (Groupを追加し
    Field Explorer > Group Name Fields > Group Name Fields > Group Expert
    でグループ化したい項目を選択しただけの状態。
    エラーでなければ改ページはされないけど太字でグループ化に指定した項目の値が
    出力される想定でテストしています。)

    この状態でグループ化できる項目とできない項目があるので質問させていただきました。

    正式版情報ありがとうございます。
    15日に出ると聞いていたので探さなければと思っていました。

    移行がうまくいくか怖いのですがβ2版のバグかもしれないと思い入れ替えました。
    日本語が選択できたので少しは楽になりそうです。
    (Visual Studio が英語版なのを忘れて日本語を入れてしまったので大丈夫か心配ですが・・・)

    これからいろいろ試してみます。

    2010年11月16日 4:33
  • お世話になっております。

    遅くなり申し訳ありません。

    正式版への移行も無事終わりました。
    Visual Studio が英語版なので Crystal Reports も英語版にしました。
    しかしマシン自体が日本語のせいかCrystal Reports のところどころが
    日本語で表示されるようになりました。


    Group化できる項目・できない項目についてですが、
    項目の型に関係なく、varcharでもできました。

    プログラム側で以下のように記述していたのですが
    下から2行目をコメントにしたらグルーピングできるようになりました。

        CrystalReportXYZ _xyz = new CrystalReportXYZ();

        DataTable _Dt = new DataTable();
        _Dt.Columns.Add("ID");
        _Dt.Columns.Add("NAME");

           (省略)SQL文作成←このSQLはViewを使ったものではなく旧仕様のViewの元Tableを使用したSQLのままでした
           (中略)SQL発行

        OleDbDataReader _OleDbDataReader = OleCmd.ExecuteReader();

        while (_OleDbDataReader.Read())
        {
            _Dt.Rows.Add(new object[] {
                _OleDbDataReader["ID"]
                ,_OleDbDataReader["NAME"]
            });
        }

        //_xyz.SetDataSource(_Dt);                     ←この行をコメント
        CrystalReportViewer1.ReportSource = _xyz;


    CrystalReportXYZ.rptにはオラクルViewの項目をドラッグ&ドロップしたり
    Group Expert で Group Name Field を追加したり式フィールドを追加したりしていましたが、
    なぜこれで解決したのかわかりません。

    予想では
    クリレポ側でViewの項目を使用して制御仕様としているのに
    プログラム側からSetDataSourceで項目名がViewとは異なるDataTableがセットされて
    クリレポ側が『Viewにはそんな項目ないからGroup化できません』状態になったのだろうと解釈しました。

    確かにGroup化できる項目はSQLに記述があり取得していた項目で、
    Group化できない項目はSQLの取得項目にないものでした。

    この解釈で正しい?
    SetDataSourceの役割は?
    と疑問は残りますが、質問としては解決したものとさせていただきます。
    疑問については課題として勉強したいと思います。

    ありがとうございました。

    今後もよろしくお願いいたします。

     

    2010年11月24日 10:13