In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Error al guardar imagen en bdd mysql

Foro público de Xailer en español
Responder
Jaxmax
Mensajes: 21
Registrado: Mié Jul 28, 2010 10:31 pm

Error al guardar imagen en bdd mysql

Mensaje por Jaxmax »

Buenas, este es mi primer post y soy algo nuevo en esto de xailer,
necesito ayuda ya que quiero insertar imagenes en una base de datos (mysql)
he leido que se guarda como tipo de dato binario y por aqui en el foro vi
como lo hacian
he aqui lo que estoy haciendo:
cargo la imagen desde un archivo:
IF ::oFileOpenImageDlg1:Run()
::oImage1:oPicture := ::oFileOpenImageDlg1:cFullFileName
ENDIF
-----------------------------------------------------
despues
convierto la imagen a stream y la asigno a una variable:
cImagen:=::oImage1:oPicture:SaveToStream()
-----------------------------------------------------------
despues trato de hacer el insert en la tabla la cual tiene 1 solo campo "imagen"
tipo mediumblob (solo es para pruebas esta tabla)

cCon:=" insert into imagenes set imagen='"+cImagen+"'"
if !appdata:origen1:execute(cCon,cCon)
msginfo("Operacion De imagen Rechazada...")
logfile(cCon)
return(.t.)
endif

la conexion a la base de datos la hago mediante Odbc
y esto es lo que me queda en el logfile que se crea:
insert into imagenes set imagen='BM��
y me marca un error al tratar de hacer el insert, pondria una imagen pero
es mi primer post y no me deja, pero es una ventana de error que dice:
Xailer DataControls Error
[Ninguno]
insert into imagenes set imagen='BM��
cual es el error? o que tengo que hacer para poder guardar las imagenes?
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Error al guardar imagen en bdd mysql

Mensaje por Bingen Ugaldebere »

Sin tantas complicaciones tomas la imagen directamente sea del tipo que
sea y haces esto
cSelect:="Insert Into documentos Imagen Values (Load_File('+"cImageName"+')"
Del manual de MySql:
LOAD_FILE(file_name)
Lee el fichero y retorna el contenido como cadena de caracteres. El
fichero debe estar localizado en el servidor, debe especificar la ruta
completa al fichero, y debe tener el privilegio FILE . El fichero debe
ser legible por todo el mundo y su tamaño menor a max_allowed_packet bytes.
Si el fichero no existe o no puede ser leí­do debido a que una de las
anteriores condiciones no se cumple, la función retorna NULL.
mysql> UPDATE tbl_name
SET blob_column=LOAD_FILE('/tmp/picture')
WHERE id=1;
Jaxmax
Mensajes: 21
Registrado: Mié Jul 28, 2010 10:31 pm

Error al guardar imagen en bdd mysql

Mensaje por Jaxmax »

Gracias Bingen, sirve pero no es la solucion que busco, ya que lo que se pretende es que un usuario desde otro equipo cargue la imagen (en este caso al control timage) y que al momento de guardar la imagen esta se guarde en la bdd que esta en otro equipo(el servidor), para que funcionara lo de LOAD_FILE, el usuario tendria que grabar en alguna carpeta del servidor(donde esta la bdd) la imagen y esto no se posible en mi caso.
realice un insert de una imagen a la bdd desde navicat y funciono bien, lo que hice fue poner un breakpoint en la siguiente linea:
cImagen:=::oImage1:oPicture:SaveToStream()
y ver el valor que tenia cImagen
lo curioso fue que al ver el valor de cImagen en la ventana de Valor actual se ve solo los primeros caracteres y en nuevo valor si se ve la cadena completa

de ahi copie la cadena completa para hacer el insert desde el navicat y hace el insert sin problemas.
la ventana de error que me da cuando trato hacer el insert desde el programa es este:

al hacer el select a la tabla para cargar la imagen, no hay problema si carga la imagen bien, el problema solo es al hacer el insert.
Juan Jose
Mensajes: 72
Registrado: Lun Jun 09, 2008 3:43 pm

Error al guardar imagen en bdd mysql

Mensaje por Juan Jose »

