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

Ошибка в StiDataColumn...

Добавлено: 21 ноя 2007, 06:09
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.

Ошибка в StiDataColumn...

Добавлено: 26 ноя 2007, 12:19
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.
Вы не могли бы подкрепить этот пример тестовым приложением? К сожалению воспроизвести ситуацию не удалось. Оба варианта возвращают один результат.

Спасибо.