من خودم اول با کوئری که میخوام یدونه datatable می سازم بعد پاسش میدم به گزارش. البته توی گزارش هم dataTable مشابه با همون فیلدها ساختم
نمونه کد:
Dim StiReport1 As New Stimulsoft.Report.StiReport()
StiReport1.Load(Application.StartupPath & "/Reports/Rep1.mrt")
dt = SQLTools.RunSQL("select * from tblMain", Me.CString)
در اینجا منظور از Me.CString همون کانکشن استرینگی هست که به دیتابیس وصل میشید.
در آخرین مرحله دیتاتیبل رو وصل می کنیم به گزارش
StiReport1.Dictionary.DataSources.Items(0).DataTab le = dt
StiReport1.RegData("DataSource1", dt)
و در نهایت تابعی که کوئری رو میگیره و دیتاتیبل میده:
Public Shared Function RunSQL(ByVal sql As String, ByVal cnnStr As String) As DataTable
Dim selectConnection As New SqlConnection(cnnStr)
Using connection2 As SqlConnection = selectConnection
Dim adapter As New SqlDataAdapter(sql, selectConnection)
If (Not adapter.SelectCommand Is Nothing) Then
adapter.SelectCommand.CommandTimeout = selectConnection.ConnectionTimeout
End If
Dim dataTable As New DataTable
Try
selectConnection.Open()
adapter.Fill(dataTable)
Catch exception As Exception
MessageBox.Show(exception.Message, "خطاي ارتباط با پايگاه داده", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
End Try
selectConnection.Close()
Return dataTable
End Using
End Function