Передача параметров диапазона дат из приложения Windows vb.net - PullRequest
0 голосов
/ 06 февраля 2012

Мне нужно передать параметры диапазона дат в отчет Crystal из приложения vb.net, но я не знаю, как это сделать. Для тех, кто может мне помочь, пожалуйста, опирайтесь на следующий сценарий:

У меня есть отчет о кристаллах, который извлекает данные из базы данных оракула. В базе данных у меня есть таблица студентов, и у каждой записи есть дата рождения, имя и фамилия. Мне нужно отображать в отчете только записи, где дата рождения находится между датой X и датой Y, включая обе. Дата X и Дата Y - это даты, переданные приложению vb.net при открытии отчета. Я использую Crystal Reports 9, Visual Studio 2008 и Oracle 9i.

Кто-нибудь, пожалуйста, помогите мне, как мне этого добиться?

Ответы [ 5 ]

0 голосов
/ 21 апреля 2014
string rang1 = Session["Rang1"].ToString();
            string rang2 = Session["Rang2"].ToString(); ;

            ReportDocument obj = new ReportDocument();
            obj.Load(Server.MapPath("~/CType_CrystalReport.rpt"));
            obj.SetDatabaseLogon("sa", "12qwaszx", "BTS-10", "BTS_ERP");
            ParameterFields paraf = new ParameterFields();
            ParameterField par = new ParameterField();
            ParameterField par2 = new ParameterField();
         par.ParameterFieldName = "CtCode";

            ParameterDiscreteValue dcpara1 = new ParameterDiscreteValue();
            ParameterDiscreteValue dcpara2 = new ParameterDiscreteValue();
            par.Name = rang1;
            par2.Name = rang2;

            dcpara1.Value = rang1.ToString();
            par.CurrentValues.Add(dcpara1);
            paraf.Add(par);


            dcpara2.Value = rang2.ToString();
            par2.CurrentValues.Add(dcpara2);
            paraf.Add(par2);



            CrystalReportViewer1.ParameterFieldInfo = paraf;
            obj.SetParameterValue("CtCode", dcpara1);
            obj.SetParameterValue("CtCode", dcpara2);
            CType_DataSet dsCustomers = GetData("select * from GL_CUSTTYPE where CT_CODE between '" + rang1.ToString() + "' AND '" + rang2.ToString() + "' ");
            obj.SetDataSource(dsCustomers);

            CrystalReportViewer1.ReportSource = obj;
            CrystalReportViewer1.RefreshReport();
0 голосов
/ 25 ноября 2013

Достаточно будет только 2 линии

rptSummary.SetParameterValue("your report perameter name", your value 1st value)
rptSummary.SetParameterValue("your report perameter name", your value 2nd value)

Вот и все.

0 голосов
/ 04 марта 2013

Просто создайте отчет Crystal с необходимыми параметрами и создайте кнопку, datetimepicker для от даты и до даты в с.

введите код для нажатия кнопки.

отлично работает для меня ..............

Если какие-либо ошибки изменить ..

Спасибо, Q

* * 1010
0 голосов
/ 06 апреля 2013
Imports CrystalDecisions.CrystalReports.Engine  
Imports CrystalDecisions.Shared

Dim crtableLogoninfos As New CrystalDecisions.Shared.TableLogOnInfos()
Dim crtableLogoninfo As New CrystalDecisions.Shared.TableLogOnInfo()
Dim crConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo()
Dim crit As String
Dim CrTables As Tables
Dim CrTable As Table
reportdocument.Load(Server.MapPath("~/Reports/IssueReport.rpt"))
CrTables = reportdocument.Database.Tables
 For Each CrTable In CrTables
     crtableLogoninfo = CrTable.LogOnInfo
    crtableLogoninfo.ConnectionInfo = crConnectionInfo
    CrTable.ApplyLogOnInfo(crtableLogoninfo)
     CrTable.Location = crConnectionInfo.DatabaseName & ".dbo." & CrTable.Location.Substring(CrTable.Location.LastIndexOf(".") + 1)
  Next
 Crit = "{tablename.fieldname}>=#" & Format(CDate(txtfromdate.Text), "yyyy/MM/dd") & "#"
    Crit = Crit & " and {tablename.fieldname} <=#" & Format(CDate(txtto.Text),      "yyyy/MM/dd") & "#"
  reportdocument.RecordSelectionFormula = Crit
    CrystalReportViewer1.ReportSource = reportdocument
    CrystalReportViewer1.RefreshReport()
0 голосов
/ 08 февраля 2012

Предполагая, что ваш Crystal Report привязан к команде SQL, скажите:

SELECT name, surname FROM students WHERE birthdate BETWEEN {?@pDate1} AND {?@pDate2}

Из VB.NET вам нужно передать параметры, как показано ниже:

Private rptSummary As New ReportDocument()

Protected Sub Page_Init(sender As Object, e As EventArgs)
    Try
        Dim pFields As New ParameterFields()
        Dim pField_Date1 As New ParameterField()
        Dim pField_Date2 As New ParameterField()
        Dim pDiscreteValue_Date1 As New ParameterDiscreteValue()
        Dim pDiscreteValue_Date2 As New ParameterDiscreteValue()

        Dim ApplPath As String = Server.MapPath("MyReport.rpt")
        rptSummary.FileName = ApplPath
        pField_Date1.Name = "@pDate1"
        pField_Date2.Name = "@pDate2"

        Dim BirthDate1, BirthDate2

        ' Parameter: @pDate1 

        pDiscreteValue_Date1.Value = BirthDate1
        pField_Date1.CurrentValues.Add(pDiscreteValue_Date1)
        pFields.Add(pField_Date1)

        ' Parameter: @pDate2 

        pDiscreteValue_Date2.Value = BirthDate2
        pField_Date2.CurrentValues.Add(pDiscreteValue_Date2)
        pFields.Add(pFieldDate2)

        CrystalReportViewer1.ParameterFieldInfo = pFields
        rptSummary.SetParameterValue(0, pDiscreteValue_Date1)
        rptSummary.SetParameterValue(1, pDiscreteValue_Date2)
        CrystalReportViewer1.ReportSource = rptSummary
    Catch ex As Exception

    End Try
End Sub

Этот код изначально находится в ASP.NET с C #. Я преобразовал его в VB.NET. Пожалуйста, исправьте все расхождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...