Prueba esto
If AppData:oSQLDataSource:QueryValue("Select Count(*) From
Empleados_Fotos Where Id_Imagen='"+::Id_Imagen+"'")#1
xId := ToString(CreateId())
cSql := "Insert into Empleados_Fotos(Id_Imagen,Imagen)
Values('"+xId+"',?)"
Else
xId := ::Id_Imagen
cSql := "UpDate Empleados_Fotos Set Imagen=? Where
Id_Imagen='"+::Id_Imagen+"'"
EndIf
AppData:oSQLDataSource:Execute2(cSql,,{oPicture:SaveToStream ()})
::OnChange(Self,xId)
::oPadre:lModificado := .T.
"Max J[dot] Rodriguez Beltran" <ing[dot]maxjrb[at]gmail[dot]com> escribió en
el mensaje news:4c5703e3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Gracias Bingen, sirve pero no es la solucion que busco, ya
> que lo que se pretende es que un usuario desde otro equipo
> cargue la imagen (en este caso al control timage) y que al
> momento de guardar la imagen esta se guarde en la bdd que
> esta en otro equipo(el servidor), para que funcionara lo de
> LOAD_FILE, el usuario tendria que grabar en alguna carpeta
> del servidor(donde esta la bdd) la imagen y esto no se
> posible en mi caso.
>
> realice un insert de una imagen a la bdd desde navicat y
> funciono bien, lo que hice fue poner un breakpoint en la
> siguiente linea:
>
> cImagen:=::oImage1:oPicture:SaveToStream()
>
> y ver el valor que tenia cImagen
>
> lo curioso fue que al ver el valor de cImagen en la ventana
> de Valor actual se ve solo los primeros caracteres y en
> nuevo valor si se ve la cadena completa
>
>
> de ahi copie la cadena completa para hacer el insert desde
> el navicat y hace el insert sin problemas.
>
> la ventana de error que me da cuando trato hacer el insert
> desde el programa es este:
>
> http://img808.imageshack.us/img808/7049/errorim.png
>
>
> al hacer el select a la tabla para cargar la imagen, no hay
> problema si carga la imagen bien, el problema solo es al
> hacer el insert.
>
> __________ Informacin de ESET NOD32 Antivirus, versin de la base de firmas
> de virus 5335 (20100802) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5335 (20100802) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Error al guardar imagen en bdd mysql

Mensaje por Bingen Ugaldebere »

> Gracias Bingen, sirve pero no es la solucion que busco, ya
> que lo que se pretende es que un usuario desde otro equipo
> cargue la imagen (en este caso al control timage) y que al
> momento de guardar la imagen esta se guarde en la bdd que
> esta en otro equipo(el servidor), para que funcionara lo de
> LOAD_FILE, el usuario tendria que grabar en alguna carpeta
> del servidor(donde esta la bdd) la imagen y esto no se
> posible en mi caso.
Efectivamente ese problema existe, yo lo que hago es una copia al disco
de la imagen o Pdf al servidor antes de cargarlo en la BD
> realice un insert de una imagen a la bdd desde navicat y
> funciono bien, lo que hice fue poner un breakpoint en la
> siguiente linea:
>
> cImagen:=::oImage1:oPicture:SaveToStream()
>
> y ver el valor que tenia cImagen
>
> lo curioso fue que al ver el valor de cImagen en la ventana
> de Valor actual se ve solo los primeros caracteres y en
> nuevo valor si se ve la cadena completa
>
>
> de ahi copie la cadena completa para hacer el insert desde
> el navicat y hace el insert sin problemas.
>
> la ventana de error que me da cuando trato hacer el insert
> desde el programa es este:
>
> http://img808.imageshack.us/img808/7049/errorim.png
>
>
> al hacer el select a la tabla para cargar la imagen, no hay
> problema si carga la imagen bien, el problema solo es al
> hacer el insert.
Lo siento no he probado esto.
jasm.quitaesto
Mensajes: 420
Registrado: Sab Ago 16, 2008 9:06 pm

Error al guardar imagen en bdd mysql

Mensaje por jasm.quitaesto »

Bingen,
El 03/08/2010 9:17, Bingen Ugaldebere escribió:
>> Gracias Bingen, sirve pero no es la solucion que busco, ya
>> que lo que se pretende es que un usuario desde otro equipo
>> cargue la imagen (en este caso al control timage) y que al
>> momento de guardar la imagen esta se guarde en la bdd que
>> esta en otro equipo(el servidor), para que funcionara lo de
>> LOAD_FILE, el usuario tendria que grabar en alguna carpeta
>> del servidor(donde esta la bdd) la imagen y esto no se
>> posible en mi caso.
>
> Efectivamente ese problema existe, yo lo que hago es una copia al disco
> de la imagen o Pdf al servidor antes de cargarlo en la BD
>
¿Qué pasa si es un servidor remoto? Esta solución no vale.
A mi me esta funcionando cargar la imágen en una variable con FReadStr()
y asignarla al campo blob.
Saludos,
Jose A. Suarez
>> realice un insert de una imagen a la bdd desde navicat y
>> funciono bien, lo que hice fue poner un breakpoint en la
>> siguiente linea:
>>
>> cImagen:=::oImage1:oPicture:SaveToStream()
>>
>> y ver el valor que tenia cImagen
>>
>> lo curioso fue que al ver el valor de cImagen en la ventana
>> de Valor actual se ve solo los primeros caracteres y en
>> nuevo valor si se ve la cadena completa
>>
>>
>> de ahi copie la cadena completa para hacer el insert desde
>> el navicat y hace el insert sin problemas.
>>
>> la ventana de error que me da cuando trato hacer el insert
>> desde el programa es este:
>>
>> http://img808.imageshack.us/img808/7049/errorim.png
>>
>>
>> al hacer el select a la tabla para cargar la imagen, no hay
>> problema si carga la imagen bien, el problema solo es al
>> hacer el insert.
>
> Lo siento no he probado esto.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Error al guardar imagen en bdd mysql

Mensaje por jfgimenez »

"Jaxmax",
Tienes que tener en cuenta que en cImagen tienes simplemente un 'buffer' con
los datos de la imagen, pero no es una cadena de texto. Es decir, cImagen va
a contener con toda seguridad caracteres que no se pueden usar en una
sentencia SQL. Para MySQL se puede utilizar un truco:
Sustituye:
> cCon:=" insert into imagenes set imagen='"+cImagen+"'"
Por:
cCon:=" insert into imagenes set imagen=X'"+StringToHex(cImagen)+"'"
No obstante, si la imagen es muy grande, vas a tener problemas, ya que el
tamaño de la sentencia va a estar limitado por el tamaño de los buffers de
comunicación con el servidor, que suele ser de 1 MB. Para no tener ningún
tipo de problema, deberás utilizar el datasource nativo para MySQL
(TMySQLDataSource), y no ODBC, y grabar la imagen así­:
WITH OBJECT appdata:origen1:Query( "SELECT * from imagenes WHERE 0" )
:Open()
:AddNew()
:imagen := cImagen
:Update()
:Close()
END
Por supuesto, si utilizas datasets, entonces sólo tienes que asignar el
campo cuando lo necesites.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Martin Del Angel
Mensajes: 360
Registrado: Mié Dic 03, 2008 5:05 am

Error al guardar imagen en bdd mysql

Mensaje por Martin Del Angel »

On 7/30/2010 4:30 PM, Jaxmax wrote:
> Buenas, este es mi primer post y soy algo nuevo en esto de xailer,
>
> necesito ayuda ya que quiero insertar imágenes en una base de datos (mysql)
> he leí­do que se guarda como tipo de dato binario y por aquí­ en el foro vi
> como lo hací­an
>
> he aqui lo que estoy haciendo:
> cargo la imagen desde un archivo:
> IF ::oFileOpenImageDlg1:Run()
> ::oImage1:oPicture := ::oFileOpenImageDlg1:cFullFileName
> ENDIF
> -----------------------------------------------------
> después
> convierto la imagen a stream y la asigno a una variable:
> cImagen:=::oImage1:oPicture:SaveToStream()
>
> -----------------------------------------------------------
>
> despues trato de hacer el insert en la tabla la cual tiene 1 solo campo "imagen"
> tipo mediumblob (solo es para pruebas esta tabla)
>
>
> cCon:=" insert into imagenes set imagen='"+cImagen+"'"
>
> if !appdata:origen1:execute(cCon,cCon)
> msginfo("Operacion De imagen Rechazada...")
> logfile(cCon)
> return(.t.)
> endif
>
>
>
> la conexión a la base de datos la hago mediante Odbc
>
> y esto es lo que me queda en el logfile que se crea:
>
> insert into imagenes set imagen='BMíŽíƒ
>
> y me marca un error al tratar de hacer el insert pondrí­a una imagen pero
> es mi primer post y no me deja, pero es una ventana de error que dice:
>
> Xailer DataControls Error
>
> [Ninguno]
> insert into imagenes set imagen='BMíŽíƒ
>
> cual es el error? o que tengo que hacer para poder guardar las imágenes?
Jaxmax Buen Dia:
Lo que deseas hacer creo pensar es lo mismo que hacemos nosotros.
Tenemos una aplicación donde en los Reportes ponemos el logo de la
Empresa el cual el usuario selecciona una imagen Jpeg desde disco y es
grabada en un campo blob de la tabla de Mysql , posteriormente otro
usuario en un sitio distinto puede cambiar esa imagen y poner otra sin
problema alguno.
Aqui el código:
cargar Imagen desde la tabla:
cLogo:=TPicture():LoadFromStream(::oSQLCONFIGURACION:LOGO_EM PRESA)
Donde LOGO_EMPRESA es una campo BLOB
Para mostrarlo puedes usar un TBevel y en su propiedad oBKGnd asignar la
variable cLogo
::oLogo:oBKGnd:=cLogo
Para Salvar :
::oSQLConfiguracion:LOGO_EMPRESA:=MemoRead(cArchLogo)
Donde cArchLogo es el archivo de la nueva imagen seleccionada a grabar.
Se usa MemoRead para conservar el Formato original.
Me Funciona muy bien y utilizando los Datasets de Xailer sin problema
alguno.
Saludos...
Avatar de Usuario
gerencia
Mensajes: 289
Registrado: Sab Jun 20, 2009 6:01 pm

Error al guardar imagen en bdd mysql

Mensaje por gerencia »

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000066">
<font size="-1"><font face="Verdana">Yo lo hago asi, y me funciona
correcto<br>
<br>
Cargo la Imagen desde un archivo y la dejo en el camplo BLOB </font></font><font
size="-1"><font face="Verdana">::oParent:oSqlFoto:Foto</font></font><br >
<font size="-1"><font face="Verdana"><br>
//---------------------------------------------------------- -------------------- <br>
<br>
METHOD CargarImagen( oSender ) CLASS TEditEmple<br>
ÂÂ Local oImgFoto<br>
ÂÂ Local aDir<br>
ÂÂ Local lok:=.T.<br>
ÂÂ WITH OBJECT ::oFileOpenImgDlg<br>
ÂÂÂÂÂ IF :Run()<br>
ÂÂÂÂÂÂ ÂÂ aDir:=Directory(:cFullFilename())<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ If !Empty(aDir)<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂÂ If aDir[1,2] > 120000<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂÂÂÂÂ MsgStop("La imagen que intenta cargar supera
los 120K "+CRLF+;<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂ "se sugire que no cargue imagenes de
tamaÃo mayor","Alerta")<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂÂÂÂ lok:=.F.<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ ÂÂÂ Endif<br>
ÂÂÂÂÂÂ ÂÂÂÂÂÂ Endif<br>
<br>
ÂÂÂÂÂÂ If lOK<br>
ÂÂÂÂÂÂ ÂÂ ::oFoto:oPicture :=
TPicture():LoadFromFile(:cFullFilename())<br>
ÂÂÂÂÂÂ ÂÂ ::oParent:oSqlFoto:Foto := MemoRead(:cFullFilename())<br>
ÂÂÂÂÂÂ Endif<br>
ÂÂÂÂÂ ENDIF<br>
ÂÂ END<br>
RETURN Nil<br>
<br>
En este metodo muestro la imagen que esta en base de dato<br>
<br>
//---------------------------------------------------------- -------------------- <br>
METHOD ChangeBrowse(oSender)Â CLASS TEmpleados<br>
<br>
ÂÂ ::oSQLFoto:lOpenÂÂ := .F.<br>
<br>
ÂÂ IF Empty(::oSQLEmple:Identificacion)<br>
ÂÂÂÂ ::oSQLFoto:cSelect := "Select * From Emple_Foto Where
Identificacion = '' "<br>
ÂÂ Else<br>
ÂÂÂÂ ::oSQLFoto:cSelect := "Select * From Emple_Foto Where
Identificacion = '" + ::oSQLEmple:Identificacion + "'"<br>
ÂÂ Endif<br>
<br>
ÂÂ ::oSQLFoto:lOpenÂÂÂ := .T.<br>
ÂÂ ::oImgFoto:oPicture := TPicture():LoadFromStream(
::oSqlFoto:Foto )<br>
<br>
RETURN NIL<br>
<br>
<br>
<br>
</font></font>
<div class="moz-signature">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 12">
<meta name="Originator" content="Microsoft Word 12">
<link rel="File-List" href="Firma%20Audi_archivos/filelist.xml">
<title>Josà David Angulo</title>
<link rel="themeData" href="Firma%20Audi_archivos/themedata.thmx">
<link rel="colorSchemeMapping"
href="Firma%20Audi_archivos/colorschememapping.xml">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:GrammarState>Clean</w:GrammarState>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText >
<w:DoNotPromoteQF/>
<w:LidThemeOther>ES-CO</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel >
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:"Century Gothic";
panose-1:2 11 5 2 2 2 2 2 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:647 0 0 0 159 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
color:black;}
a:link, span.MsoHyperlink
{mso-style-noshow:yes;
mso-style-priority:99;
color:blue;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:purple;}
p
{mso-style-noshow:yes;
mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
color:black;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
..MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 3.0cm 70.85pt 3.0cm;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabla normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]-->
<meta name="CREATED" content="20061023;14550935">
<meta name="CHANGEDBY" content="Jose Angulo">
<meta name="CHANGED" content="20061023;14593800">
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
<div class="Section1">
<p style="margin: 0cm 0cm 0.0001pt;"><b><span style="font-size:
10pt; font-family: "Century
Gothic","sans-serif"; color: rgb(31, 73,
125);" lang="ES">JosÃ</span></b><b><span style="font-size:
10pt; font-family: "Century
Gothic","sans-serif"; color: rgb(31, 73,
125);" lang="EN-US"> David <span class="SpellE">Angulo</span>
<span class="SpellE">Urzola</span>.<o:p></o:p></span></b></p >
<p style="margin: 0cm 0cm 0.0001pt;"><b><span style="font-size:
10pt; font-family: "Century
Gothic","sans-serif"; color: rgb(84, 141,
212);">Auditoria y Sistemas Ltda.<o:p></o:p></span></b></p>
<p style="margin: 0cm 0cm 0.0001pt;"><span style="color: rgb(84,
141, 212);" lang="ES"><a
href="mailto:Gerencia@microexpressltda.com"><span
style="font-size: 9pt; color: rgb(84, 141, 212);">jose.angulo@auditoriaysistemas.com</span></a><o:p></o:p></span></p>
<p style="margin: 0cm 0cm 0.0001pt;"><b><span style="font-size:
10pt; font-family: "Century
Gothic","sans-serif"; color: rgb(84, 141,
212);">Tel. (57) 5-6643022 – 6644555<o:p></o:p></span></b></p>
<p style="margin: 0cm 0cm 0.0001pt;"><b><span style="font-size:
10pt; font-family: "Century
Gothic","sans-serif"; color: rgb(221, 217,
195);"><span style="">Â </span>Cartagena –
Colombia<o:p></o:p></span></b></p>
</div>
</div>
<br>
El 2010-08-03 10:47 a.m., Martin Del Angel escribiÃ:
<blockquote cite="mid:4c583a07$[email=1@svctag-j7w3v3j.]1@svctag-j7w3v3j.[/email]" type="cite">On
7/30/2010 4:30 PM, Jaxmax wrote:
<br>
<blockquote type="cite">Buenas, este es mi primer post y soy algo
nuevo en esto de xailer,
<br>
<br>
necesito ayuda ya que quiero insertar imÃgenes en una base de
datos (mysql)
<br>
he leÃdo que se guarda como tipo de dato binario y por aquà en
el foro vi
<br>
como lo hacÃan
<br>
<br>
he aqui lo que estoy haciendo:
<br>
cargo la imagen desde un archivo:
<br>
 IF ::oFileOpenImageDlg1:Run()
