メニュー
人気記事
//前のレコードと社員情報が一致しない場合にTrueを返すCrystal構文 WhilePrintingRecords; //<前方>社員情報が存在しない? and <後方>社員情報が一致しない? // しない/false and ×(評価できない) false // する/true and する/false false // する/true and しない/true true (PreviousIsNull({社員情報}) = false) and ({社員情報} <> Previous({社員情報}));
//次のレコードと社員情報が一致しない場合にTrueを返すCrystal構文 WhilePrintingRecords; //<前方>社員情報が存在しない? and <後方>社員情報が一致しない? // しない/false and ×(評価できない) false // する/true and する/false false // する/true and しない/true true (NextIsNull({社員情報}) = false) and ({社員情報} <> Next({社員情報}));
//最初のレコードのとき変数cntを0で初期化する。 //そうでない場合、cntをインクリメントする。 numberVar cnt; if OnFirstRecord then cnt := 0 else cnt := cnt+1;
//WhilePrintingReportsは必要ない Count({個人.名前})
@レコードカウンターのリセット//非表示にしておく。 WhilePrintingRecords; numberVar RecordCounter:=0; //詳細に以下の式フィールドを挿入 @レコードカウンター //非表示に・・・せんでもいいのかな。 WhilePrintingRecords; numberVar RecordCounter; RecordCounter := RecordCounter + 1;
WhilePrintingRecords; numberVar displayCount := 50; // 50件表示 Remainder(RecordNumber,displayCount) = 0 and RecordNumber <> @総レコード数;
WhilePrintingRecords; {グループで利用しているフィールド}=Previous({グループで利用しているフィールド})
WhilePrintingRecords; {グループで利用しているフィールド}=Next({グループで利用しているフィールド})
WhilePrintingRecords; OnLastRecord <> true;
WhileReadingRecords; // パラメーターフィールド"入力データ"の値が1であるとき、カラムAでグループ化します。それ以外のときはグループ化しません。 If {?入力データ} = 1 Then {テーブル.カラムA} Else ""
//@グループ内件数 Count({※1},{※2}); //※1 カウント対象のフィールド名、今回は単にレコードの件数を確認したいのでどのフィールドが対象でもかまわない。 //※2 グループ化するフィールド名
WhilePrintingRecords; (PageNumber = 1) or (PageNumber = TotalPageCount);
//ページヘッダーに以下の式フィールドを挿入 @合計のリセット//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue:=0; //詳細に以下の式フィールドを挿入(合計をカウントする場所なので詳細とは限らない) @合計のカウント//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue; ToltalValue := ToltalValue +{値} //ページフッターに以下の式フィールドを挿入 @合計の出力 WhilePrintingRecords; numberVar ToltalValue;
WhilePrintingRecords; PageNumber <> TotalPageCount;
// @行数の初期化 ページヘッダーに挿入する WhilePrintingRecords; numberVar line := 0; // @行数のカウント 詳細に挿入する WhilePrintingRecords; numberVar line; line := line + 1; // 改ページ条件 詳細の「出力後に改ページ」の条件式に記述する WhilePrintingRecords; numberVar line; line = X // Xは表示したい行数
WhilePrintingRecords; "文字列の" + "連結"; // 文字列の連結
Replace("abcabcabc", "b", "a"); // aacaacaac // 変換を複数回行いたい場合は一度変数に格納する方が無難である。 stringVar str; str := Replace("abcabcabc", "b", "a"); // aacaacaac Replace(str, "c", " a"); // aaaaaaaaa
//10桁になるまで0を埋め込みたい //左側に埋め込む stringVar str; str := "123"; Right("0000000000" & str, 10); //0000000123 //右側に埋め込む Left(str & "0000000000", 10); //1230000000
WhilePrintingRecords; stringVar str; numberVar num; str := "文字列"; num := 123; // "文字列" と 数値123を文字列に変換して連結する str := str + ToText(num); // "文字列123"
WhilePrintingRecords; stringVar str; numberVar num; num := 123; // 小数点以下を表示しない str := CStr(num, 0);
Round(1.23456) //1 を返す //2番目の引数を指定した場合、指定した桁数で丸め込まれる。 Round(1.23456, 2) //1.23 を返す。
Remainder(12,5) //2 を返す。 Remainder(16,5) //1 を返す。
numberVar num := 0;
WhilePrintingRecords; //指定したフィールドの値が0なら小数点以下桁数を表示しない、0以外なら第2位まで表示 if {フィールド名} = 0 then 0 else 2; /////////////////////////////// WhilePrintingRecords; //指定したフィールドの値が小数点以下の値を含まないなら小数点以下を表示しない、含むなら第2位まで表示 if ({フィールド名} - RoundUp({フィールド名}, 0)) = 0 then 0 else 2;
@10文字単位で改行するフィールド WhilePrintingRecords; stringVar str; stringVar res; numberVar i; str := {文字列}; // 対象の文字列から1文字づつ抽出する。 for i := 1 to Length(str) step 1 do( res := res + str[i]; // 10文字単位で改行コード(chr(13) + chr(10))を埋め込む。 if Remainder(i,10) = 0 then res := res + chr(13) + chr(10) else res; ); stringVar res;
WhilePrintingRecords; If Isnull({フィールド}) = true then // 復帰文字(\r)に置き換える chr(13) else {フィールド}
//reportはレポートのインスタンス //VB.NET Dim intPages As Integer 'CrystalReportが返す全ページ数を得る intPages = report.FormatEngine.GetLastPageNumber(New CrystalDecisions.Shared.ReportPageRequestContext) //C#.NET CrystalDecisions.Shared.ReportPageRequestContext req = new CrystalDecisions.Shared.ReportPageRequestContext(); int intPages = report.FormatEngine.GetLastPageNumber(req);
CrystalDecisions.CrystalReports.Engine.TextObject txtObj; txtObj=rptObj.ReportDefinition.ReportObjects["フィールドオブジェクト名"] as CrystalDecisions.CrystalReports.Engine.TextObject; txtObj.Text = "なんちゃらかんちゃら";
//reportはレポート名 report.DataDefinition.FormulaFields.Item("式フィールド名").Text = "'なんちゃらかんちゃら'" //''で囲っていることに注意 //"なんちゃらかんちゃら"ではエラーとなる。 //数値の場合はそのままで大丈夫。
CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition field; field = rptObj.ReportDefinition.ReportObjects["フィールドオブジェクト名"] as CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition; field.Text = "なんちゃらかんちゃら"; // 条件に合致するフィールドを検索したい場合、以下のようにしてもOKよ。 foreach(CrystalDecisions.CrystalReports.Engine.FormulaFieldDefinition field in rptObj.DataDefinition.FormulaFields) { if(field.ValueType == CrystalDecisions.Shared.FieldValueType.StringField) { System.Console.Writeline(field.Text); } }
//@フラグ 1 //@動的グループ WhileReadingRecords; //←WhilePrintingRecordsでないことに注意 if {@フラグ} = 1 then {名前} else {住所}
//@フラグ 1 //@日付によるグループ WhileReadingRecords; //←WhilePrintingRecordsでないことに注意 if {@フラグ} = 1 then {名前} else ''
// rptObjはレポートオブジェクト rptObj.SetParameterValue("レポートタイトル", "クリレポチップス集");
// rptはレポートドキュメントオブジェクト SubreportObject subRptObj; subRptObj = rpt.ReportDefinition.ReportObjects["SubReport1"] as SubreportObject; ReportDocument subRpt = subRptObj.OpenSubreport(subRptObj.SubreportName); //又は以下のようにする。こっちの方がスマート SubreportObject subRptObj; subRptObj = rp.ReportDefinition.ReportObjects("SubReport1")
CrystalDecisions.CrystalReports.Engine.ReportDocument report; //絶対パスが無難 string path = Application.StartupPath + @"\report.rpt"; report.Load(path); //"ユーザ名,パスワード,サーバー名,データベース名の順 report.SetDatabaseLogon( "oraUser","oraPassword","oraSever","" ); report.Database.Tables[0].Location = "oraUser" + "." + report.Database.Tables[0].Location;
CrystalDecisions.CrystalReports.Engine.ReportDocument report; //絶対パスが無難 string path = Application.StartupPath + @"\report.rpt"; report.Load(path); TableLogOnInfo logOnInfo = new TableLogOnInfo(); logOnInfo = report.Database.Tables[ "Table1" ].LogOnInfo; ConnectionInfo connectionInfo = logOnInfo.ConnectionInfo; connectionInfo.DatabaseName = ""; connectionInfo.ServerName = oraServer connectionInfo.UserID = "oraUser"; connectionInfo.Password = "oraPassword"; report.Database.Tables[ "Table1" ].ApplyLogOnInfo( logOnInfo );
CrystalDecisions.CrystalReports.Engine.ReportDocument report; //絶対パスが無難 string path = Application.StartupPath + @"\report.rpt"; report.Load(path); report.DataSourceConnections[0].SetConnection( "oraServer", "","oraUser", "oraPassword" );
//表示する必要がないので非表示にしておく WhilePrintingRecords; ToText(TotalPageCount,0);
foreach (Control obj in crystalReportViewer1.Controls) { if (obj.GetType().Name == "PageView") { foreach (Control obj2 in obj.Controls) { if (obj2.GetType().Name == "TabControl") { ((TabControl)obj2).TabPages[0].Text = "変更後名"; } } } }
private void button1_Click(object sender, EventArgs e) { List<System.Windows.Forms.ToolStripLabel> lbls = new List<ToolStripLabel>(); // コントロールオブジェクトに分解 foreach (Control ctl in crystalReportViewer1.Controls) { // ツールバーを取得 if (ctl.GetType().Equals(typeof(System.Windows.Forms.ToolStrip))) { System.Windows.Forms.ToolStrip strip = (System.Windows.Forms.ToolStrip)ctl; // ツールバーをアイテムに分解 foreach (ToolStripItem item in strip.Items) { // ラベルを取得 if (item.GetType().Equals(typeof(System.Windows.Forms.ToolStripLabel))) { lbls.Add(item); } } } } Bitmap bmp = new Bitmap("logo.jpg"); lbls[1].BackgroundImage = bmp; // ラベルは2個あってそのうちの2番目がロゴを表示しているラベルです。 //lbls[1].Visible = false; }
foreach (Control ctl in crystalReportViewer1.Controls) { CrystalDecisions.Windows.Forms.PageView pv = ctl as CrystalDecisions.Windows.Forms.PageView; if (pv != null) { foreach (Control ctl2 in pv.Controls) { System.Windows.Forms.TabControl tabCtl = ctl2 as System.Windows.Forms.TabControl; if (tabCtl != null) { foreach (Control ctl3 in tabCtl.Controls) { CrystalDecisions.Windows.Forms.DocumentControl dc = ctl3 as CrystalDecisions.Windows.Forms.DocumentControl; if (dc != null) { dc.MouseWheel += new MouseEventHandler(dc_MouseWheel); } } } } } }
//1のサンプル System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(@"C:\xxx.jpg"); using (System.IO.MemoryStream st = new System.IO.MemoryStream()) { bmp.Save(st, System.Drawing.Imaging.ImageFormat.Png); byte[] bytes = new byte[st.Length]; bytes = st.ToArray(); row["列名"] = bytes; // rowはDataRowオブジェクト } //2のサンプル //rptはReportDocumentオブジェクト rpt.DataDefinition.FormulaFields.Item("式フィールド名").Text = @"'C:\xxx.jpg'" //3のサンプル System.IO.File.Copy(@"C:\org.jpg", @"C:\xxx.jpg"); // 画像保存場所に"C:\xxx.jpg"を指定しておく
// C#によるサンプル // ReaportDocumentオブジェクトの宣言 ReportFile rptObj = new ReportFile(); // ReportDocumentにデータをセット rptObj.SetDataSource( データセット ); // プリンタの設定 CrystalDecisions.CrystalReports.Engine.PrintOptions printOptions = rptObj.PrintOptions; // プリンタ名 printOptions.PrinterName = "EPSON ○○○"; // 用紙サイズ printOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4; // マージン(余白) CrystalDecisions.Shared.PageMargins margins; margins.leftMargin = 10; margins.rightMargin = 10; margins.topMargin = 20; margins.bottomMargin = 20; // マージンの適用 printOptions.ApplyPageMargins(margins); // 印刷(上記設定を行わない場合、デフォルトのプリンタ及びデフォルトの設定で印刷される) rptObj.PrintToPrinter(1, false, 0, 0);
[Visual Basic] Private Sub PrintReport(ByVal printerName As String) Dim margins As PageMargins ' PageMargins 構造体を取得し、 ' レポートの余白を設定します。 margins = Report.PrintOptions.PageMargins margins.bottomMargin = 350 margins.leftMargin = 350 margins.rightMargin = 350 margins.topMargin = 350 ' ページ余白を適用します。 Report.PrintOptions.ApplyPageMargins(margins) ' プリンタを選択します。 Report.PrintOptions.PrinterName = printerName ' レポートを印刷します。startPageN および endPageN ' パラメータを 0 に設定し、すべてのページを印刷します。 Report.PrintToPrinter(1, False, 0, 0) End Sub [C#] private void PrintReport(string printerName) { PageMargins margins; // PageMargins 構造体を取得し、 // レポートの余白を設定します。 margins = Report.PrintOptions.PageMargins; margins.bottomMargin = 350; margins.leftMargin = 350; margins.rightMargin = 350; margins.topMargin = 350; // ページ余白を適用します。 Report.PrintOptions.ApplyPageMargins(margins); // プリンタを選択します。 Report.PrintOptions.PrinterName = printerName; // レポートを印刷します。startPageN および endPageN // パラメータを 0 に設定し、すべてのページを印刷します。 Report.PrintToPrinter(1, false,0,0); } [C++] void PrintReport(String* printerName) { PageMargins margins; // PageMargins 構造体を取得し、 // レポートの余白を設定します。 margins = Report->PrintOptions->PageMargins; margins.bottomMargin = 350; margins.leftMargin = 350; margins.rightMargin = 350; margins.topMargin = 350; // ページ余白を適用します。 Report->PrintOptions->ApplyPageMargins(margins); // プリンタを選択します。 Report->PrintOptions->PrinterName = printerName; // レポートを印刷します。startPageN および endPageN // パラメータを 0 に設定し、すべてのページを印刷します。 Report->PrintToPrinter(1, false,0,0); };
//グループヘッダーに以下の式フィールドを挿入 @合計のリセット//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue:=0; //詳細に以下の式フィールドを挿入 @合計のカウント//非表示にしておく。 WhilePrintingRecords; numberVar ToltalValue; ToltalValue := ToltalValue +{非循環フィールド} //グループフッターに以下の式フィールドを挿入 @合計の出力 WhilePrintingRecords; numberVar ToltalValue;
//グループごとの積算合計を表示したい場合、以下のようにする。 //グループヘッダーに以下の式フィールドを挿入。 WhilePrintingRecords; CurrencyVar Amount := 0; //詳細に以下の式フィールドを挿入。 WhilePrintingRecords; CurrencyVar Amount; Amount := Amount +{価格} //グループフッターに以下の式フィールドを挿入 WhilePrintingRecords; CurrencyVar Amount;
// ページヘッダーに次のような式フィールドを挿入する。 @初期化 // 式フィールド名 numberVar count; // Globalな数値型変数countの使用を宣言する。 count := 0; // countに0を代入する。 // 詳細に次のような式フィールドを挿入する。 @インクリメント numberVar count; // Globalな数値型変数countの使用を宣言する。 //このcountは@初期化で宣言しているcountと同一のものであり、この時点ですでにcountには0が入っている。 count := count + 1; //countに0+1(=1)を代入する。 //詳細があるたびにcountは1ずつ増え、ページヘッダーでリセットされる。 //よって、countの役割は1ページ内のレコード数をカウントすることである。
C# OracleParameterクラスを使った例 string str = "パラメータデータ"; System.Data.OracleClient.OracleCommand command = new System.Data.OracleClient.OracleCommand(); // 変数名"PARAM1"、データ型"VARCHAR"、サイズ"20"でOracleParameterオブジェクト"parameter"を宣言 System.Data.OracleClient.OracleParameter parameter = new System.Data.OracleClient.OracleParameter( "PARAM1", OracleType.Char, 20 ); parameter.IsNullable = true; parameter.Value = str; command.Parameters.Add( parameter );
// "NOT NULL"制約を解除する場合 SQL> alter table PERSON modify ADDRESS varchar(50) null; // "NOT NULL"制約を付加する場合 SQL> alter table PERSON modify ADDRESS varchar(50) not null; //commitを忘れずに
//C# OracleParameterクラスを使った例 string str = "パラメータデータ"; System.Data.OracleClient.OracleCommand command = new System.Data.OracleClient.OracleCommand(); // 変数名"PARAM1"、データ型"VARCHAR"、サイズ"20"でOracleParameterオブジェクト"parameter"を宣言 System.Data.OracleClient.OracleParameter parameter = new System.Data.OracleClient.OracleParameter( "PARAM1", OracleType.Char, 20 ); parameter.IsNullable = true; parameter.Value = str; command.Parameters.Add( parameter );
このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー と 利用規約 が適用されます。
1文字以上入力してください
本文は少なくとも1文字以上必要です。
1文字以上入力してください。