Страница 1 из 2

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

Добавлено: 11 июн 2010, 13:36
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, но либо смотрю не туда, либо требуемых примеров нет.


Заранее спасибо,
Василий

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

Добавлено: 14 июн 2010, 04:24
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)
Спасибо.

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

Добавлено: 26 авг 2010, 06:15
Vasiliy Goncharenko
Спасибо, подключился.

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

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


Спасибо.

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

Добавлено: 27 авг 2010, 10:15
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)
Спасибо.

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

Добавлено: 27 авг 2010, 11:45
Vasiliy Goncharenko
Алексей, спасибо за скорый ответ.

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

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

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

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

Добавлено: 28 авг 2010, 08:08
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. В этом случае дизайнер отчетов при старте автоматически выполнит синхронизацию мета-описаний источников данных и передаваемых данных. Также будут созданы мета-описания связей между источниками данных.

Спасибо.

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

Добавлено: 30 авг 2010, 03:57
Vasiliy Goncharenko
Web-app, Designer 2010.7, VB.Net

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

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

Мой код:

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

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

Спасибо

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

Добавлено: 30 авг 2010, 08:40
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;
}
Спасибо.

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

Добавлено: 30 авг 2010, 13:03
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) данные считывались в отчет без проблем.
Подскажите что упущено в новом коде?

Спасибо

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

Добавлено: 31 авг 2010, 12:13
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
Спасибо.