0

2つの日付の間に買い物をしたクライアントを検索したいと思います。私が使用しているコードは問題ないようで、エラーは返されませんが、CRはすべてを返します-日付検索機能を使用していません。私が使用するCRは、CRを開いて正常に動作する単純なプログラムでテストされています。データベースはmsaccessであり、コードはVisualStudio2005にあります

私が抱えている2番目の問題は、接続情報の部分を使用しているにもかかわらず、コードPSを要求することです。書式が正しくないことをお詫びします。stackoverflowが初めてで、投稿するのが難しいと思います。ありがとうございます。-Agisilaos

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Form1
    Dim crConnectionInfo As New ConnectionInfo()


 Private Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click

   Dim cryRpt As New ReportDocument


cryRpt = New CrystalDecisions.CrystalReports.Engine.ReportDocument
        cryRpt.Load("C:\Users\agis\Documents\Visual Studio 2005\Projects\new_contracts     _of_month\new_contracts _of_month\CrystalReport2.rpt",     CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)


With crConnectionInfo
        .ServerName = "C:\Users\agis\Desktop\Insurance database\Insurancemanager.mdb"
        .UserID = "Admin"
        .Password = "kos"
        .DatabaseName = "insurancemanager"
    End With

     'first parameter
    Dim crParameterFieldDefinitions As ParameterFieldDefinitions
    Dim crParameterFieldDefinition As ParameterFieldDefinition
    Dim crParameterValues As New ParameterValues
    Dim crParameterDiscreteValue As New ParameterDiscreteValue
    crParameterDiscreteValue.Value = Convert.ToDateTime(TextBox1.Text) 

    crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
    crParameterFieldDefinition = crParameterFieldDefinitions.Item("startdate")
    crParameterValues = crParameterFieldDefinition.CurrentValues
    crParameterValues.Add(crParameterDiscreteValue)
    crParameterValues.Clear()

    ' second parameter : 
    Dim crParameterFieldDefinitions2 As ParameterFieldDefinitions
    Dim crParameterFieldDefinition2 As ParameterFieldDefinition
    Dim crParameterValues2 As New ParameterValues
    Dim crParameterDiscreteValue2 As New ParameterDiscreteValue
    crParameterDiscreteValue2.Value = Convert.ToDateTime(TextBox2.Text)
    TextBox3.Text += "   " + crParameterDiscreteValue2.Value 
    crParameterFieldDefinitions2 = cryRpt.DataDefinition.ParameterFields
    crParameterFieldDefinition2 = crParameterFieldDefinitions2.Item("enddate")
    crParameterValues2 = crParameterFieldDefinition2.CurrentValues
    crParameterValues2.Clear()


    crParameterValues2.Add(crParameterDiscreteValue2)
    crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
    crParameterFieldDefinition2.ApplyCurrentValues(crParameterValues2)
     CrystalReportViewer1.ReportSource = cryRpt
    CrystalReportViewer1.Refresh()
End Sub




    End Class
4

1 に答える 1

0

問題が正確に何であるかはわかりませんが、レポートにパラメーターを渡し、それらのパラメーターでレポートデータをフィルター処理する場合は、CrystalReportの実行時接続設定も設定する必要があると思います。

まず、レポートにパラメーターフィールドを作成します(パラメーターフィールドを右クリックし、Crystal Designerで追加をクリックします)。次に、Visual Studio CrystalReportDesignerの[CrystalReport]->[Report]-> [Select Expert]メニューに移動し、これらのパラメーターを使用してデータフィルター条件を設定します。田畑。レポートにパラメータを渡すには、次のようなパラメータ名と値を使用します

cryRpt.ParameterFields("parametername").CurrentValues.AddValue(objVal)
cryRpt.ParameterFields("fromdatetime").CurrentValues.AddValue(Now)

ms accessデータベースのサーバー名を設定する必要はありません。データベースファイルのdsnを作成し、そのdsnをレポートで使用することで、データファイルが欠落していない限り、レポートがデータベースファイルを要求しないようにすることができます。プログラムでdsnを作成することもできます。実行時に必要に応じて、サーバーデータベースのパスワードのようなSQLを設定し、実行時にログインするかどうかをお知らせください。

repDoc.DataSourceConnections(0).SetLogon("usrID","psw")                        
repDoc.DataSourceConnections(0).IntegratedSecurity = False
于 2012-10-30T11:18:48.617 に答える