<br>
ÂÂÂÂÂÂÂÂÂÂ ::oImage1:oPicture :=
::oFileOpenImageDlg1:cFullFileName
<br>
ÂÂÂÂÂÂÂÂ ENDIF
<br>
-----------------------------------------------------
<br>
despuÃs
<br>
convierto la imagen a stream y la asigno a una variable:
<br>
cImagen:=::oImage1:oPicture:SaveToStream()
<br>
<br>
-----------------------------------------------------------
<br>
<br>
despues trato de hacer el insert en la tabla la cual tiene 1
solo campo "imagen"
<br>
tipo mediumblob (solo es para pruebas esta tabla)
<br>

<br>
<br>
 cCon:=" insert into imagenes set imagen='"+cImagen+"'"
<br>
<br>
ÂÂ if !appdata:origen1:execute(cCon,cCon)
<br>
ÂÂÂÂ msginfo("Operacion De imagen Rechazada...")
<br>
ÂÂÂÂ logfile(cCon)
<br>
ÂÂÂÂ return(.t.)
<br>
ÂÂ endif
<br>
<br>

<br>
<br>
la conexiÃn a la base de datos la hago mediante Odbc
<br>
<br>
y esto es lo que me queda en el logfile que se crea:
<br>
<br>
 insert into imagenes set imagen='BMÃÃ
