- - PR -
crystal report による出力について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-03-20 19:21
初投稿です。よろしくお願いします。
ASP.NET(言語はVB.NET)、Crystal Report9 でクリスタルレポートに帳票の印刷を任せようとしているのですが、「年月」によって表示する内容が変わるWebフォームにおいて、ユーザが指定したWebフォーム上の「年月」の帳票を作るといった、ユーザの操作で表示する内容を変更させる必要があるのです。 今試している方法はCrystal Report の選択エキスパートを使って、パラメータフィールドで指定した離散値と等しい値という条件で抽出して表示させようとしています。 そこで、パラメータフィールドで指定する離散値にユーザが指定する「年月」をいれるような記述をしたいのです。 ヘルプを見てParameterDiscreteValue クラスというところで離散値を追加する例が書いてあるのですが、それをそのまま貼っても、ParameterValuesやParameterDiscreteValueといったところが型の定義がされていないといわれてしまいます。 何か最初に宣言する必要があるのでしょうか? また、パラメータ以外でも他に同様のユーザの操作(但し、クリスタルレポート上ではなくフォーム上での操作)で帳票の表示内容を変更させる方法をご存知でしたらぜび教えていただければと思います。 -Helpより---------------------------------------------------------------- ParameterDiscreteValue [Visual Basic] Public Class ParameterDiscreteValue Inherits ParameterValue 例 次の例は、ParameterValues コレクションに離散値を追加する方法を示しています。この関数は、離散値、および ParameterValues コレクションをとります。そして、追加された新しい値を含む ParameterValues コレクションを返します。 [Visual Basic] Private Function AddDiscreteValue(ByVal paramValue As String, _ ByVal paramValues As ParameterValues) As ParameterValues Dim paramDiscreteValue As New ParameterDiscreteValue() ' パラメータに離散値を設定します。 paramDiscreteValue.Value = paramValue paramValues.Add(paramDiscreteValue) AddDiscreteValue = paramValues End Function | ||||||||
|
投稿日時: 2003-03-25 00:12
KATSU System Designの鈴木です。
CrystalDecisions.Shared をimport(?)してありますか? (C# で言うところのusing) CrystalDecisions.Shared.ParameterDiscreteValue CrystalDecisions.Shared.ParameterValue
dataSetを生成して、SetDataSourceでdataSetを渡すとか | ||||||||
|
投稿日時: 2003-03-26 01:26
返答ありがとうございます。
CrystalDecisions.Sharedは参照設定に追加されているようです。 DataSetを作成して渡す方法はDataSet上ではちゃんと年月でソートされていることをDataGridで確認した上で、それをCrystalReportに渡してCrystalReportViewerで表示すると年月のソートが無効となりすべてデータが表示されてしまっています。 | ||||||||
|
投稿日時: 2003-03-26 09:25
KATSU System Designの鈴木です。
(VB.NET使いではないのでちょっと自信ないですが...) Importsステートメントを陽に記述したらどうでしょうか? Imports CrystalDecisions.Shared
すみません。内容を汲み取ることができませんでした。 dataSetを生成する際に、条件による抽出(where)、並び替え(order by)が済んでいれば そのまま問題なく渡せると思うのですが・・・ CrystalReport側で並び替えが再度行われているとかなんてことありませんか? [ メッセージ編集済み 編集者: KATSU 編集日時 2003-03-26 09:26 ] | ||||||||
|
投稿日時: 2003-03-30 06:54
再びおせわになります。
インポートの記述をしてみました所、定義されていないというエラーはでなくなりました。 思ったようなところまではまだ行ってませんが… やはりCrystalReport側で並び替えなおされているようです。 これがどこで設定されているかわかればなんとかなりそうなのですが… さらに調べてみます。 | ||||||||
|
投稿日時: 2003-04-15 22:29
自己レスです。
CrystalReportを並びかえられる問題は無事クリアできました。 しかし肝心の印刷の段階に進むとPrintToPrinterのところで何故か 「ログオンに失敗しました。」とエラーがでてしまいます。 一度上の行でCrystalReportを呼び出しているのですが… どこに原因があるのがわかりません。 ご存知でしたらどなたかアドバイスをお願いします。 -------------------------------------------------------------- Dim monthdata As New String(TargetTime) Report.SetDataSource(objDataSet) ' パラメータをビューア コントロールに渡すために必要な変数を宣言します。 Dim paramFields As New ParameterFields() Dim paramField As New ParameterField() Dim discreteVal As New ParameterDiscreteValue() ' パラメータは、複数の値を持つ離散型のパラメータです。 ' パラメータ フィールドの名前を設定します。この名前は 'レポートのパラメータと一致している必要があります。 paramField.ParameterFieldName = "確定年月" ' 最初の離散値を設定し、パラメータに渡します。 'discreteVal.Value = "2003/02" discreteVal.Value = monthdata paramField.CurrentValues.Add(discreteVal) ' パラメータ フィールドのコレクションにパラメータを追加します。 paramFields.Add(paramField) ' パラメータ フィールドのコレクションをビューア コントロールに設定します。 CrystalReportViewer.ParameterFieldInfo = paramFields CrystalReportViewer.ReportSource = Report CrystalReportViewer.LogOnInfo.Item("tablename").ConnectionInfo.ServerName = "name" CrystalReportViewer.LogOnInfo.Item("tablename").ConnectionInfo.Password = "pass" CrystalReportViewer.ParameterFieldInfo.Item(0).ParameterFieldName = Report.Parameter_ParameterSelect.ParameterFieldName '表示するレポートをリフレッシュします。 CrystalReportViewer.RefreshReport() ' プリンタを選択します。 Report.PrintOptions.PrinterName = printerName ' レポートを印刷します。startPageN および endPageN ' パラメータを 0 に設定し、すべてのページを印刷します。 Report.PrintToPrinter(1, False, 0, 0) | ||||||||
|
投稿日時: 2003-04-16 00:58
KATSU System Designの鈴木です。
利用しているデータベースと接続方法が不明なので断言できませんが、 ---過去ログ--- 投稿者 KOUさんの 件名:CrystalReportViewerの使い方 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1572&forum=7&start=0 のスレッドが参考になるのではないかと思います。(たぶん・・・)
のあたりとか。 ※追記です。 もしかして、上記のスレッドはもう参照されていられるのかな? (ごめんなさい)C#のコーディングですが、 -------------------------------------------------------- crDatabase = rpt1.Database; crTables = crDatabase.Tables; crConnectionInfo = new ConnectionInfo(); crConnectionInfo.ServerName =""; crConnectionInfo.DatabaseName = ""; crConnectionInfo.UserID = "User"; crConnectionInfo.Password = "Pwd"; foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables) { crTableLogOnInfo = aTable.LogOnInfo; crTableLogOnInfo.ConnectionInfo = crConnectionInfo; aTable.ApplyLogOnInfo(crTableLogOnInfo); } -------------------------------------------------------- こんな感じでやってます。 データベースによっては crConnectionInfo.ServerName =""; crConnectionInfo.DatabaseName = ""; なんてあたりがミソだったり、 すべてのテーブルにログイン情報が必要だったりします。 [ メッセージ編集済み 編集者: KATSU 編集日時 2003-04-16 01:28 ] | ||||||||
1
