Power Builder - Guardar imagenes con PB12.5 SQLAnywhere 12

   
Vista:

Guardar imagenes con PB12.5 SQLAnywhere 12

Publicado por Javier javier.licencias@gmail.com (64 intervenciones) el 07/05/2014 02:48:11
Hola a todos, quiero empezar a trabajar con imagenes, estoy creando una tabla para guardar mis fichas de deposito pero no se que tipo de datos le puedo asignar a mi campo donde guardare la imagen? ya busque y no aparece el tipo de datos Blob. aparece bit, float, nchar, nvarchar, long, y otras mas.
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
Imágen de perfil de Adolfo

Guardar imagenes con PB12.5 SQLAnywhere 12

Publicado por Adolfo (70 intervenciones) el 08/05/2014 21:34:38
1.- Debemos modificar c:\archivos de programa\sybase\shared\powerbuilder\pbodb125.ini (o en su caso la version que sea. ejm.
pb0db12.ini) y localizar lo siguiente
PBMaxBlobSize='32767'
PBMaxTextSize='32767'
y cambiarlo por
PBMaxBlobSize='2147483647'
PBMaxTextSize='32767000'

2.- Para este ejemplo debemos de tener la siguiente tabla:
1
2
3
4
5
6
CREATE TABLE dbo.nada
(
    clave  int         IDENTITY,
    nombre longsysname NULL,
    foto   image       NULL
)
En la ventana debemos crear 3 controles un single line edit llamado sle_clave.text un boton guardar y un boton leer.

Para el botón Guardar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
string ls_pathname, ls_filename, ls_filtro
integer li_clave, li_file
blob lb_usu_foto, lb_temp
 
ChangeDirectory("C:\Documents and Settings\COR_ACHAIREZ\Mis documentos\Mis imágenes")
 
ls_filtro = "Archivos de Imagenes (*.bmp;*.gif;*.jpg;*.jpeg;*.png),*.bmp;*.gif;*.jpg;*.jpeg;*.png"
if GetFileOpenName("Archivo de Imagen:", ls_pathname, ls_filename , "jpg", ls_filtro) = 0 then return
 
li_file = FileOpen(ls_pathname, StreamMode!)
if li_file = -1 then
	messagebox('Error','Falló la apertura del archivo imagen',stopsign!)
	return
else
	li_clave = integer(sle_clave.text)
	DO WHILE FileRead(li_file,lb_temp) > 0
		lb_usu_foto += lb_temp
	LOOP
	FileClose(li_file)
	p_foto.SetPicture(lb_usu_foto)
 
	UPDATEBLOB nada
		SET foto = :lb_usu_foto
		WHERE clave = :li_clave;
	if sqlca.sqlcode = -1 then
		messagebox("Error","No se pudo ejecutar la query actualiza foto~n~r" + sqlca.sqlerrtext, stopsign!)
		return
	end if
end if

Para el boton leer:
1
2
3
4
5
6
7
8
9
10
11
12
13
integer li_clave
Blob lb_usu_foto
long ll_i
 
li_clave = integer(sle_clave.text)
SELECTBLOB foto INTO :lb_usu_foto
	FROM nada
	WHERE clave = :li_clave;
if sqlca.sqlcode = -1 then
	messagebox("Error","No se pudo recuperar imagen" + sqlca.sqlerrtext, StopSign!)
	return
end if
p_foto.setpicture(lb_usu_foto)
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