<br>
<br>
y me marca un error al tratar de hacer el insert pondrÃa una
imagen pero
<br>
es mi primer post y no me deja, pero es una ventana de error que
dice:
<br>
<br>
Xailer DataControls Error
<br>
<br>
ÂÂÂ [Ninguno]
<br>
ÂÂÂÂÂÂ Â insert into imagenes set imagen='BMÃÃ
<br>
<br>
cual es el error? o que tengo que hacer para poder guardar las
imÃgenes?
<br>
</blockquote>
<br>
<br>
Jaxmax Buen Dia:
<br>
<br>
Lo que deseas hacer creo pensar es lo mismo que hacemos nosotros.
<br>
<br>
Tenemos una aplicaciÃn donde en los Reportes ponemos el logo de la
Empresa el cual el usuario selecciona una imagen Jpeg desde disco
y es grabada en un campo blob de la tabla de Mysql ,
posteriormente otro usuario en un sitio distinto puede cambiar esa
imagen y poner otra sin problema alguno.
<br>
<br>
<br>
Aqui el cÃdigo:
<br>
<br>
cargar Imagen desde la tabla:
<br>
<br>
cLogo:=TPicture():LoadFromStream(::oSQLCONFIGURACION:LOGO_EM PRESA)
<br>
Donde LOGO_EMPRESA es una campo BLOB
<br>
<br>
Para mostrarlo puedes usar un TBevel y en su propiedad oBKGnd
asignar la variable cLogo
<br>
<br>
::oLogo:oBKGnd:=cLogo
<br>
<br>
<br>
<br>
Para Salvar :
<br>
<br>
::oSQLConfiguracion:LOGO_EMPRESA:=MemoRead(cArchLogo)
<br>
<br>
Donde cArchLogo es el archivo de la nueva imagen seleccionada a
grabar.
<br>
<br>
Se usa MemoRead para conservar el Formato original.
<br>
<br>
<br>
Me Funciona muy bien y utilizando los Datasets de Xailer sin
problema alguno.
<br>
<br>
<br>
<br>
<br>
Saludos...
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</blockquote>
</body>
</html>
Jose David Angulo Urzola
Auditoria y Sistemas Ltda.
Cartagena-Colombia
Jaxmax
Mensajes: 21
Registrado: Mié Jul 28, 2010 10:31 pm

