Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Incrementar filas con un bucle en un DTS SQL 2000

Estas en el tema de Incrementar filas con un bucle en un DTS SQL 2000 en el foro de SQL Server en Foros del Web. Muy buenas a todos. En un SQL Server 2000, tengo un paquete DTS donde hago distintas transformaciones con secuencias de comandos ActiveX en VB Script ...
  #1 (permalink)  
Antiguo 28/11/2008, 09:55
 
Fecha de Ingreso: noviembre-2008
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Incrementar filas con un bucle en un DTS SQL 2000

Muy buenas a todos.

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.
  #2 (permalink)  
Antiguo 28/11/2008, 10:42
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Incrementar filas con un bucle en un DTS SQL 2000

Aunque es codigo Activex, se trata de un DTS...



Ok, supongo que seria algo como esto...

Código:
Function Main()

	DIM arr

	des = Trim(DTSSource("des"))


	'Considerando los campos de ejemplo, las iteraciones empiezan a partir de la posicion 8 del campo DES	
	arr = SPLIT(mid (des, 8),",")


	'' DTSGlobalVariables("ReadingID") Es una variable global para controlar las iteraciones...(no es necesario agregarla manualmente)
	
	IF Cint(DTSGlobalVariables("ReadingID").Value) <= Ubound(arr)  THEN 

		DTSDestination("code") = DTSSource("code")

		DTSDestination("des") = arr(Cint(DTSGlobalVariables("ReadingID").Value))
		
		Main = DTSTransformStat_SkipFetch  ''No realizar salto de fila origen...

		DTSGlobalVariables("ReadingID").Value = Cint(DTSGlobalVariables("ReadingID").Value) + 1 

	Else
		DTSGlobalVariables("ReadingID").Value = 0 
		Main = DTSTransformStat_SkipInsert
	End If
	


End Function

Espero te sea de utilidad...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Última edición por Andres95; 28/11/2008 a las 10:49
  #3 (permalink)  
Antiguo 28/11/2008, 11:31
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Incrementar filas con un bucle en un DTS SQL 2000

Segun lei, tienes que usar DTSTransformStat_SkipFetch.
Mira Processing The Same Row More Than Once.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 12/12/2008, 13:23
 
Fecha de Ingreso: noviembre-2008
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Incrementar filas con un bucle en un DTS SQL 2000

Muchas gracias.
Me fué de maravilla. Estuve buscando pero no fui capaz de encontrarlo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 11:37.