VB.Net - соединение к MS SQL Server вместо XML

Обсуждение Stimulsoft Reports.WEB
Vasiliy Goncharenko
Сообщения: 53
Зарегистрирован: 11 июн 2010, 11:14

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Vasiliy Goncharenko »

VB.Net. Новичок. Скачал Stimulsoft Reports Web Trial. Обалденный продукт, очень нравится.

Беру пример в \Samples\VB.Net\WebDesignerVB\Default.aspx.vb.
Как мне заменить подключение к данным через XML на подключение через строку соединения к MSSQL?
data.ReadXmlSchema(applicationDirectory + "\\Data\\Demo.xsd")
data.ReadXml(applicationDirectory + "\\Data\\Demo.xml")

Где вообще можно черпать примеры вызовов?
Скачал документацию на Stimulsoft Reports Web, но либо смотрю не туда, либо требуемых примеров нет.


Заранее спасибо,
Василий
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Vladimir »

Здравствуйте,

О том, как подключаться к MSSQL базам данных, подробно изложено в документации Microsoft, т.к. используются стандартные способы подключения. Ниже мы привели для вас простой код, позволяющий получить все колонки и строки данных из указанной таблицы:

Код: Выделить всё

Dim conn As New SqlConnection(General.ConnString)
Dim sql As String = "SELECT * FROM Employees"
Dim ds As New DataSet()
Dim da As New SqlDataAdapter(sql, conn)
da.Fill(ds)
Спасибо.
Vasiliy Goncharenko
Сообщения: 53
Зарегистрирован: 11 июн 2010, 11:14

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Vasiliy Goncharenko »

Спасибо, подключился.

Использовал "MyReport.Dictionary.DataSources.Add"

Кстати, а как можно проверить - добавлен в моем отчете DataSource с определенным именем или нет?
У меня получаются дублирующиеся DataSource.
Изображение


Спасибо.
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Aleksey »

Здравствуйте,

Вы можете использовать следующий код:

Код: Выделить всё

        For Each datasource As Stimulsoft.Report.Dictionary.StiDataSource In report.Dictionary.DataSources
            If datasource.Name  ds.DataSetName Then
                report.RegData("SQL", ds)
            End If
        Next
        report.Render(False)
Спасибо.
Vasiliy Goncharenko
Сообщения: 53
Зарегистрирован: 11 июн 2010, 11:14

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Vasiliy Goncharenko »

Алексей, спасибо за скорый ответ.

Я начинающий и много вопросов возникает по ходу выполнения задач.
Чтоб снизить нагрузку на поддержку у меня вопрос - где я могу прочитать детальное описание назначения методов и примеры их использования?
В StiReport.chm нет примеров использвания классов.

Например у меня "каша" и разных проб и ошибок в попытках регистрации нескольких "DataSources".
Я использовал "Dictionary.DataSources.Add", а сейчас вы открыли для меня использование "RegData" (который я еще не пробовал).
В чем разница между "RegData" и "Dictionary.DataSources.Add"? Или это абсолютно разные методы?

Есть ли примеры правильного кодирования Stimulsoft Reports?
Моя текущая задача - дать пользователю работающему с данными из MS SQL Server DB список доступных таблиц (со связями) и полей при создании нового или редактировании существующего отчета.
Затратил массу времени, но прогресс слабенький.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Jan »

