Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DTS. Как определить след. номер / 5 сообщений из 5, страница 1 из 1
27.03.2001, 15:31
    #32003573
DmitryGolubev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DTS. Как определить след. номер
DTS. Я в них ламер

Проблема в следующем
Есть сервер А и сервер Б
Необходимо с сервера А перегнать содержание таблицы tbSrc на сервер Б в таблицу tbDest
Но при вставки строки из tbSrc в таблицу tbDest, необходимо определить следующий номер из поля Nr таблицы tbSrc

Как ето сделать, пока не понимаю

скрипт примерно такой
function Main() {
DTSDestination("NR") = <b>UNKNOWN</b> ;
DTSDestination("FIRMID") = DTSSource("FirmID") ;
DTSDestination("PREF") = DTSSource("UnitID") ;
DTSDestination("PREFMAIN") = DTSSource("ZoneID") ;
Main = DTSTransformstat_InsertQuery ;
}
Я предполагаю, что вместо <b>UNKNOWN</b>, должен быть вызов чего то, только вот чего ? )

Спасибо
...
Рейтинг: 0 / 0
27.03.2001, 19:46
    #32003593
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DTS. Как определить след. номер
Я могу предложить след.вариант реш-я. Для наглядности будем переносить табл.authors в authors1 с тем, чтобы au_fname и au_lname взялись из записи со след.au_id.
Болванка преоб-я делается как обычно. В кач-ве source указываем select * from authors order by au_id. Идем в закладку lookups и создаем след. 2 lookup'a.
aaa: SELECT TOP 1 au_fname FROM authors WHERE (au_id > ?)
bbb: SELECT TOP 1 au_lname FROM authors WHERE (au_id > ?)
В закладке Transformations убиваем тупые переносы au_lname -> au_lname, au_fname -> au_fname и делаем один типа Active Script, у к-го на вход подаются au_id, au_lname, au_fname, а на выходе - au_lname, au_fname. Его код выглядит так:
Function Main()
DTSDestination("au_fname") = DTSLookups("aaa").Execute(DTSSource("au_id"))
DTSDestination("au_lname") = DTSLookups("bbb").Execute(DTSSource("au_id"))
if isnull(DTSDestination("au_fname")) or isnull(DTSDestination("au_lname")) then
main = (DTSTransformStat_NoMoreRows or DTSTransformStat_SkipRow)
else
Main = DTSTransformStat_OK
end if
End Function
Проверка select a1.au_id, a.au_fname, a.au_lname, a1.au_fname, a1.au_lname from authors a right outer join authors1 a1 on a.au_id = a1.au_id order by a1.au_id показывает, что все вроде бы работает.
...
Рейтинг: 0 / 0
28.03.2001, 11:33
    #32003613
DmitryGolubev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DTS. Как определить след. номер
Спасибо

Но когда я начал читать, понял что допустил ошибку.
Я очень извиняюсь но строка
"Но при вставки строки из tbSrc в таблицу tbDest, необходимо определить следующий номер из поля Nr таблицы tbSrc"
должна выглядеть так
"Но при вставки строки из tbSrc в таблицу tbDest, необходимо определить следующий номер из поля Nr таблицы tbDesc"

Помоему необходимо сделать Lookup вида
aaa: SELECT MAX(NR) FROM tbDesc
и потом вставить
DTSDestination("NR") = DTSLookups("aaa").Execute() ;

Если я не прав, то подскажите пожалуста. Как ето делается ?

Спасибо
...
Рейтинг: 0 / 0
28.03.2001, 11:46
    #32003617
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DTS. Как определить след. номер
А не лучше в таком случае сделать поле tbDesc.NR с опцией IDENTITY ?
Или "следующий номер из поля Nr таблицы tbDesc" должен вычисляться по какому-то алгоритму ?
...
Рейтинг: 0 / 0
28.03.2001, 14:35
    #32003641
DmitryGolubev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DTS. Как определить след. номер
Проблем в том, что это не моя таблица, я должен только класть в нее данные.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DTS. Как определить след. номер / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]