FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
insertar un archivo en un campo blob desde delphi
hola amigos yo se que muchos tal ves se molesten y digan que busque en los hilos pero en verdad que estuve buscando y no encontre mucho que me pueda ayudar o mas bien, me falta un poco de conocimiento, asi que recurro a ustedes, lo que quiero hacer es subir un archivo a una base de datos que es postgre(<-no se espanten no es cosa del otro mundo) digamos que en vez de postgre dije mysql el procedimiento es similar(muchos temen al coco postgre), tengo delphi2006, tengo un tdatabase y un tquery se insertar informacion a la base de datos, lo que no me queda claro es como insertar el archivo en el campo tipo blob, cuando digo el archivo puede ser de diferentes tipos, pdf,doc,ppt,xls, etc.
En teoria cuando doy click en el boton ,se abre el opendialog y selecciono el archivo que se pretende subir a la base de datos, la base de datos se llama "basedatosprueba" y la tabla adonde van los archivos se llama "tabla_prueba", esta tiene tres campos que son, llave(integer),nombre(character) y archivoblob(blob) este es parte del codigo que utilizo, lo que no se es como insertar el archivo dentro del campo, puedo insertar en los demas campos informacion pero el archivo en el blob no, seria de mucha ayuda si alguien me explicara un poco como es que se hace,
Les agradezco su atencion y su ayuda, cualquier duda o sugerencia es bienvenida
__________________
En movimiento... |
#2
|
||||
|
||||
Hola
Ya sabes, no me hagas mucho caso por que no entiendo muy bien tu codigo, pero lo que veo es esto. Bueno, hasta aqui, si ves algo, lo dices. Saludos |
#4
|
||||
|
||||
ok explico un poco mi codigo hasta donde yo entiendo
la parte de arriba es por que el archivo que voy a subir a la base de datos la mando a un olecontainer para que se muestre
este codigo tal cual lo puse y me manda un error de EDatabaseerrror 'querygestion:field'archivoblob' not found, supongo que no encuentra ese campo aunque si existe en la base de datos, sigo revisando si pueden ayudarme o sugerir algo es bienvenido gracias por su atencion
__________________
En movimiento... |
#5
|
||||
|
||||
Cita:
con eso inserto los datos, pero el archivo que seleccione lo quiero insertar en la misma tabla en un campo que se llama 'archivobob', pero eso es lo que no se, quisiera si se pudiera, hacer algo mas o menos asi para poder insertar el archivo tambien
se me complica lo de subir el archivo, los codigos que hay en los foros, he intentado probarlos y pues no los comprendo bien, pues no obtengo resultados les agradeceria mucho si me pudieran ayudar
__________________
En movimiento... Última edición por thelibmx fecha: 13-12-2007 a las 21:01:58. |
#6
|
||||
|
||||
Hola
Yo de estas cosas no se, pero si el nombre blob es una variable de tipo tstream (blob:TStream; ), no se tendria que concatenar tambien? No se, la verdad es solo un pensamiento. Saludos |
#7
|
||||
|
||||
Cita:
[Pascal Error] frmenu.pas(198): E2010 Incompatible types: 'string' and 'TStream' alguna sugerencia?
__________________
En movimiento... |
#8
|
||||
|
||||
Hola
Pues parece que el campo blob es string, recuerda, no se de esto. Tal vez asi: Saludos |
#9
|
||||
|
||||
agradesco tu ayuda en verdad, yo estoy mas perdido, pero algo bueno siempre se aprende, se supone que blob esta declarado como Tstream, aun con el QuotedStr sigue marcando el mismo error, creo que hay algo que se esta pasando o tal ves es la manera incorrecta de hacerlo
no pense que fuera tan complicado subir un archivo a una base de datos
__________________
En movimiento... |
#10
|
||||
|
||||
lo he tratado de arreglar pero no se ve bien
Si algun moderador lo arregla, por favor Esta en el siguiente post. Gracias Última edición por Caral fecha: 13-12-2007 a las 22:11:30. |
#11
|
||||
|
||||
Hola
Y asi: Código Delphi [-]var blob:TBlobStream; blobf:TBlobField; fs:tstream; begin Este es el ejemplo completo Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject); var Stream1: TBlobStream; Stream2: TStream; begin Stream1 := TBlobStream.Create(Table1Notes, bmRead); try ClientDataSet1.Edit; { here’s a different way to create a blob stream } Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Remarks'), bmReadWrite); try Stream2.CopyFrom(Stream1, Stream1.Size); ClientDataSet1.Post; finally Stream2.Free; end; finally Stream1.Free; end; end; Insisto, no se, pero esta en el help Saludos |
#12
|
||||
|
||||
Hola
Ya consulte a mi Maestro Egostar y en el help sale esto: Ahi lo dice todo. Saludos |
#13
|
||||
|
||||
no se si sea mucho abusar pero podrias explicar un poco el codigo ?
__________________
En movimiento... |
#14
|
|||
|
|||
La cosa es mas sencilla q esto :
un campo Blob persistente tiene los metodos LoadFromFile y LoadFromStream, o bien haces un cast a la clase TBlobField, si el campo no es persistente, te quedas con el q mas te conviene de los dos.. |
#15
|
||||
|
||||
Cita:
__________________
En movimiento... |
#16
|
||||
|
||||
Bueno mira no se si ayude o complique la cosa a estas alturas pero te recomiendo lo siguiente:
Modifica la sentencia SQL asi: Original:
Modificada:
De esa manera usarás parametros para manipular los datos en SQL (el nombre del campo precedido de dos puntos ":") Luego (creo) que puedes hacer:
Tambien tengo por ahi un codigo para el loadfromfile y loadfromstream pero no en este equipo prueba y si te sirve mañana te puedo poner más información.
__________________
Sitrico Última edición por sitrico fecha: 14-12-2007 a las 03:12:04. |
#17
|
||||
|
||||
muchas gracias sitrico, pues ahorita no puedo probar el codigo por que estoy en mi casa pero llegando al trabajo lo pruebo y te digo que tal, veo que el archivoblob, esta asignado a un memotext, supongo que eso es para subir un archivo de texto, me parece que si quisiera hacerlo con cualquier tipo de archivo tendria que ser un loadstream, ojala puedas postear el otro codigo, de antemano muchas gracias por la atencion y pues por la ayuda
__________________
En movimiento... |
#18
|
||||
|
||||
No pude enviarlo hoy pero encntré este ejemplo:
El TBlobField es más o menos equivalente al Querygestion.ParamByName(BlobField).
__________________
Sitrico |
#19
|
||||
|
||||
[quote=sitrico;252575]Bueno mira no se si ayude o complique la cosa a estas alturas pero te recomiendo lo siguiente:
Modifica la sentencia SQL asi: Original: Código Delphi [-]Querygestion.SQL.add('insert into tabla_prueba(llave,nombre,archivoblob) values '+ Edit1.Text+','''+tdEditAsunto.Text+''','+QuotedStr(blob)+')'); Modificada: Código Delphi [-]Querygestion.SQL.add('insert into tabla_prueba(llave,nombre,archivoblob) values '+ '(:llave,:nombre,:archivoblob)'); De esa manera usarás parametros para manipular los datos en SQL (el nombre del campo precedido de dos puntos ":") Luego (creo) que puedes hacer: Código Delphi [-] Querygestion.ParamByName('llave').asinteger := unentero; Querygestion.ParamByName('nombre').AsString := uncharacter Querygestion.ParamByName('archivoblob').AsString := memo.text quote] con ese codigo manda un mensaje de "table is read only" ya verifique en las propiedades del ttable y la propiedad read only esta desactivada, cheque en el tdatabase haber si podria haber alguna propiedad ahi y no encontre algo que pudiera afectar, alguna sugerencia o comentario que me pudieran dar? gracias
__________________
En movimiento... |
#20
|
||||
|
||||
Cita:
Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Insertar y recuperar una imagen en un campo blob | bluegene | Lazarus, FreePascal, Kylix, etc. | 1 | 30-03-2007 20:07:21 |
Insertar y recuperar una imagen en un campo blob | bluegene | MySQL | 0 | 30-03-2007 20:01:43 |
Insertar datos en archivo word desde aplicacion Delphi | JulioGO | Servers | 1 | 24-02-2007 22:43:16 |
insertar registro en campo blob con asp | oarias | Firebird e Interbase | 0 | 09-02-2007 18:42:50 |
¿Como Guardar un Bmp/Jpg en un campo BLOB desde Delphi? | LuCkY_007 | MySQL | 4 | 18-01-2007 12:05:26 |
|