Power Builder - Guardar una Imagen

 
Vista:

Guardar una Imagen

Publicado por Oscar (54 intervenciones) el 20/02/2003 20:02:26
Hola,
Espero que alguien me pueda ayudar con esta problema.
Estoy viendo la posibilidad de guardar una imagen en una base de datos de SQLServer 2000 desde power builder 6.0, no se si esto sea posible, si alguien sabe como hacerlo le agradeceria mucho si me lo dice.
Gracias.
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

RE:Guardar una Imagen Parte 1

Publicado por Jorge Luis (91 intervenciones) el 20/02/2003 20:48:30
Lo que tu quieres hacer es guardar imágenes en un campo de la base de Datos SQL, yo lo he hecho en Sybase, y el tipo de dato es Long Bynary, no recuerdo cuál es en SQL Server, pero lo hay, el problema es que usualmente no se guarda las imágenes en bases de datos para evitar que sean muy grandes, se puede guardar la ruta de la ubicación del archivo en un campo texto, pero en fin si tu necesidad es guardarlo en tipo BLOB te envio por partes un ejemplo.
En los próximos días ubicaré este ejemplo en la sección código fuente.
Saludos desde Ecuador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar una Imagen Parte 2

Publicado por Jorge Luis (91 intervenciones) el 20/02/2003 20:54:11
//Primero crea esta función f_convierte() que recibe de argumento un string as_filename
Integer li_FileNum, li_Index, li_Loops
Long ll_FileLength, ll_Bytes_Read
Blob lblb_Input, lblb_Temp
// retorna nulo si no existe el archivo
IF NOT FileExists(as_filename) THEN
SetNull(lblb_Input)
RETURN lblb_Input
END IF
ll_FileLength = FileLength(as_filename)
IF ll_FileLength > 32765 THEN
IF Mod(ll_FileLength, 32765) = 0 THEN
li_Loops = ll_FileLength / 32765
ELSE
li_Loops = (ll_FileLength / 32765) + 1
END IF
ELSE
li_Loops = 1
END IF
li_FileNum = FileOpen(as_filename, StreamMode!, Read!, LockReadWrite!)
FOR li_Index = 1 TO li_Loops
FileRead(li_FileNum, lblb_Temp)
lblb_Input = lblb_Input + lblb_Temp
NEXT
FileClose(li_FileNum)
RETURN lblb_Input
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar una Imagen Parte 3

Publicado por Jorge Luis (91 intervenciones) el 20/02/2003 21:00:36
// en el string que recibe la función debe estar la ruta completa del archivo que convertirás a BLOB, ej:
//en un botón
string docname, named
integer value
value = GetFileOpenName(\"Seleccione Archivo\", &
+ docname, named, \"Archivo\", &
\"Todos los Archivos (*.*),*.*\")
IF value = 0 or value = -1 THEN // SI CANCELA
RETURN
END IF
blob lbl_nuevo
lbl_nuevo = f_convierte(docname) //ENVIAMOS LA RUTA DEL ARCHIVO Y OBTENEMOS EL BLOB
// VISUALIZO EN UN PICTURE USANDO EL BLOB
p_1.SetPicture(lbl_nuevo)
// GUARDO EN LA BASE DE DATOS
UPDATEBLOB PERSONAS
SET PER_FOTO = :lbl_nuevo
WHERE PER_CODIGO = 1;
COMMIT;
/* eso es todo, debes probar si SQL SERVER tiene UPDATEBLOB, no estoy seguro pero todo esta en aplicar tu experiencoia en ese motor de Base de Datos,
Saludos desde Ecuador*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar una Imagen Parte 3

Publicado por Oscar (54 intervenciones) el 20/02/2003 22:13:32
Muchas gracias Jorge Luis, voy a ver si puedo hacerlo para SQL.
Saludos desde Mexico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar una Imagen Parte 3

Publicado por Jose Luis (25 intervenciones) el 22/02/2003 00:47:38
Oscar como te fue con el guardar la imagen en SQL, pues yo tengo el mismo problema y no puedo hacerlo.

Saludos

Jose Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar una Imagen Parte 3

Publicado por Oscar (54 intervenciones) el 22/02/2003 01:41:29
hasta ahora no he logrado hacerlo, para empesar sql no tiene un tipo de dato blob hay un tipo imagen, estuve haciendo algunos intentos con la ayuda de sql pero no logre hacer gran cosa despues me ocupe en otras cosas y ya no pude seguir investigando, pero a los que les e preguntado me han dicho que no es lo conveniente guardar la imagen.
En la ayuda de SQL dice que se puede guardar la imagen con WRITETEXT estuve probandolo pero no me funciono me falta algo, no se que sea cuando tenga oportunidad voy a volver a seguir investigando para ver si logro hacerlo.
Esta es la forma como estuve intentandolo:

USE pubs

GO

EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'

GO

DECLARE @ptrval binary(16)

SELECT @ptrval = TEXTPTR(pr_info)

FROM pub_info pr, publishers p

WHERE p.pub_id = pr.pub_id

AND p.pub_name = 'New Moon Books'

WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!'

GO

EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'

GO

/*No se que debe ir entre las comillas en el pero si no las pones marca error,esa fue mi duda, si logras hacer algo por favor hazmelo saber, suerte*/

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar