Страница: 1 |
Страница: 1 |
Вопрос: [VB.net & SSIS] Вызов процедуры
Добавлено: 26.01.11 10:25
Автор вопроса:
basic_int
Всем привет
Подскажите, как можно вызвать процедуру InputData_ProcessInputRow в процедуре CreateNewOutputRows()?
Public Overrides Sub InputData_ProcessInputRow(ByVal Row As InputDataBuffer)
Me.OutputDataBuffer.AddRow()
Me.OutputDataBuffer.ResultNode = Row.Client + Row.Goal
End Sub
Public Overrides Sub CreateNewOutputRows()
InputData_ProcessInputRow(????)
End Sub
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #1
Добавлено: 26.01.11 14:16
По коду могу предположить что одна строка входящего потока равна одной строке исходящего. Зачем же ты тогда сделал поткои асинхронными? Сделай их синхронными, добавь в столбец одно поле и модифицируй его приз кода.
Номер ответа: 2
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 26.01.11 14:17
И это, кстати, можно делать через Derived Column, а не на ScriptTask - сложение там без проблем должно выполняться
Номер ответа: 3
Автор ответа: basic_int
Вопросов: 1
Ответов: 4
Профиль | | #3
Добавлено: 26.01.11 15:05
У меня немного другая задача. Необходимо несколько раз подряд вывести результат процедуры InputData_ProcessInputRow. Пытаюсь через DataTable, но безуспешно.
Спасибо
Номер ответа: 4
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 26.01.11 17:29
опиши подробнее что за задача
Если тебе надо в поток вставить несколько строк, то это можно сделать проще, взять другой источник, можно даже ScriptTask, в нем сгенерить эти стркои, а потом слить все вместе в один поток
Номер ответа: 5
Автор ответа: basic_int
Вопросов: 1
Ответов: 4
Профиль | | #5
Добавлено: 26.01.11 17:42
Есть входящий файл со строками:
Node 1
Node 2
Node 3
Необходимо получить:
Project - Node 1
Project - Node 2
Project - Node 3
TopNode - Node 1
TopNode - Node 2
TopNode - Node 3
Т.е. Node 1, Node 2, Node 3 должно повториться несколько раз в выходном потоке
Номер ответа: 6
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 26.01.11 21:03
В одном потоке
Node 1
Node 2
Node 3
В другом
Project
TopNode
так?
Тогда можно слить через MergeJoin
Номер ответа: 7
Автор ответа: basic_int
Вопросов: 1
Ответов: 4
Профиль | | #7
Добавлено: 27.01.11 10:31
Project и TopNode - обычный текст. На мой взгляд, это должно примерно так выглядеть, но в таком случае выводится только одна строка из ds.Tables("Nodes"
:
For Each myRow In ds.Tables("Nodes".Rows
Me.OutputDataBuffer.AddRow()
Me.OutputDataBuffer.ResultNode = "Project - " & myRow.Item("Node".ToString()
Next
For Each myRow In ds.Tables("Nodes".Rows
Me.OutputDataBuffer.AddRow()
Me.OutputDataBuffer.ResultNode = "TopNode - " & myRow.Item("Node".ToString()
Next
Проблема в том, чтобы несколько раз вывести (Node 1, Node 2, Node 3)
Номер ответа: 8
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 28.01.11 07:45
В InputData_ProcessInputRow сразу делаешь вставку строк в исходящий поток.
CreateNewOutputRows - этот метод убираешь.
При этом нарушится порядок соритровки, т.е. будет не так как ты показал, а вот так
Project - Node 1
TopNode - Node 1
Project - Node 2
TopNode - Node 2
Project - Node 3
TopNode - Node 3
Если порядок важен, после Script Transformation сделай сортировку по нужным полям.
Номер ответа: 9
Автор ответа: basic_int
Вопросов: 1
Ответов: 4
Профиль | | #9
Добавлено: 28.01.11 16:30
Спасибо