Power Builder - Guardar imagen en Base de Datos

 
Vista:

Guardar imagen en Base de Datos

Publicado por Carolina (141 intervenciones) el 25/04/2020 01:46:29
Hola amigos una pregunta, tengo una funcion en power que tiene el siguiente codigo:
1
2
3
4
5
6
7
8
9
10
11
12
If Upperbound(a_imagenes) > 0 then
	For cant = 1 To Upperbound(a_imagenes)
		vid_consulta = datawin.getitemnumber(1, 3)
		vpath_imagen = vn_path + '\' + a_imagenes[cant]
		Insert Into Gtv_escaneos_consultas (id_consulta, id_imagen, imagen, id_usuario, fec_ult_actualizacion)
			Values (:vid_consulta, :cant, CAST( :vpath_imagen AS  varbinary(max)), :vid_usuario, getdate());
		If Sqlca.Sqlcode = -1 then
			Messagebox("Atención!", "Hubo un error al guardar las imagenes escaneadas.Avise al programador, las imagenes no quedarán guardadas" + Sqlca.SQlerrtext)
			Return False
		End if
	Next
End

SIEMPRE me salta el error!!!! Yo ejecuto la misma instruccion en SQL SERVER en el management studio y me inserta la imagen correctamente, no se que puede pasar si alguno me da alguna idea le SUPER AGRADEZCO!!!!

Estoy con Power Builder 12.5 y SQL SERVER 2014
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
Imágen de perfil de Leonardo Daniel A.
Val: 832
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Guardar imagen en Base de Datos

Publicado por Leonardo Daniel A. (386 intervenciones) el 26/04/2020 20:57:05
No en PowerBuilde no se hace asi, se usa UPDATE BLOB y SELECTBLOB

** Aqui lo que hago es obtener el siguiente id de una tabla donde almaceno los archivos digitales, ese id lo regreso para luego ponerlo en una columna ( por ejemplo en la tabla de "conductores", id_archivo , esto para no tener los blobs en las tablas principales, y solo llamarlos cuando necesito leerlos y esto ayuda mucho al rendimiento..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Blob lblb_archivo
Integer li_filehandler, ll_id
 
li_filehandler = FileOpen( ls_filename, StreamMode! )
if li_filehandler <> -1 then
    FileReadEx(li_filehandler, lblb_archivo)
    FileClose(li_filehandler)
 
   ll_id = f_next_id("archivos_digitales")
 
   UPDATEBLOB archivos_digitales SET archivo = :lblb_archivo where id_archivo = :ll_id;
 
	if SQLCA.SQLNRows > 0 then
		COMMIT;
		f_mensaje("I", "File uploaded correctly")
		return ll_id
	end if
	if SQLCA.SQLCode = -1 then
		f_mensaje("A", "SQL error" + ln+ SQLCA.SQLErrText)
		return 0
	end if
end if
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

Guardar imagen en Base de Datos

Publicado por Carolina (141 intervenciones) el 26/04/2020 21:05:09
GRACIAS LEONARDO NUEVAMENTE!!!!
VOY A PROBAR ESTO TAMBIEN
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
Imágen de perfil de Leonardo Daniel A.
Val: 832
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Guardar imagen en Base de Datos

Publicado por Leonardo Daniel A. (386 intervenciones) el 27/04/2020 01:50:21
Hola... me vole una linea antes del updateblob.... qque va a actualizar si no hay registro que actualizar


1
2
3
4
5
li_id = f_next_id("archivos_digitales")
 
INSERT INTO archivos_digitales (id) VALUES ( li_id)
 
// y despues el UPDATEBLOB    (la columna "archivo")  debe aceptar nulos, para que puedes hacer el insert antes,  o lo podrias hacer con un datastore y al hacer el  InsertRow y el update  obtienes el ID  y luego haces el Update del Datastore,  2 tecnicas usa la que mas te guste
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

Guardar imagen en Base de Datos

Publicado por Carolina (141 intervenciones) el 27/04/2020 23:26:34
Ahhh, jajaja...ahora si! no entendia que era lo que actualizaba!!!!!
Muchas gracias!!!!!
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