2013-12-16 26 views
0

我有一個vb.net代碼,如下所示:我正在研究vb.net windows窗體,試圖執行包含3個子報告的水晶報告..我給出了我這樣的代碼:在執行水晶報告時,vb .net中的索引超出範圍

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))

收到錯誤是這樣的: 指數超出範圍。必須是非負數且小於集合的大小。 參數名:指數 什麼是錯我的代碼,,如果有知道的請幫我找出

回答

0

如果你說你有3子報表,那麼你的報表指標爲0,1和2。所以沒有索引3,這就是爲什麼你得到錯誤。它應該是

rpt.Subreports(0) 
rpt.Subreports(1) 
rpt.Subreports(2)