Инструмент бизнес-аналитики от компании Stimulsoft. Программное обеспечение для создания дашбордов и отчетов. Инструменты отчетности для любой платформы.
Protected Sub StiWebDesigner1_GetPreviewDataSet1(ByVal sender As Object, ByVal e As Stimulsoft.Report.Web.StiWebDesigner.StiPreviewDataSetEventArgs) Handles StiWebDesigner1.GetPreviewDataSet
Dim MyDB_DS As DataSet = SC.SCData.FillDataSet("SELECT * FROM Users SELECT * FROM V_QA_Tickets SELECT * FROM V_QA_TicketsResolution", MyConnectionString)
MyDB_DS.DataSetName = "EazyQA_Aces"
MyDB_DS.Tables(0).TableName = "Users"
MyDB_DS.Tables(1).TableName = "Tickets"
MyDB_DS.Tables(2).TableName = "Tickets Resolution"
MyDB_DS.Relations.Add("Tickets Resolution", MyDB_DS.Tables(1).Columns("TicketID"), MyDB_DS.Tables(2).Columns("TicketID"))
e.PreviewDataSet = MyDB_DS
End Sub
Protected Sub StiWebDesigner1_GetPreviewDataSet1(ByVal sender As Object, ByVal e As Stimulsoft.Report.Web.StiWebDesigner.StiPreviewDataSetEventArgs) Handles StiWebDesigner1.GetPreviewDataSet
Dim conn As New SqlConnection("Data Source=Alexey\LSK;Integrated Security=True;Initial Catalog=Demo")
Dim dataSet As New DataSet("SQL")
Dim dataTabl1 As New DataTable("Users")
Dim dataTabl2 As New DataTable("Tickets")
Dim dataTabl3 As New DataTable("Tickets Resolution")
Dim sql As String = "SELECT * FROM Users"
Dim command As New SqlCommand(sql, conn)
Dim da As New SqlDataAdapter
da.SelectCommand = command
da.Fill(dataTabl1)
sql = "SELECT * FROM V_QA_Tickets"
command.CommandText = sql
da.SelectCommand = command
da.Fill(dataTabl2)
sql = "SELECT * FROM V_QA_TicketsResolution"
command.CommandText = sql
da.SelectCommand = command
da.Fill(dataTabl3)
dataSet.Tables.Add(dataTabl1)
dataSet.Tables.Add(dataTabl2)
dataSet.Tables.Add(dataTabl3)
e.PreviewDataSet = dataSet
End Sub
Спасибо за детальный ответ.
А можно ли этот код сделать более универсальным, заполняемым из базки динамически?
Смотрите в чем идея.
Мы определяем доступные таблицы через базу данных, а не прошиваем жестко в коде. Причина - контроль доступных таблиц правами доступа пользователя.
Т.е. словарь в дизайнере контролируется из базы данных.
Наш текущий код для создания словаря дизайнера легко адаптируется под db-driven решение:
1. Читаем список таблиц и связей для дизайнера
2. Читаем каждую таблицу/relation, добавляем в словарь дизайнера.
Ваш код предполагает жесткое кодирование количества и имен таблиц в коде.
А как заполнять список данных динамически?