Error al guardar imagen en bdd mysql

Mensaje por Jaxmax »

Gracias a todos por la ayuda al final encontre 2 formas de hacerlo
la primera fue en convertirlo a hexadecimal con la siguiente funcion:
http://forums.fivetechsupport.com/viewt ... p?f=3&t=18 411

cRuta:=::oFileOpenImageDlg1:cFullFileName
cImagen:=MEMOREAD(cruta)
txtImg:=Text2Hex(cImagen)
cCon:=" insert into imagenes set";
+" ,imagen='"+txtImg+"'"
if !appdata:origen1:execute(cCon,cCon)
msginfo("Operacion De imagen Rechazada...")
logfile(cCOn)
return(.t.)
endif

y para cargar la imagen desde la bdd

cCon:=" select imagen from imagenes where id='1'"
adImg:= appdata:origen1:QueryArray(cCon)
cImg:=Hex2Text(adImg[01,01])
::oImage2:oPicture:=TPicture():LoadFromStream(adimg[01,01])

Pero esto solo me funciono con imagenes GIF y BMP
Aca la otra forma:
Aqui en vez de utilizar DataSource de ODBC utilice Datasource de MySQL(TMySQLDataSource) y Datasets(TSqlTable)

::oSQLTable1:Open()
::oSQLTable1:edit()
::oSQLTable1:addnew()
::oSQLTable1:imagen :=MEMOREAD(cruta)
::oSQLTable1:update()
::oSQLTable1:end()

