Ошибка в StiDataColumn...

Обсуждение Stimulsoft Reports.NET
Ответить
Stilux
Сообщения: 94
Зарегистрирован: 22 фев 2007, 09:02

Ошибка в StiDataColumn...

Сообщение Stilux »

Возникла необходимость сформировать полное имя источника для компонента, в формате Имя_датасета.Имя_таблицы.Имя_Колонки.
Делаю это следующим образом:
1. Получаю колонку источника по ссылке на него:

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

Dim dc As StiDataColumn = StiDataColumn.GetDataColumnFromColumnName(report.Dictionary, component.Text.Value)
2. Два варианта дающие разные результаты:
2.1.

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

  
            Dim dt As DataTable = dc.DataSource.DataTable
            Dim strFullName As String

            If dt.DataSet Is Nothing Then
                Throw New InvalidOperationException("Источник компонента, не является полем таблицы датасета.")
            Else
                strFullName = String.Format("{0}.{1}", dt.DataSet.DataSetName, dt.TableName)
            End If
            strFullName = String.Format("{0}.{1}", strFullName, dc.NameInSource)
2.2.

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

   
            Dim ds As StiDataTableSource = Ctype(dc.DataSource, StiDataTableSource)
            Dim strFullName As String
            strFullName = String.Format("{0}.{1}", ds.NameInSource, dc.NameInSource)


причем верный результат получается только в 2.2.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Ошибка в StiDataColumn...

Сообщение Edward »

Stilux писал(а):Возникла необходимость сформировать полное имя источника для компонента, в формате Имя_датасета.Имя_таблицы.Имя_Колонки.
Делаю это следующим образом:
1. Получаю колонку источника по ссылке на него:

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

Dim dc As StiDataColumn = StiDataColumn.GetDataColumnFromColumnName(report.Dictionary, component.Text.Value)
Учтите, пожалуйста, что component.Text.Value скорее всего будет содержать символы { и }.

В этом случае Вам нужно добавить следующий код:

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

        If Not (strFullName Is Nothing) Then
            strFullName = strFullName.Replace("{", String.Empty).Replace("}", String.Empty)
        End If
Stilux писал(а):2. Два варианта дающие разные результаты:
2.1.

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

  
            Dim dt As DataTable = dc.DataSource.DataTable
            Dim strFullName As String

            If dt.DataSet Is Nothing Then
                Throw New InvalidOperationException("Источник компонента, не является полем таблицы датасета.")
            Else
                strFullName = String.Format("{0}.{1}", dt.DataSet.DataSetName, dt.TableName)
            End If
            strFullName = String.Format("{0}.{1}", strFullName, dc.NameInSource)
2.2.

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

   
            Dim ds As StiDataTableSource = Ctype(dc.DataSource, StiDataTableSource)
            Dim strFullName As String
            strFullName = String.Format("{0}.{1}", ds.NameInSource, dc.NameInSource)


причем верный результат получается только в 2.2.
Вы не могли бы подкрепить этот пример тестовым приложением? К сожалению воспроизвести ситуацию не удалось. Оба варианта возвращают один результат.

Спасибо.
Ответить