![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
lo que dice casimiro no es un método de un FieldbyName('xxxxx').AsBlob, sino mas bien que al crear el DataSet, donde especifica que campo y que tipo de dato es, un TField si no estoy mal, pero esto no serviría para Dataset´s creados en tiempo de ejecución.
__________________
mas confundido que Garavito el día del Niño. |
|
#2
|
||||
|
||||
|
Buenas amigos,
Aplicando vuestros sabios consejos al final he conseguido algo de lo que pretendía, sacar una imagen de un blob y guardarlo en un archivo para poder visualizarlo externamente. Lo saqué de otro post.
En este caso, tenia almancenadas solo imagenes jpg, pero cambiando un poco las cosas posteriormente, podre meter finalmente los pdf o lo que sea (tal como decia casimiro, gracias). El método que comentabais de no usar intermediarios sino guardarlo directamente no he sido capaz de realizarlo , pero este sirve.Me falta ahora implementarlo al reves, que no tiene que ser dificil ![]() La última cuestión es relacionado con el shellexecute, funcionar funciona estupendamente, aunque me gustaba más el tprocess, tal y como he visto, pero le falla 1 punto: - Se necesita un ejecutable a fuerza (si, opendocument funciona pero no es ni mas ni menos que un shellexecute). Y la ventaja que si he visto es que si abres el archivo con tprocess, hasta que no cierras la aplicacion externa no vuelves a tu programa. Entonces, de que otra forma se le puede decir a tprocess que abra un archivo, por ejemplo, un pdf, con el programa determinado en la máquina que lo estas corriendo. saludos y gracias |
|
#3
|
|||
|
|||
|
Puedes guardar lo que sea en un BLOB, pero MOSTRARLO como lo que es, en una aplicacion, solo lo podras hacer si tienes el driver especifico para el caso.
El asunto es que hay infinidad de formatos de archivos, y algunos no son necesariamente abiertos, o standard, al grado de que solo se abren, en lo practico, con su aplicacion, o aplicaciones, para el caso. Para PDF necesitas controles de Adobe, que son gratuitos. Una columna para todo tipo de BLOBS, por ejemplo, lo mas probable es que no sea algo muy practico. En mi opinion, tendria que estar muy justificado, por cuestiones practicas. Una de esas cuestiones podria ser la magnitud de la data, aparte de el poder "mostrar" o USAR el BLOB directo de la aplicacion. Mi uso de BLOBS se limita a imagenes, y como hay muchos formatos, he decidido limitar a JPEG y .bmp, por ejemplo (maximo dos TIPOS de blobs en una misma columna), con codigo para filtrar el almacenamiento, y codigo para descifrar el tipo y mostrarlas en la aplicacion. Y aun asi, lo practico es que las imagenes no sean de mucha resolucion, para que el tamaño del BLOB no afecte la fluidez del uso de ellos. Si tu interes es en PDF, es recomedable que te aboques a resolver ESE caso en especifico, antes que tratar de generalizar. |
|
#4
|
||||
|
||||
|
En un BLOB puedes guardar lo que quieras, sin ningún problema, es simplemente una "cadena" de caracteres. Da igual si es una imagen, un pdf, un video, un texto, un mp3, un ejecutable, una base de datos completa, etc. cualquier cosa. La base de datos no va a hacer ningún tipo de control sobre lo que se guarda, le da igual.
Si se extrae lo almacenado en un campo blob y se guarda en disco, si intentamos abrirlo entonces el sistema operativo usará el programa que tenga predeterminado para el mismo, si lo tiene, y en caso contrario dirá que no puede abrirlo. No es ningún problema. En mi extrabajo tenemos un módulo de seguimientos (para clientes/proveedores/artículos/vendedores/documentos/etc.) donde se almacena "cualquier cosa", y puede ser luego visionada, extraída, impresa, reproducida, etc. según el tipo de fichero del que se trate. Por ejemplo, en la ficha de proveedores, en su apartado "Seguimientos" se pueden almacenar sus documentos en formato pdf, fotos de los representantes de la empresa, una imagen escaneada de un periódico donde hablan sobre esa empresa y que conviene tenerlo a mano, etc. cualquier cosa que sirva para tener información sobre ese proveedor. Para este caso en concreto se usa una base de datos externa donde se almacena todo lo concerniente a "Seguimientos", para no recargar la base de datos principal de la gestión comercial. O sea, que no hay que "restringirse" a uno o dos formatos de imágenes o documentos pdf. Que si hace falta almacenar más cosas, se almacenan y no pasa nada. También (y aquí volvemos al eterno debate) se puede almacenar en directorios externos con sus pros y sus contras, que creo que no es necesario recordar. Lo de almacenarlo en una base de datos aparte es porque ya llegan a tamaños bastante considerables, deben rondar ya los 50 gigas de media. Y no es necesario estar haciendo backup todos los días de esa información.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Noteví fecha: 22-09-2012 a las 12:44:07. |
|
#5
|
|||
|
|||
|
Si, Casimiro, pero si para verlos hay que vaciar el Blob de la base de datos a un archivo temporal, y da casi lo mismo que tener ya los archivos originales en un folder, y almacenar en la base de datos solo la ubicacion del archivo.
De esa manera, la base de datos es mas ligera. Lo unico es que la base de datos NO ES portatil. Pero si la base es fija, y los Blobs son grandes, pues en lo personal optaria por solo usar apuntadores a las ubicaciones. Ademas no me es pausible que se guarde "todo tipo de Blobs", pues ya que Blobs pueden ser hasta peliculas, musica, etc, a la cual no le veo caso que se almacenen en base de datos, si no es que sea ESE el uso especifico. Cada caso y uso, sin embargo, se debe de basar en lo que mas conviene. |
|
#6
|
||||
|
||||
|
Claro, cada caso es distinto y hay que estudiarlo por separado.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Estamos de acuerdo en que se puede guardar todo tipo de datos en un blob, la cuestión es que finalidad que le vayas a dar.
Por lo que entiendo, elmug prefiere limitar lo que se va a guardar por política de la empresa y casimiro guarda todo lo que sirve. A fin de cuentas el que lleva el control es el programador, sino quieres que te almacenen archivos grandes, puedes limitar el tamaño también. La aplicación que estoy haciendo, más que nada por utilidad y por seguir aprendiendo, porque al final son para uso propio, va a almacenar finalmente pdf, por una cuestión práctica (un pdf puede constar de varias páginas y en formato de imagen serian tantas imagenes como páginas). Por otro lado, no es que quiera controlar los pdf y tuviera que usar controles adobe, porque estaria limitado a estos, porque yo no uso adobe reader sino foxitreader porejemplo, o bien, si quiero migrar la aplicacion a linux la cosa cambiaria. Como no hay un componente pdf exclusivo en lazarus, la opcion de tprocess me parecia muy buena porque la de shellexecute es exclusiva para windows y además no puedes bloquear la aplicacion hasta que cierras, en este caso, el visor de pdf. Ya no se si tengo que abrir otro post, porque ahora me estoy centrando en la apertura de documentos con el programa determinado en el SO para hacerlo con tprocess, pero esta muy complicado. Opendocument, como digo, al final usa shellexecute. Un saludo y gracias amigos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Cual es la mejor forma de conectar con la BD | GerTorresM | Conexión con bases de datos | 1 | 11-01-2010 16:51:47 |
| Sobre cuál es la mejor opción para trabajar con Word | Gabo | Servers | 6 | 16-01-2008 13:36:21 |
| Eliminar Codigo Cual es la mejor Forma ? | sierraja | Varios | 1 | 12-04-2007 00:41:00 |
| cual es la mejor forma de logearse a mysql... | Arturo | MySQL | 1 | 11-10-2006 17:45:01 |
| cual es la mejor forma ? | martita | Varios | 14 | 07-07-2005 19:35:55 |
|