Como insertar una imagen BD power builder 10

Yo utilizo el power builder 10 y tengo un codigo para insertar imagenes a la base de dato pero me sale error "fallo el updateblob" y tambien en la condicion if ll_File -1 then no se si talves sea por la version te agradeceria mucho si me puedes ayudar porque tengo que presentar este trabajo gracias
STRING ls_pathname, ls_filename, ls_filtro, ls_cod_alumno
LONG ll_File
BLOB lbl_data, lbl_temp
ls_filtro = "JPEG Files (*.jpg),*.jpg," + "GIFF Files (*.gif),*.gif,"
IF GetFileOpenName ( "Archivo de Imagen: ", ls_pathname, ls_filename , "jpg", ls_filtro) = 0 THEN RETURN
p_foto.picturename = ls_pathname
ls_cod_alumno = trim(sle_cod_alumno.text)
ll_File = FileOpen(ls_pathname, StreamMode!)
DO WHILE FileRead(ll_file,lbl_temp) > 0
lbl_data += lbl_temp
LOOP
FileClose(ll_file)
IF ll_File -1 THEN
FileRead(ll_file, lbl_data)
FileClose(ll_file)
SQLCA.AutoCommit = True
UPDATEBLOB alumnos SET foto_alumno = :lbl_data WHERE cod_alumno = :ls_cod_alumno;
SQLCA.AutoCommit = False
ELSE
messagebox('Error','Falló el FileOpen')
END IF
IF SQLCA.SQLNRows > 0 THEN
COMMIT using sqlca;
messagebox('OK: ' + ls_cod_alumno,'Se guardó la foto del alumno')
ELSE
messagebox('Error','Falló el UPDATEBLOB')
END IF
FileClose(ll_file)

1 Respuesta

Respuesta
1
Bueno aparentemente el código esta bueno sabes cual puede ser el detalle, las imágenes que guardes no deben pesar más de 20KB eso es demasiado, y por naturaleza el motor de BD las rechazara, mira con 20KB es como que tuvieras más algo de 2500 filas insertadas, viste cuanto espacio ocupa las imágenes, es por eso que las BD rechazan una imagen que sobre pase los 20KB si pesan 1Mb eso ya es un tamaño excesivo.
Ahora otro problema, seria todo ese código, te recomiendo que lo separes un un botón Examinar busca la imagen y llenala al Picture luego en Tu botón grabar colocas algo así:
int fh
blob Emp_id_pic
fh = FileOpen(<ruta> StreamMode!)
IF fh <> -1 THEN
FileRead(fh, emp_id_pic)
FileClose(fh)
UPDATEBLOB tabla SET foto = :Emp_id_pic
WHERE codigo = 00
USING sqlca;
END IF
IF Emptran.SQLNRows > 0 THEN
COMMIT USING sqlca;
END IF
===================================
Cualquier cosa me avisas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas