Consulta de DTS

19/10/2005 - 20:18 por DiegoC | Informe spam
Hola, realmente ya he probado todo y no se me ocurre por donde viene el
problema.

Tengo unas bases DBase IV, las cuales tengo que tomar en un proceso
automatico.
El tema que en esas bases hay mucha info y yo tengo que ir tomando solo el
ultimo mes.
Esto se correria automaticamente todos los principios de mes.

Por ende se me habia ocurrido algo asi:

Hago la Coneccion a DBase y la coneccion a la base de SQL

Y armo una Tarea de Transformacion de Datos asi:

SELECT *
FROM ORD_IT
WHERE (FEC BETWEEN ? AND ?)

El tema es que las funciones me Devuelven un formato de Fecha que no es
compatible con los parametros que me permite la transformacion (Date) y lo
que me devuelve la funcio es Datetime, probe con CONVERT(varchar(10),
PrimerDiaMesAnterior, 103) (lo cual me entrega 01/09/2005) pero me da un
error en los parametros que no coincide el tipo de datos. Los parametrso
son 2 Funciones que detallo al final.

Si pongo manualmente en las Variables Globales 01/09/2005, Todo Ok. pero
necesito que sea automatico.

Desde ya muchas gracias, y espero no haberlos aburrido y haberme explicado
bien.

CREATE FUNCTION PrimerDiaMesAnterior(@F as datetime)
RETURNS datetime
AS
BEGIN

Declare @Fecha as datetime
SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as varchar(2)) +
'/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)

Return @Fecha
END


y

CREATE FUNCTION UltimoDiaMesAnterior(@F as datetime)
RETURNS datetime
AS
BEGIN

Declare @Fecha as datetime
SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as varchar(2)) +
'/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)

Return Dateadd(d,-1,Dateadd(m,1,@Fecha))
END

Preguntas similare

Leer las respuestas

#1 Maxi [MVP SQL Server]
20/10/2005 - 01:45 | Informe spam
Hola diego, no comprendi bien si el problema decis q esta en la funcion o en
el select del DTS


[Microsoft MVP SQL SERVER]
Culminis SQL-Server Speakers (http://latam.culminis.com)

Maxi - Buenos Aires - Argentina
Msn_messager:
mail: Maxi.da[arroba]gmail.com

"DiegoC" escribió en el mensaje
news:
Hola, realmente ya he probado todo y no se me ocurre por donde viene el
problema.

Tengo unas bases DBase IV, las cuales tengo que tomar en un proceso
automatico.
El tema que en esas bases hay mucha info y yo tengo que ir tomando solo el
ultimo mes.
Esto se correria automaticamente todos los principios de mes.

Por ende se me habia ocurrido algo asi:

Hago la Coneccion a DBase y la coneccion a la base de SQL

Y armo una Tarea de Transformacion de Datos asi:

SELECT *
FROM ORD_IT
WHERE (FEC BETWEEN ? AND ?)

El tema es que las funciones me Devuelven un formato de Fecha que no es
compatible con los parametros que me permite la transformacion (Date) y lo
que me devuelve la funcio es Datetime, probe con CONVERT(varchar(10),
PrimerDiaMesAnterior, 103) (lo cual me entrega 01/09/2005) pero me da un
error en los parametros que no coincide el tipo de datos. Los parametrso
son 2 Funciones que detallo al final.

Si pongo manualmente en las Variables Globales 01/09/2005, Todo Ok. pero
necesito que sea automatico.

Desde ya muchas gracias, y espero no haberlos aburrido y haberme explicado
bien.

CREATE FUNCTION PrimerDiaMesAnterior(@F as datetime)
RETURNS datetime
AS
BEGIN

Declare @Fecha as datetime
SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as varchar(2))
+
'/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)

Return @Fecha
END


y

CREATE FUNCTION UltimoDiaMesAnterior(@F as datetime)
RETURNS datetime
AS
BEGIN

Declare @Fecha as datetime
SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as varchar(2))
+
'/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)

Return Dateadd(d,-1,Dateadd(m,1,@Fecha))
END




Respuesta Responder a este mensaje
#2 DiegoC
20/10/2005 - 15:17 | Informe spam
Hola Maxi, ante toda gracias por contestar.

Las funciones funcionan perfecto, no hay drama, el problema es que devuelven
un dato tipo datetime y para definir variables globales para la consulta
tengo Date y me da error al querer asignarlo.

O sea lo que tengo que hacer es levantar de una tabla DBase solamente lo que
tenga Fecha del mes anterior.

Desde ya muchas gracias.

"Maxi [MVP SQL Server]" escribió en el
mensaje news:#F3#
Hola diego, no comprendi bien si el problema decis q esta en la funcion o


en
el select del DTS


[Microsoft MVP SQL SERVER]
Culminis SQL-Server Speakers (http://latam.culminis.com)

Maxi - Buenos Aires - Argentina
Msn_messager:
mail: Maxi.da[arroba]gmail.com

"DiegoC" escribió en el mensaje
news:
> Hola, realmente ya he probado todo y no se me ocurre por donde viene el
> problema.
>
> Tengo unas bases DBase IV, las cuales tengo que tomar en un proceso
> automatico.
> El tema que en esas bases hay mucha info y yo tengo que ir tomando solo


el
> ultimo mes.
> Esto se correria automaticamente todos los principios de mes.
>
> Por ende se me habia ocurrido algo asi:
>
> Hago la Coneccion a DBase y la coneccion a la base de SQL
>
> Y armo una Tarea de Transformacion de Datos asi:
>
> SELECT *
> FROM ORD_IT
> WHERE (FEC BETWEEN ? AND ?)
>
> El tema es que las funciones me Devuelven un formato de Fecha que no es
> compatible con los parametros que me permite la transformacion (Date) y


lo
> que me devuelve la funcio es Datetime, probe con CONVERT(varchar(10),
> PrimerDiaMesAnterior, 103) (lo cual me entrega 01/09/2005) pero me da un
> error en los parametros que no coincide el tipo de datos. Los


parametrso
> son 2 Funciones que detallo al final.
>
> Si pongo manualmente en las Variables Globales 01/09/2005, Todo Ok. pero
> necesito que sea automatico.
>
> Desde ya muchas gracias, y espero no haberlos aburrido y haberme


explicado
> bien.
>
> CREATE FUNCTION PrimerDiaMesAnterior(@F as datetime)
> RETURNS datetime
> AS
> BEGIN
>
> Declare @Fecha as datetime
> SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as


varchar(2))
> +
> '/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)
>
> Return @Fecha
> END
>
>
> y
>
> CREATE FUNCTION UltimoDiaMesAnterior(@F as datetime)
> RETURNS datetime
> AS
> BEGIN
>
> Declare @Fecha as datetime
> SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as


varchar(2))
> +
> '/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)
>
> Return Dateadd(d,-1,Dateadd(m,1,@Fecha))
> END
>
>
>
>


Respuesta Responder a este mensaje
#3 cali
20/10/2005 - 19:32 | Informe spam
por que no usas una sentencia similar en un sp que inserte los registros
segun la fecha que necesitasyo lo veo mas practico k usar dts o te habre
entendido mal

Select * From Openrowset('Msdasql','Driver=Microsoft Visual Foxpro Driver;
Sourcedb=C:\Resomasa\Dat\Res; Sourcetype=Dbf','Select * From
[Arest07a]' )


"DiegoC" escribió en el mensaje
news:

Hola, realmente ya he probado todo y no se me ocurre por donde viene el
problema.

Tengo unas bases DBase IV, las cuales tengo que tomar en un proceso
automatico.
El tema que en esas bases hay mucha info y yo tengo que ir tomando solo el
ultimo mes.
Esto se correria automaticamente todos los principios de mes.

Por ende se me habia ocurrido algo asi:

Hago la Coneccion a DBase y la coneccion a la base de SQL

Y armo una Tarea de Transformacion de Datos asi:

SELECT *
FROM ORD_IT
WHERE (FEC BETWEEN ? AND ?)

El tema es que las funciones me Devuelven un formato de Fecha que no es
compatible con los parametros que me permite la transformacion (Date) y lo
que me devuelve la funcio es Datetime, probe con CONVERT(varchar(10),
PrimerDiaMesAnterior, 103) (lo cual me entrega 01/09/2005) pero me da un
error en los parametros que no coincide el tipo de datos. Los parametrso
son 2 Funciones que detallo al final.

Si pongo manualmente en las Variables Globales 01/09/2005, Todo Ok. pero
necesito que sea automatico.

Desde ya muchas gracias, y espero no haberlos aburrido y haberme explicado
bien.

CREATE FUNCTION PrimerDiaMesAnterior(@F as datetime)
RETURNS datetime
AS
BEGIN

Declare @Fecha as datetime
SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as varchar(2))
+
'/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)

Return @Fecha
END


y

CREATE FUNCTION UltimoDiaMesAnterior(@F as datetime)
RETURNS datetime
AS
BEGIN

Declare @Fecha as datetime
SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as varchar(2))
+
'/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)

Return Dateadd(d,-1,Dateadd(m,1,@Fecha))
END





Respuesta Responder a este mensaje
#4 DiegoC
20/10/2005 - 19:49 | Informe spam
Hola, gracias por contestar.

Lo que pasa es que es una gran cantidad de importaciones (de distintos dbf),
modificaciones de datos, filtros, ejecutar distintas cosas, informar
errores, correr procesos antes de pasar la info a la tabla correspondiente,
etc, son varias cosas que debo hacer cada mes, y lo que me parece mas
conveniente es poder automatizarlo a travez de un DTS, tambien podria armar
un DTS que tenga directamente las fechas de importacion (Armarme 12 DTS y
que cada uno corra por cada mes, pero no me parece lo mas prolijo) , pero lo
queria hacer mas automatico.

Desde ya muchas gracias, Saludos, Diego


"cali" <nada> escribió en el mensaje
news:#

por que no usas una sentencia similar en un sp que inserte los registros
segun la fecha que necesitasyo lo veo mas practico k usar dts o te


habre
entendido mal

Select * From Openrowset('Msdasql','Driver=Microsoft Visual Foxpro Driver;
Sourcedb=C:\Resomasa\Dat\Res; Sourcetype=Dbf','Select *


From
[Arest07a]' )


"DiegoC" escribió en el mensaje
news:
>
> Hola, realmente ya he probado todo y no se me ocurre por donde viene el
> problema.
>
> Tengo unas bases DBase IV, las cuales tengo que tomar en un proceso
> automatico.
> El tema que en esas bases hay mucha info y yo tengo que ir tomando solo


el
> ultimo mes.
> Esto se correria automaticamente todos los principios de mes.
>
> Por ende se me habia ocurrido algo asi:
>
> Hago la Coneccion a DBase y la coneccion a la base de SQL
>
> Y armo una Tarea de Transformacion de Datos asi:
>
> SELECT *
> FROM ORD_IT
> WHERE (FEC BETWEEN ? AND ?)
>
> El tema es que las funciones me Devuelven un formato de Fecha que no es
> compatible con los parametros que me permite la transformacion (Date) y


lo
> que me devuelve la funcio es Datetime, probe con CONVERT(varchar(10),
> PrimerDiaMesAnterior, 103) (lo cual me entrega 01/09/2005) pero me da un
> error en los parametros que no coincide el tipo de datos. Los


parametrso
> son 2 Funciones que detallo al final.
>
> Si pongo manualmente en las Variables Globales 01/09/2005, Todo Ok. pero
> necesito que sea automatico.
>
> Desde ya muchas gracias, y espero no haberlos aburrido y haberme


explicado
> bien.
>
> CREATE FUNCTION PrimerDiaMesAnterior(@F as datetime)
> RETURNS datetime
> AS
> BEGIN
>
> Declare @Fecha as datetime
> SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as


varchar(2))
> +
> '/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)
>
> Return @Fecha
> END
>
>
> y
>
> CREATE FUNCTION UltimoDiaMesAnterior(@F as datetime)
> RETURNS datetime
> AS
> BEGIN
>
> Declare @Fecha as datetime
> SET @Fecha = CAST('01' + '/' + CAST(month(dateadd(m,-1,@F)) as


varchar(2))
> +
> '/' + CAST(Year(dateadd(m,-1,@F)) as varchar(4)) as datetime)
>
> Return Dateadd(d,-1,Dateadd(m,1,@Fecha))
> END
>
>
>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida