0

У меня возникла проблема при показе отчета о кристалле с 2 подзаголовками. Оба подзаголовка вытягивают данные из хранимой процедуры.Добавить несколько наборов данных программно для подзаголовков VB.net

Все работает нормально во время разработки. Но во время выполнения Crystal Reports имеет ошибку, считая, что таблица не найдена (вторая таблица), и ничего не отображается в отчетах.

Это аналогичная проблема, которую я хочу, чтобы решить - Crystal Report for Income and Expense wth opening and closing balance

Это мой код - как хранимая процедура имеет один параметр datetime типа:

Dim DOF As Date = #4/1/2016# 
    DOF = Format(DOF, "dd/MM/yyyy") 

    Dim DOT As Date = #4/1/2016# ' Now.Date 
    DOT = Format(DOT, "dd/MM/yyyy") 

    Dim DS As Data.DataSet 
    Dim DA As SqlDataAdapter 
    Dim s_Sql As String 
    Dim s_sql2 As String 
    Dim cmd As SqlCommand 

    s_Sql = "sp_DailyIncome" 
    cmd = New SqlCommand(s_Sql, o_con) 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.Parameters.Add(New SqlParameter("@FDate", Format(DOF, "MM/dd/yyyy"))) 

    DA = New SqlDataAdapter 
    DA.SelectCommand = cmd 
    DS = New Data.DataSet 
    DA.Fill(DS, s_Sql) 
    cmd.Dispose() 

    s_sql2 = "sp_DailyExpense" 
    o_Cmd = New SqlCommand(s_sql2, o_con) 
    o_Cmd.CommandType = CommandType.StoredProcedure 
    o_Cmd.Parameters.Add(New SqlParameter("@FDate", Format(DOF, "MM/dd/yyyy"))) 


    DA.SelectCommand = o_Cmd 
    DA.Fill(DS, s_sql2) 


    Dim rptDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument 
    rptDoc = New rptDailyCashReport 
    rptDoc.DataDefinition.FormulaFields("SchoolName").Text = "'" & holdSchoolName & "'" 
    rptDoc.SetParameterValue("@FDate", DOF) 

    rptDoc.Subreports.Item(0).SetDataSource(DS.Tables(0)) 
    rptDoc.Subreports.Item(1).SetDataSource(DS.Tables(1)) 

    Dim objForm As New ShowReport 
    objForm.ViewReport(rptDoc, , "") 
    objForm.ShowDialog() 

и это ошибка: Error in Runtime

+0

Вы не наполняя DS1 набор данных, но вы назначаете его в качестве источника данных вашего подотчета –

+0

Пожалуйста, помогите мне получить эту проблему решить. Как ваш комментарий, как исправить мой код? @ F0r3v3r-A-N00b –

+0

проверьте, существует ли SP sp_DailyExpense. Может быть опечатка. –

ответ

0

вот как я открываю подзаголовок.

Dim mainReport As <Name of your report with crpt extension> 
Dim subReport As CrystalDecisions.CrystalReports.Engine.ReportDocument 
Dim subReport2 As CrystalDecisions.CrystalReports.Engine.ReportDocument 
subReport = mainReport.OpenSubReport(<name of your subreport as defined in your main report>) 
subReport2 = mainReport.OpenSubReport(<name of your second subreport as defined in your main report>) 
mainReport.SetDataSource(<your main report's datatable>) 
subReport.SetDataSource(<your datatable>) 
subReport2.SetDataSource(<your datatable 2>) 

reportViewer.ReportSource = mainReport 

или из кода

Dim rptDoc As New rptDailyCashReport 
Dim subReport1 As CrystalDecisions.CrystalReports.Engine.ReportDocument 
Dim subReport2 As CrystalDecisions.CrystalReports.Engine.ReportDocument 

subReport1 = rptDoc.OpenSubReport(<name of your sub report 1>) '<-- !! NAME IS CASE SENSITIVE 
subReport2 = rptDoc.OpenSubReport(<name of your second sub report>) 

subReport1.SetDataSource(DS.Tables(0)) 
subReport2.SetDataSource(DS.Tables(1)) 

' place this at the last part, before showing your report 
rptDoc.DataDefinition.FormulaFields("SchoolName").Text = "'" & holdSchoolName & "'" 
rptDoc.SetParameterValue("@FDate", DOF) 

Dim objForm As New ShowReport 
objForm.ViewReport(rptDoc, , "") 
objForm.ShowDialog() 
+0

Я думаю, что проблема начинается со второго Subreport в Runtime. Я отлаживал свой код vb, и он ясно показывает, что у моего набора данных есть две разные таблицы. Если я удалил один отчет из отчета о кристалле и связанный с ним код. Он начинает показывать данные во время выполнения (означает, что один из подрепортов отображается из любого из двух). –

+0

Если у вас несколько подписок, вы должны объявить переменную для каждого отчета, а также назначить источник данных для каждого из них. См. Мой обновленный ответ. –

+0

Я попробовал ваше предложение, но не работал для меня. Ниже приведена ссылка на Screnshot отладочного экрана. https://drive.google.com/file/d/0B7ov6zrs6eKCbTZhcFFXQ24zQUk/view?usp=sharing –

Смежные вопросы