Aqui si funciona con cualquier archivo
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Error al guardar imagen en bdd mysql

Mensaje por jfgimenez »

Max,
> cCon:=" insert into imagenes set";
> +" ,imagen='"+Text2Hex(cImagen)+"'"
....
> cImg:=Hex2Text(adImg[01,01])
La función Text2Hex() que mencionas es el equivalente de la función
StringToHex() que yo te mencioné en el otro mensaje. Pero, tal y como la
usas aquí­, lo que estás consiguiendo es que la imagen ocupe el doble de
espacio dentro de la BD, porque la estás guardando como una cadena
hexadecimal. Lo que yo te puse la guardaba como binario, ocupando
exactamente el espacio que ocupe la imagen.
De todos modos, sigues teniendo el problema de las imágenes grandes como te
comenté anteriormente.
> ::oSQLTable1:Open()
>
> ::oSQLTable1:edit()
> ::oSQLTable1:addnew()
>
> ::oSQLTable1:imagen :=MEMOREAD(cruta)
>
> ::oSQLTable1:update()
>
> ::oSQLTable1:end()
>
> Aqui si funciona con cualquier archivo
Exactamente. Esta es la mejor forma de hacerlo. El datasource para MySQL de
Xailer, ya se encarga de "trocear" la imagen en bloques del tamaño adecuado
para no sobrepasar nunca el tamaño de los buffers de comunicación, evitando
así­ el problema de las imágenes grandes.
Por cierto, la versión 2.1 de Xailer tendrá un método de TPicture y una
función para crear miniaturas (thumbnails) de las imágenes. Esto permite
crear carruseles de imágenes sin tener que cargar todas las imágenes
completas a memoria o traerlas del servidor. P.ej., lo siguiente crearí­a una
miniatura de 120x120 pixels en formato jpeg de la imagen:
::oSQLTable1:miniatura := CreateThumbnail( MemoRead( cruta ), 120, 120 )
Ten en cuenta que una imagen tipo de ese tamaño y en ese formato ocupa tan
sólo 3 ó 4 KB, mientras que la imagen completa en formato jpeg de una cámara
de tan sólo 3MP ocupa apróximadamente 1 MB. Y si la guardas en formato BMP,
la misma imagen ocupa unos 10 MB.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder