SQL Server - Incremetar filas en bucle de un DTS SQL 2000

   
Vista:

Incremetar filas en bucle de un DTS SQL 2000

Publicado por Jose (1 intervención) el 28/11/2008 16:39:28
Muy buenas.

En un SQL Server 2000, tengo un paquete DTS donde hago distintas transformaciones con secuencias de comandos ActiveX en VB Script que funcionan correctamente.
Ahora tengo que hacer otra transformación en el mismo DTS que me coge 2 registros de una tabla y me los deja en otra, también con VB Script.

Y esta última es la que me está volviendo loco porque no consigo que haga lo que necesito.

Se trata de que en cada fila de origen hay 2 campos en la tabla de origen que son:

CODE con valor por ejemplo: AB123456
DES con un valor por ejemplo: |@ES03|DO,26,YT,

Y es en este último campo donde está el problema. Resulta que tras el |@ES03| los 3 valores siguientes los necesito colocar en distintas FILAS pero con el mismo valor de CODE, si el campo es |@ES05| significa que detras existirán 5 valores que tendré que colocar en 5 filas distintas.

Por ejemplo Mi tabla de origen contiene:
CODE DES
AB123456 |@ES03|DO,26,YT
145DE234 |@ES01|YV,
RT900234 |@ES02|HJ,DO,

El resultado tras la transformación en la tabla de destino debería ser:
CODE DES
AB123456 DO
AB123456 26
AB123456 YT
145DE234 YV
RT900234 HJ
RT900234 DO


Hasta ahora solo consigo que se me traspase una solo DES con un solo CODE porque no se hacer dentro del bucle que me haga un salto de línea y me rellene la siguiente con la nueva DES

Mi código en el DTS es el siguiente:

Function Main()
desadi = Trim(DTSSource("des"))
If Mid(desadi,1,5) = |@ES| Then
Cant = CSng(Mid(desadi,6,2)) '-- Cantidad de DES que hay
DigCat = 2 '-- Digitos que tiene cada DES
Pos = 9 '-- Posición de la 1ª DES
For n = 1 To Cant
DTSDestination("code") = Trim(DTSSource("code")) '-- Traspasamos el code
DTSDestination("des") = Mid(desadi,Pos,DigCat) '-- Traspasamos la DES
Pos = Pos + DigCat + 1 '-- Siguiente DES
Main = DTSTransformStat_OK '-- Escribimos en la Fila
Next
Else
Main = DTSTransformStat_SkipRow '-- Saltamos la FILA
End If
End Function


Con esto solo consigo que me ponga la ultima DES en cada CODE pero solo me crea una FILA por cada CODE :

CODE DES
AB123456 YT
145DE234 YV
RT900234 DO

Quedo a la espera de que alguno de ustedes sepa la respuesta para hacer la escritura de cada FILA dentro del BUCLE.

Me urge muchísimo pues necesito ponerlo en marcha antes de que acabe el mes de noviembre.

GRACIAS de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder