执行crystal report时,vb.net中的索引超出范围
我有这样一个vb.net代码:我正在处理vb.net windows窗体,试图执行包含3个子报表的crystal report。我给出的代码如下:执行crystal report时,vb.net中的索引超出范围,vb.net,crystal-reports,Vb.net,Crystal Reports,我有这样一个vb.net代码:我正在处理vb.net windows窗体,试图执行包含3个子报表的crystal report。我给出的代码如下: Dim locid As Integer = RecordID("Locid", "Location_tbl", "LocName", CmbLocations.Text) Dim ptime As Integer = TxtTime.Text 'ViolatedRequested Dim cmd23
Dim locid As Integer = RecordID("Locid", "Location_tbl", "LocName", CmbLocations.Text)
Dim ptime As Integer = TxtTime.Text
'ViolatedRequested
Dim cmd23 As New SqlCommand("IBS_Delivarysummaryviolatedrequested", con.connect)
cmd23.CommandType = CommandType.StoredProcedure
cmd23.Parameters.Add("@locid", SqlDbType.Int).Value = locid
cmd23.Parameters.Add("@time", SqlDbType.Int).Value = ptime
da.SelectCommand = cmd23
da.Fill(ds)
Dim rpt As New DelivarySummerystatuswiserpt
' If (ds.Tables(0).Rows.Count > 0) Then
rpt.SetDataSource(ds.Tables(0))
' CrystalReportViewer1.ReportSource = rpt
' End If
'requested
Dim cmdreqstd As New SqlCommand("IBS_Delivarysummaryrequested", con.connect)
cmdreqstd.CommandType = CommandType.StoredProcedure
cmdreqstd.Parameters.Add("@locid", SqlDbType.Int).Value = locid
cmdreqstd.Parameters.Add("@time", SqlDbType.Int).Value = ptime
da.SelectCommand = cmdreqstd
da.Fill(ds1)
rpt.Subreports(1).SetDataSource(ds1.Tables(0))
' CrystalReportViewer1.ReportSource = rpt
'' Parked
Dim cmdparked As New SqlCommand("IBS_Delivarysummaryparked", con.connect)
cmdparked.CommandType = CommandType.StoredProcedure
cmdparked.Parameters.Add("@locid", SqlDbType.Int).Value = locid
da.SelectCommand = cmdparked
da.Fill(ds2)
rpt.Subreports(2).SetDataSource(ds2.Tables(0))
' CrystalReportViewer1.ReportSource = rpt
'violated Detaild
Dim cmdvolatedDetaild As New SqlCommand("IBS_DelivarysummaryviolateDetaild", con.connect)
cmdvolatedDetaild.CommandType = CommandType.StoredProcedure
cmdvolatedDetaild.Parameters.Add("@locid", SqlDbType.Int).Value = locid
cmdvolatedDetaild.Parameters.Add("@time", SqlDbType.Int).Value = ptime
da.SelectCommand = cmdvolatedDetaild
da.Fill(ds3)
If (ds3.Tables(0).Rows.Count > 0) Then
rpt.Subreports(3).SetDataSource(ds3.Tables(0))
CrystalReportViewer1.ReportSource = rpt
End If
执行时,我在此行中遇到错误rpt.Subreports(3).SetDataSource(ds3.Tables(0))
获取如下错误:
索引超出范围。必须为非负数且小于集合的大小。
参数名称:索引
我的代码有什么问题,如果有人知道,请帮助我找出如果你说你有3个子报表,那么你的子报表索引是0、1和2。所以没有索引3,这就是为什么会出现错误。应该是
rpt.Subreports(0)
rpt.Subreports(1)
rpt.Subreports(2)