Ayuda con Objeto Stream de ADO (Solucionado)
Posted: Wed Jul 08, 2015 4:09 am
Saludos foro
Nuevamente, aquí en busca de su ayuda.
Como ya lo he comentado en otro post, tenía funcionando si problemas una aplicación que cargaba una imagen desde archivo lo cargaba a un objeto Stream y mediante este lo asignaba a un campo blob en una tabla mysql. Mas o menos en resumen lo hacía así:
Todo esto me funcionaba sin contratiempos antes de actualizarme, pero ahora al momento de hacer
oRsfoto:fields('foto'):Value = ::oStream:Read(-1)
obtengo el error que me da en oError:Description : "Argument Error"
Esto me trae de cabeza desde hace tiempo, y no encuentro la solución.
Pienso que ::oStream:LoadFromFile(cfile) , no está cargando adecuadamente el fichero, por lo que al ser pasado en oRsfoto:fields('foto'):Value = ::oStream:Read(-1) no es un archivo válido. Pero no sé como comprobarlo, estoy perdido.
Intenté usar un ejemplo que hallé aqui en el foro:
oRsfoto:Fields("foto"):AppendChunk( VTArrayWrapper():New( 17, cBUFFER ) ) // cBUFFER contiene bytes leidos desde un fichero de imagen
Pero tuve problemas con la función VTArrayWrapper, que me parece que no es de harbour, así que probé:
oRsfoto:Fields("foto"):AppendChunk( cBUFFER )
y si graban bytes a la tabla pero no como una imagen
Ahora usando FWH 10.3 + Harbour 3.0 Rev: 16951 + BCC582 en Windows 8.1 pro 64 bits
Ayuda please!
Nuevamente, aquí en busca de su ayuda.
Como ya lo he comentado en otro post, tenía funcionando si problemas una aplicación que cargaba una imagen desde archivo lo cargaba a un objeto Stream y mediante este lo asignaba a un campo blob en una tabla mysql. Mas o menos en resumen lo hacía así:
- Code: Select all Expand view
//::oStream := TOleAuto():New("adodb.stream")
::oStream := win_OleCreateObject( "ADODB.Stream" )
::oStream:Type := 1 //adTypeBinary
::oStream:Open()
//cargo la foto desde un archivo al objeto
::oStream:LoadFromFile(cfile)
//Creo el nuevo recordset
oRsFoto:Addnew()
oRsFoto:fields('cod_veh'):Value := ::oRsV:Fields('cod_veh'):Value
oRsFoto:Fields('fecha'):Value := fecha
oRsFoto:Fields('nota'):Value := nota
try
//Coloco la foto en el campo
oRsfoto:fields('foto'):Value = ::oStream:Read(-1)
catch oError
MsgInfo( "SEND01 NO : " + ";" + CRLF+ ;
"Message: " + oError:Description )
//MsgStop("Problemas al colocar la fotografía en su respectivo campo")
//ShowError(oError,oCon)
end
//actualizamos el recordset
oRsFoto:Update()
::oStream:Close()
Todo esto me funcionaba sin contratiempos antes de actualizarme, pero ahora al momento de hacer
oRsfoto:fields('foto'):Value = ::oStream:Read(-1)
obtengo el error que me da en oError:Description : "Argument Error"
Esto me trae de cabeza desde hace tiempo, y no encuentro la solución.
Pienso que ::oStream:LoadFromFile(cfile) , no está cargando adecuadamente el fichero, por lo que al ser pasado en oRsfoto:fields('foto'):Value = ::oStream:Read(-1) no es un archivo válido. Pero no sé como comprobarlo, estoy perdido.
Intenté usar un ejemplo que hallé aqui en el foro:
oRsfoto:Fields("foto"):AppendChunk( VTArrayWrapper():New( 17, cBUFFER ) ) // cBUFFER contiene bytes leidos desde un fichero de imagen
Pero tuve problemas con la función VTArrayWrapper, que me parece que no es de harbour, así que probé:
oRsfoto:Fields("foto"):AppendChunk( cBUFFER )
y si graban bytes a la tabla pero no como una imagen
Ahora usando FWH 10.3 + Harbour 3.0 Rev: 16951 + BCC582 en Windows 8.1 pro 64 bits
Ayuda please!