Здравствуйте,
Я начинающий и много вопросов возникает по ходу выполнения задач.
Чтоб снизить нагрузку на поддержку у меня вопрос - где я могу прочитать детальное описание назначения методов и примеры их использования?
В StiReport.chm нет примеров использвания классов.
Посмотрите developer FAQ, который доступен в разделе Documentation на нашем сайте. Также стоит поискать ответы на вопросы по нашим форумам, там накоплена достаточно большая база знаний.
Например у меня "каша" и разных проб и ошибок в попытках регистрации нескольких "DataSources".
Я использовал "Dictionary.DataSources.Add", а сейчас вы открыли для меня использование "RegData" (который я еще не пробовал).
В чем разница между "RegData" и "Dictionary.DataSources.Add"? Или это абсолютно разные методы?
Dictionary.DataSources это коллекция мета-описаний источников данных в отчете. Это то, что Вы видите в словаре данных в дизайнере отчетов. Метод RegData регистрирует данных из программы в хранилище данных отчета. Они не становятся автоматически доступны в словаре данных отчета. Нужно произвести синхронизацию данных между словарем данных и хранилищем данных. Мета-описания источников не изменяются автоматически с изменением данных в хранилище данных. Т.е. нужна синхронизация при изменении данных. Такое раздельное хранение нужно для того, чтобы можно было осуществлять редактирование отчета без наличия реальных данных.
Есть ли примеры правильного кодирования Stimulsoft Reports?
Моя текущая задача - дать пользователю работающему с данными из MS SQL Server DB список доступных таблиц (со связями) и полей при создании нового или редактировании существующего отчета.
В данном случае, Вам проще всего сформировать DataSet в Вашей программе и потом передать их в отчет при помощи метода RegData. В этом случае дизайнер отчетов при старте автоматически выполнит синхронизацию мета-описаний источников данных и передаваемых данных. Также будут созданы мета-описания связей между источниками данных.

Спасибо.
Vasiliy Goncharenko
Сообщения: 53
Зарегистрирован: 11 июн 2010, 11:14

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Vasiliy Goncharenko »

Web-app, Designer 2010.7, VB.Net

Сделал как советовали - использую DataSet.
Представление таблиц, полей и связей работает замечательно - как и требуется.

Проблема - Data Source помечен крестиком и данные не доступны. Когда пытаюсь сгенерить отчет, выдается пустая страница.
Изображение

Мой код:

Код: Выделить всё

	Dim MyDB_DS As DataSet = ...
	MyReport.RegData(MyDB_DS)
	StiWebDesigner1.Design(MyReport)
Вопрос: что я упустил, как мне подсоединиться к данным и сгенерить отчет?

Спасибо
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Aleksey »

Здравствуйте,

Есть два пути, чтобы сгенерировать отчет:

1. Добавить новое соединение к базе, используя следующий код:

Код: Выделить всё

string connString = "Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True";
StiSqlDatabase database = new StiSqlDatabase(dataset.DataSetName, connString);
report.Dictionary.Databases.Clear();
report.Dictionary.Databases.Add(database);
2. Подключение данных непосредственно в отчете, в событии GetPreviewDataSet:

Код: Выделить всё

protected void StiWebDesigner1_GetPreviewDataSet(object sender, StiWebDesigner.StiPreviewDataSetEventArgs e)
{
    string appDirectory = HttpContext.Current.Server.MapPath(string.Empty);

    DataSet data = new DataSet();
    data.ReadXml(appDirectory + "\\Data\\Demo.xml");
    data.ReadXmlSchema(appDirectory + "\\Data\\Demo.xsd");

    e.PreviewDataSet = data;
}
Спасибо.
Vasiliy Goncharenko
Сообщения: 53
Зарегистрирован: 11 июн 2010, 11:14

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Vasiliy Goncharenko »

Спасибо за быстрый ответ.

Использовал совет №1, добавил новое соединение к базе.
Крестик пропал, но когда прогоняю отчет, получаю пустую страницу, как словно данные не считываются с базки.

Мой код:

Код: Выделить всё

	Dim MyReport_DB As New StiSqlDatabase("EazyQA_Aces", "EazyQA_Aces", ConnectionString, False)
	MyReport.Dictionary.Databases.Clear()
	MyReport.Dictionary.Databases.Add(MyReport_DB)
Ранее, с несколько другим кодом (Databases.Add + DataSources.Add + Connect + SynchronizeColumns + Connect) данные считывались в отчет без проблем.
Подскажите что упущено в новом коде?

Спасибо
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

VB.Net - соединение к MS SQL Server вместо XML

Сообщение Aleksey »

Здравствуйте,

Для Web вам нужно еще использовать событие GetPreviewDataSet(), в котором заполнять датасет:

Код: Выделить всё

Protected Sub StiWebDesigner1_GetPreviewDataSet1(ByVal sender As Object, ByVal e As Stimulsoft.Report.Web.StiWebDesigner.StiPreviewDataSetEventArgs) Handles StiWebDesigner1.GetPreviewDataSet

        Dim dataSet As New DataSet()
        ...
        e.PreviewDataSet = dataSet
End Sub
Спасибо.
Ответить