PUSHモードテンプレート招式

8570 ワード

新しいAspを作成します.Net CrystalReportsのWebサイト
次のインタフェースをポップアップしたら、2番目の項目-空白レポートとして選択し、確認して空白インタフェースに入ります.
新規データセット
このプロンプトが表示されたら、「はい」をクリックします.
そして、データベースに接続するヒントも出てきます.インタフェースに何のヒントもないまで、一律にいいえ.
このインタフェースで、右クリックして、myTableという名前のdatatableを追加します.
それからmyTableに対応する列を追加して、私のここには3つの列があって、タイプを設定することに注意します.
特に、クリスタルレポートにはdatatime型が認識されていないため、2009-06-26 9:23:15に対して2009-06-26に自動的に切り捨てられるので、datatime型データはxsdファイルでstring型に設定でき、コードのSQLでフィールドをStringに変換して入力することができます.
xsdの設計が完了すると、レポートテンプレートの設計段階に入ります.
「≪データベース・フィールド|Database Fields|Eas≫」を右クリックし、「≪データベース・エキスパート|Database Experts|Eas≫」を選択します.
またポップアップされたインタフェースで、「プロジェクトデータ」をクリックして、順番にクリックして、私たちがさっき自分で作ったmytableを見つけます.
確定すると、「データベース・エキスパート」の下にテーブル名mytableが表示され、クリックするとフィールドが表示されます.
フィールドをテンプレートの詳細セクションにドラッグすると、ベーステンプレートの作成が完了します.
プレビューをクリックすると、実際のデータ操作はありませんが、インタフェースにデータがあります.
これは水晶レポートの仮想データで、最終的に表示される効果を見ることができます.
はい、コードをつけます.
C# code

   
     
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Web; using System.Data.OleDb; public partial class _Default : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { ConfigureCrystalReports(); } private void ConfigureCrystalReports() { // String connstr = @" Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\CrZen\testall.mdb; " ; OleDbDataAdapter da = new OleDbDataAdapter(); OleDbConnection cn = new OleDbConnection(connstr); // da = new OleDbDataAdapter( " SELECT * From RPT_CR_TEST1 " , cn); // DataSet1 DataSet1 dt1 = new DataSet1(); // dt1 // : mytable xsd 。 // RPT_CR_TEST1, mytable // PUSH , SQL // ( SQL as xsd ) da.Fill(dt1, " mytable " ); ReportDocument myReport = new ReportDocument(); string reportPath = Server.MapPath( " crystalreport1.rpt " ); myReport.Load(reportPath); // , , 。 myReport.SetDataSource(dt1); CrystalReportViewer1.ReportSource = myReport; } }

そして運転すればいいです.
ここで説明しますが、「プッシュ間」でこのxsdを言わなかったのは、当時詳細な操作が話されていなかったからです.話しても分かりにくい.このxsd、私达自身が构造したので、比喩をしましょう:xsdは1つの棚にたとえて、それは水晶のレポートを支えることを担当して、しかし空で、内容がなくて私达はPUSHモードを使って、データをそれに詰めて、棚をいっぱい詰めて、このように水晶のレポートも効果を现すことができます
よくある質問:
1:レポートは表示できますが、データがありません.
一般的には以下のような状況があります
a:確かにテーブルにデータがありません
b:da.Fill(dt1, "mytable");テーブル名はxsdで設計されたテーブルと一致しません
c:複数のテーブルを使用している場合は、テーブルのデフォルトの関連関係によりデータがない可能性があります.
2:ページをめくったり、印刷したり、エクスポートしたりするときに、データベース・ソースに再接続する必要があるため、次の図のヒントが表示されます.
a:マルチテーブルの場合、一部のテーブルに値が割り当てられていない可能性があります.
クリスタル・レポートには、データがなくても使用する各テーブルを検証する必要があります.なければ、空のレコードセットを渡してもいいです.
b:コードはPage_に置かれていませんLoadまたはPage_Initに入れたり、入れたりしましたがpostbackを制御しました.
httpは無状態なので、postbackを制御すると水晶レポートの前の設定が失われ、このような状況になります.