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.

Guardar RTF en Mysql

Foro de Xailer profesional en español
Responder
movil
Mensajes: 46
Registrado: Vie Mar 09, 2007 1:12 pm

Guardar RTF en Mysql

Mensaje por movil »

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
<font face="Verdana">Se puede guardar un RTF en un Campo Text o el que
se necesite en tablas de Mysql ?<br>
<br>
Si hay un ejemplo me ayudarÃa.<br>
<br>
Mil Gracias<br>
</font>
<div class="moz-signature">-- <br>
<meta http-equiv="CONTENT-TYPE" content="text/html; ">
<title>Josà David Angulo</title>
<meta name="GENERATOR" content="OpenOffice.org 2.0 (Win32)">
<meta name="CREATED" content="20060220;11005750">
<meta name="CHANGED" content="20061028;16242395">
<meta name="ProgId" content="Word.Document">
<meta name="Originator" content="Microsoft Word 9">
<style>
<!--
P { color: #000000 }
A:link { color: #0000ff }
A:visited { color: #800080 }
-->
</style>
<p style="margin-bottom: 0cm;"><font size="2"><span
style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><b><font
face="Century Gothic"><font color="#000080">JosÃ
David Angulo.</font></font></b></span><font face="Arial"><font
color="#0000ff"><br>
</font></font></font><font face="Arial"><font color="#0000ff"><b><font
style="font-size: 11pt;" size="2">A<span lang="en-GB">uditorÃa
y Sistemas Ltda. </span></font></b></font></font>
</p>
<p style="margin-bottom: 0cm;"><font style="font-size: 8pt;" size="1"><font
face="Arial"><font color="#0000ff">Cartagena
- Colombia</font></font></font></p>
</div>
</body>
</html>
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Guardar RTF en Mysql

Mensaje por Bingen Ugaldebere »

Si, lo he probado metiendo en un campo LongBlob textos, imágenes, PDFs,
Rtfs Docs y Xls mediante un simple Memoread() a una cadena y la cadena
al Sql.
íšnico problema, con Dataset y si el tamaño de los archivos es importante
me pierde bastante memoria RAM y si he de cargar algunos cientos de
docuemntos en una sesión se acaba bloqueando el siustema por falta de
recursos.
Salu2.
José David Angulo escribió:
> Se puede guardar un RTF en un Campo Text o el que se necesite en tablas
> de Mysql ?
>
> Si hay un ejemplo me ayudarí­a.
>
> Mil Gracias
> --
>
> *José David Angulo.*
> *Auditorí­a y Sistemas Ltda. *
>
> Cartagena - Colombia
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Guardar RTF en Mysql

Mensaje por jfgimenez »

Bingen,
> Si, lo he probado metiendo en un campo LongBlob textos, imágenes, PDFs,
> Rtfs Docs y Xls mediante un simple Memoread() a una cadena y la cadena al
> Sql.
>
> Único problema, con Dataset y si el tamaño de los archivos es importante
> me pierde bastante memoria RAM y si he de cargar algunos cientos de
> docuemntos en una sesión se acaba bloqueando el siustema por falta de
> recursos.
Cuando se utiliza SQL hay que cambiar un poco el "chip"... en este caso, lo
que hay que hacer es no traerse los blob al hacer la consulta. Es decir, hay
que hacer el select de los campos que necesitemos y ninguno más, dejando
fuera los blob.
Después, cuando necesitemos uno de los blob, hacemos un select de ese campo
blob unicamente (p.ej. oDataset:QueryValue( "SELECT imagen FROM mitabla
WHERE ..." ) ).
Esto es así porque al hacer el select, el cliente se trae toda la
información que se ha pedido desde el servidor, y si hay muchos registros
(filas) con campos blob, pues todo eso hay que tenerlo en memoria.
--
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
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Guardar RTF en Mysql

Mensaje por Bingen Ugaldebere »

De acuerdo Jose eso esta claro, pero no me refiero a eso cuando hablo de
perdida de recursos, simplemente con hacer un AddNew()a la tabla Sql, ir
montando el registro con varios campos y uno de ellos un longblob con un
memoread de un fichero JPG (hasta aquí­ no pierde recursos) y luego hacer
un Update()los recursos se van mermando a una velocidad increible.
Salu2.
Jose F. Gimenez escribió:
> Bingen,
>
>> Si, lo he probado metiendo en un campo LongBlob textos, imágenes, PDFs,
>> Rtfs Docs y Xls mediante un simple Memoread() a una cadena y la cadena al
>> Sql.
>>
>> íšnico problema, con Dataset y si el tamaño de los archivos es importante
>> me pierde bastante memoria RAM y si he de cargar algunos cientos de
>> docuemntos en una sesión se acaba bloqueando el siustema por falta de
>> recursos.
>
> Cuando se utiliza SQL hay que cambiar un poco el "chip"... en este caso, lo
> que hay que hacer es no traerse los blob al hacer la consulta. Es decir, hay
> que hacer el select de los campos que necesitemos y ninguno más, dejando
> fuera los blob.
>
> Después, cuando necesitemos uno de los blob, hacemos un select de ese campo
> blob unicamente (p.ej. oDataset:QueryValue( "SELECT imagen FROM mitabla
> WHERE ..." ) ).
>
> Esto es así­ porque al hacer el select, el cliente se trae toda la
> información que se ha pedido desde el servidor, y si hay muchos registros
> (filas) con campos blob, pues todo eso hay que tenerlo en memoria.
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Guardar RTF en Mysql

Mensaje por jfgimenez »

Bingen,
> De acuerdo Jose eso esta claro, pero no me refiero a eso cuando hablo de
> perdida de recursos, simplemente con hacer un AddNew()a la tabla Sql, ir
> montando el registro con varios campos y uno de ellos un longblob con un
> memoread de un fichero JPG (hasta aquí no pierde recursos) y luego hacer
> un Update()los recursos se van mermando a una velocidad increible.
Sí, lo entiendo. Lo que pasa es que si haces un bucle con :AddNew(),
entonces pasa lo mismo. Por cada registro que añades, esos datos se quedan
en memoria, y si el bucle es grande, entonces la memoria se agota.
En este caso, mi consejo es, o bien utilizar oDataSource:Execute() con los
comandos insert "a pelo", o filtrar el dataset para que no contenga ningún
registro (p.ej. WHERE FALSE) y refrescarlo cada pocos registros para que no
mantenga los datos en memoria.
Sé que todo esto pueden parecer artifícios rebuscados, pero hay que tener en
cuenta que en Xailer se han diseñado los dataset para "simular" en gran
parte la forma de trabajar de los dbf en sql, pero en determinadas
circunstancias (como el caso de los blob grandes) hay que tener en cuenta
estas cosas para evitar problemas.
--
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
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Guardar RTF en Mysql

Mensaje por Bingen Ugaldebere »

Prueba superada pero no se puede hacer como me ha sugerido Jose.
Un sql:Execute e intentar pasarle la cadena de caracteres que devuelve
un MemoRead de una foto por ejemplo da problemas puesto que se encuentra
caracteres extraños y casca.
Me ha costado una noche de insomnio pero he descubierto la mejor manera
y mas sencilla de cargar a un LongNlob cualquier archivo y no es otra
que no hacerlo con Xailer sino parasrel el trabajo a MySql que lo hace
mucho mejor.
El truco es hacer una cadena a ejecutar con un Insert Into que incluya
una función de MySql Load_File() que se encarga de hacer el trabajo por
nosotros. OJO MySql no admite las barras de directorio de Windows por
eso hay que transformarlas en las de Html o Linux / y ya está.
cSelect:="Insert Into Imagenes (Clave,Descripcion,Imagen) Values ("+;
"'"+nImage+"',"+;
"'"+StrTran(cNombreArchivo,"","/")+"',"+;
"Load_File('"+StrTran(cNombreArchivo,"","/")+"') )"
Appdata:MySql:Execute( cSelect )
Acabo de cargar 7900 fotos en un For-Next sin ningún problema de perdida
de memoria ni nada por el estilo.
Espero que os sirva.
Salu2.
Avatar de Usuario
jasm
Mensajes: 447
Registrado: Mar Jul 08, 2008 8:12 pm

Guardar RTF en Mysql

Mensaje por jasm »

Bingen,
¿Esto lo estas haciendo contra un servidor MySQL instalado en la misma
PC o en uno instalado en un otro equipo?
Saludos
Alf+.
Bingen Ugaldebere escribió:
> Prueba superada pero no se puede hacer como me ha sugerido Jose.
>
> Un sql:Execute e intentar pasarle la cadena de caracteres que devuelve
> un MemoRead de una foto por ejemplo da problemas puesto que se encuentra
> caracteres extraños y casca.
>
> Me ha costado una noche de insomnio pero he descubierto la mejor manera
> y mas sencilla de cargar a un LongNlob cualquier archivo y no es otra
> que no hacerlo con Xailer sino parasrel el trabajo a MySql que lo hace
> mucho mejor.
>
> El truco es hacer una cadena a ejecutar con un Insert Into que incluya
> una función de MySql Load_File() que se encarga de hacer el trabajo por
> nosotros. OJO MySql no admite las barras de directorio de Windows por
> eso hay que transformarlas en las de Html o Linux / y ya está.
>
> cSelect:="Insert Into Imagenes (Clave,Descripcion,Imagen) Values ("+;
> "'"+nImage+"',"+;
> "'"+StrTran(cNombreArchivo,"","/")+"',"+;
> "Load_File('"+StrTran(cNombreArchivo,"","/")+"') )"
>
> Appdata:MySql:Execute( cSelect )
>
> Acabo de cargar 7900 fotos en un For-Next sin ningún problema de perdida
> de memoria ni nada por el estilo.
>
> Espero que os sirva.
>
> Salu2.
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Guardar RTF en Mysql

Mensaje por Bingen Ugaldebere »

De momento en local solamente.
Por??
Salu2.
Avatar de Usuario
jasm
Mensajes: 447
Registrado: Mar Jul 08, 2008 8:12 pm

Guardar RTF en Mysql

Mensaje por jasm »

Bingen Ugaldebere escribió:
> De momento en local solamente.
>
> Por??
Por que el comando INSERT se enví­a al servidor y es muy posible que en
el servidor no encuentre la ruta del archivo.
Saludos
Alf+.
>
> Salu2.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Guardar RTF en Mysql

Mensaje por jfgimenez »

Bingen,
como dice José Alfonso, no te va a funcionar en remoto. Esta es la
documentación de la función Load_File():
http://dev.mysql.com/doc/refman/5.1/en/ ... tions.html #function_load-file
Te remarco lo importante:
"To use this function, the file must be located on the server host,..."
--
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
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Guardar RTF en Mysql

Mensaje por Bingen Ugaldebere »

Gracias a los dos, ya lo he leido en la yuda y no creo que tenga
problemas, ya le diré a mi clase tScanner que mande el archivo temporal
al servidor antes de hacer el Load_File y listo no creo que me de problemas.
Salu2.
Jose F. Gimenez escribió:
> Bingen,
>
> como dice José Alfonso, no te va a funcionar en remoto. Esta es la
> documentación de la función Load_File():
> http://dev.mysql.com/doc/refman/5.1/en/ ... tions.html #function_load-file
>
> Te remarco lo importante:
> "To use this function, the file must be located on the server host,..."
>
Responder