Solo para MUY EXPERTOS!!

12/12/2003 - 13:58 por Jose Cabeza | Informe spam
Muy buenas.

Hace casi un mes que estoy dejando esta consulta en más
de un foro y nadie me contesta. O es que solicito algo
muy extraño, o la gente pasa de mi mensaje, o es que la
gente tiene el mismo nivel que yo y no saben hacerlo.
Pero para mí es una urgencia muy importante.

El tema es el siguiente:

Tengo una tabla en la que hay una columna del tipo
imagen. La idea es insertar una fotos de no más de 8Kb
cada una.

El proceso se haría desde un paquete DTS y ese es el
problema.

Resulta que tengo unos datos en VisualFoxPro mediante un
paquete DTS los cojo, los transformo de acuerdo a unas
condiciones y los meto en una db de SQL. El paquete DTS
funciona de maravilla. (Esto ya está resuelto)

Hoy día tengo un campo donde inserto simplemente la ruta
de la imágen y mi aplicación luego carga cada imágen.El
problema es que como es una solución en local y en
remoto, tengo que enviar mediante un FTP las fotos por
separado de la db.

Como en la db SQL la tabla donde tengo que insertar las
imágenes tiene unos 5000 registros, nada más, he pensado
en incluir directamente la información binaria de la
fotografía, que no superará las 10Kb cada una, la gran
mayoría son de unas 4 Kb. directamente en una columna
llamada "foto" del tipo image.

Desde una página ASP en ADO me funciona correctamente
pero en el DTS no.

Yo he creado un DTS de prueba adicional para insertar la
imágen pero algo me falla.

Lo que hago es leer del origen del VisualFoxpro, el campo
con el path y el nombre de la imágen.

DTSSource("img")

y como resultado obtengo algo como esto:

c:\directorio\image.jpg

La idea es que una vez tengo esto,"que realmente es
todo", lo tengo que insertar en el campo adecualdo:

DTSDestination("foto").Value =

Pero claro la foto (en binario), no el Path en modo texto.

Pero siempre me falla.

He probado a crear un FileSystemObject, he leido de todo
y he mirado en este foro y en todo lo que veo por google,
pero no acabo de hacerlo funcionar. También se que existe
el fichero TEXTCOPY pero creo que no puedo utilizarlo
desde un DTS.

Por favor, si alguien puede escribir a esto un minicodigo
para incluirlo en mi DTS que realmente me haga esto, me
ayudaría más de lo que se imagína. He dedicado muchas
horas a este tema y no consigo nada.

Gracias de antemano

Jose Cabeza

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
12/12/2003 - 17:41 | Informe spam
Si estás usando un ActiveX Script en tu DTS, entonces debes resolver el tema
usando ADO (tal vez los métodos GetChunk y AppendChunk sean de utilidad. Hay
un buen artículo sobre el tema en SQL Server magazine:

http://www.sqlmag.com/Articles/Inde...ticleIDQ07

Saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"Jose Cabeza" wrote in message
news:0a2601c3c0af$a70e06f0$
Muy buenas.

Hace casi un mes que estoy dejando esta consulta en más
de un foro y nadie me contesta. O es que solicito algo
muy extraño, o la gente pasa de mi mensaje, o es que la
gente tiene el mismo nivel que yo y no saben hacerlo.
Pero para mí es una urgencia muy importante.

El tema es el siguiente:

Tengo una tabla en la que hay una columna del tipo
imagen. La idea es insertar una fotos de no más de 8Kb
cada una.

El proceso se haría desde un paquete DTS y ese es el
problema.

Resulta que tengo unos datos en VisualFoxPro mediante un
paquete DTS los cojo, los transformo de acuerdo a unas
condiciones y los meto en una db de SQL. El paquete DTS
funciona de maravilla. (Esto ya está resuelto)

Hoy día tengo un campo donde inserto simplemente la ruta
de la imágen y mi aplicación luego carga cada imágen.El
problema es que como es una solución en local y en
remoto, tengo que enviar mediante un FTP las fotos por
separado de la db.

Como en la db SQL la tabla donde tengo que insertar las
imágenes tiene unos 5000 registros, nada más, he pensado
en incluir directamente la información binaria de la
fotografía, que no superará las 10Kb cada una, la gran
mayoría son de unas 4 Kb. directamente en una columna
llamada "foto" del tipo image.

Desde una página ASP en ADO me funciona correctamente
pero en el DTS no.

Yo he creado un DTS de prueba adicional para insertar la
imágen pero algo me falla.

Lo que hago es leer del origen del VisualFoxpro, el campo
con el path y el nombre de la imágen.

DTSSource("img")

y como resultado obtengo algo como esto:

c:\directorio\image.jpg

La idea es que una vez tengo esto,"que realmente es
todo", lo tengo que insertar en el campo adecualdo:

DTSDestination("foto").Value
Pero claro la foto (en binario), no el Path en modo texto.

Pero siempre me falla.

He probado a crear un FileSystemObject, he leido de todo
y he mirado en este foro y en todo lo que veo por google,
pero no acabo de hacerlo funcionar. También se que existe
el fichero TEXTCOPY pero creo que no puedo utilizarlo
desde un DTS.

Por favor, si alguien puede escribir a esto un minicodigo
para incluirlo en mi DTS que realmente me haga esto, me
ayudaría más de lo que se imagína. He dedicado muchas
horas a este tema y no consigo nada.

Gracias de antemano

Jose Cabeza
Respuesta Responder a este mensaje
#2 Isaías
12/12/2003 - 17:44 | Informe spam
Jose

Perdona, no soy super-experto en la materia, pero tengo
una duda, ¿Si el problema ya lo resolviste LOCALMENTE,
cual seria el PROBLEMA de implementarlo de la misma forma
en tus sistemas REMOTOS?.

Saludos.
Respuesta Responder a este mensaje
#3 Pablo O. Abbate
12/12/2003 - 19:18 | Informe spam
José:

La solución a tu problema es muy sencilla. Paso a explicarte:

1) Debes crear un DTS
2) Crear dos conexiones: una al SQL Server y la otra a la tabla en foxpro y
vincularlas por medio de un Data Transformation Task
3) Debes crear una transformación de tipo ActiveX entre las columnas A y B,
siendo A la columna que contiene la url de tu gráfico, y B el campo image en
la tabla de SQL.
4) Debes pegar el siguiente código:

'**********************************************************************
' Visual Basic Transformation Script
'************************************************************************

' Copy each source column to the destination column
Function Main()
Set StrStream = CreateObject("AdoDb.Stream")
StrStream.Type = 1
StrStream.Open
StrStream.LoadFromFile(DTSSource("ImageUrl"))
DTSDestination("imagen") = strStream.Read
StrStream.Close
Main = DTSTransformStat_OK
End Function

Y listo.

Cuando ejecutes este DTS te insertará los registros en la tabla de SQL y
colocará la imagen indicada en la URL dentro del campo img.

Lo probé y funciona correctamente. Lo único que deberías considerar el
tratamiento de errores tales como que no exista el archivo que contiene la
URL y cosas así, pero en general creo que es lo que has pedido.

Espero tus comentarios.

Saludos.



Pablo O. Abbate
MCDBA - MCAD - MCSD - MCT
www.auladat.es



"Jose Cabeza" escribió en el mensaje
news:0a2601c3c0af$a70e06f0$
Muy buenas.

Hace casi un mes que estoy dejando esta consulta en más
de un foro y nadie me contesta. O es que solicito algo
muy extraño, o la gente pasa de mi mensaje, o es que la
gente tiene el mismo nivel que yo y no saben hacerlo.
Pero para mí es una urgencia muy importante.

El tema es el siguiente:

Tengo una tabla en la que hay una columna del tipo
imagen. La idea es insertar una fotos de no más de 8Kb
cada una.

El proceso se haría desde un paquete DTS y ese es el
problema.

Resulta que tengo unos datos en VisualFoxPro mediante un
paquete DTS los cojo, los transformo de acuerdo a unas
condiciones y los meto en una db de SQL. El paquete DTS
funciona de maravilla. (Esto ya está resuelto)

Hoy día tengo un campo donde inserto simplemente la ruta
de la imágen y mi aplicación luego carga cada imágen.El
problema es que como es una solución en local y en
remoto, tengo que enviar mediante un FTP las fotos por
separado de la db.

Como en la db SQL la tabla donde tengo que insertar las
imágenes tiene unos 5000 registros, nada más, he pensado
en incluir directamente la información binaria de la
fotografía, que no superará las 10Kb cada una, la gran
mayoría son de unas 4 Kb. directamente en una columna
llamada "foto" del tipo image.

Desde una página ASP en ADO me funciona correctamente
pero en el DTS no.

Yo he creado un DTS de prueba adicional para insertar la
imágen pero algo me falla.

Lo que hago es leer del origen del VisualFoxpro, el campo
con el path y el nombre de la imágen.

DTSSource("img")

y como resultado obtengo algo como esto:

c:\directorio\image.jpg

La idea es que una vez tengo esto,"que realmente es
todo", lo tengo que insertar en el campo adecualdo:

DTSDestination("foto").Value
Pero claro la foto (en binario), no el Path en modo texto.

Pero siempre me falla.

He probado a crear un FileSystemObject, he leido de todo
y he mirado en este foro y en todo lo que veo por google,
pero no acabo de hacerlo funcionar. También se que existe
el fichero TEXTCOPY pero creo que no puedo utilizarlo
desde un DTS.

Por favor, si alguien puede escribir a esto un minicodigo
para incluirlo en mi DTS que realmente me haga esto, me
ayudaría más de lo que se imagína. He dedicado muchas
horas a este tema y no consigo nada.

Gracias de antemano

Jose Cabeza
Respuesta Responder a este mensaje
#4 Jose Cabeza
12/12/2003 - 21:19 | Informe spam
Hola.

Ante todo muchas gracias por contestar.

El problema lo tengo resuelto localmente con el Path, es
decir leo el path y nombre de la imágen del visualfoxpro
y lo inserto en una columna de texto del SQL server, algo
así como "C:\midirectorio\image\foto01.jpg"
Luego mi aplicación abre esa foto y ya está.

Pero luego al replicar la base de datos SQL al servidor
remoto, tengo que tener en cuenta de enviar aparte vía
FTP, por ejemplo, las fotos.

Como se trata de fotos pequeñas, máximo 10K. he pensado
en que estén insertadas dentro de la base de datos de SQL
en modo binario, de forma que cuando replico la base de
datos SQL del server local al remoto, también se lleva
las fotos dentro de los registros del tipo "image" del SQL
(Y solo las que necesito)

Esa es mi necesidad.

Muchas gracias de antemano.

Jose

Perdona, no soy super-experto en la materia, pero tengo
una duda, ¿Si el problema ya lo resolviste LOCALMENTE,
cual seria el PROBLEMA de implementarlo de la misma


forma
en tus sistemas REMOTOS?.

Saludos.
.

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