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
|
|||
|
|||
InterBase, c++ Builder y campos Blob
Estoy haciendo una aplicación en Borland C++Builder, y manejo una Base de datos de InterBase. En ella necesito guardar videos. (Para que no surga la discusión, son pequeños y ya está evaluada la opción de guardarlos fuera y guardar sólo una referencia al fichero.) Bueno, los videos los guardo en campos Blob. Ahí va mi problema: al guardarlos parece que se guardan bien, porque la base de datos incrementa lo mismo que ocupa el fichero, (para ello utilizo el método loadFromFile(), y luego a la hora de sacarlos, utilizando SaveToFile(), me crea el nuevo fichero pero vacío (0Kb).
No tengo ni idea de porque es. Si alguien sabe algo del tema, porfavor me ayude. Saludos |
#2
|
|||
|
|||
Hola
Que componentes estas usando? Yo trabajé con los ibx y dbx. Saludos TJose |
#3
|
|||
|
|||
Hola Jose, gracias por responder.
Yo utilizo los componentes ibx. En concreto ahora creo que el problema es al guardarlo en la base de datos. He probado a ver el tamaño del campo blob en el que supuestamente está el video, y me dice que su tamaño es 0. Eso explicaría que lo leo bien, y por eso me crea el fichero vacío. Espero que me puedas contar como insertarlo a ver si van por ahí los tiros. Muchas gracias por todo |
#4
|
|||
|
|||
Hola
dstDocumentacion es un TIBDataSet con un select que incluye el campo Documento El ejemplo muestra como guardar y recuperar el documento (exportar - importar). Recuerdo haberlo probado con archivo muy grandes y funcionaba. La definición del campo documento está dada por:
Código:
void __fastcall TfrmPrincipal::aclImportarExecute(TObject *Sender) { dlgAbrir->Filter = "Documentos de Word (*.doc)|*.DOC|Archivos RTF (*.rtf)|*.RTF|Archivos de texto (*.txt)|*.TXT|Todos los archivos (*.*)|*.*"; if(dlgAbrir->Execute()){ AnsiString Archivo; Archivo = dlgAbrir->FileName; TBlobField *Documento = (TBlobField *) datDocumentacion->dstDocumentacion->FieldByName("Documento"); Documento->Clear(); Documento->LoadFromFile(Archivo); edtArchivo->Text = ExtractFileName(Archivo); } } //--------------------------------------------------------------------------- void __fastcall TfrmPrincipal::aclExportarExecute(TObject *Sender) { dlgGuardar->Filter = "Documentos de Word (*.doc)|*.DOC|Archivos RTF (*.rtf)|*.RTF|Archivos de texto (*.txt)|*.TXT|Todos los archivos (*.*)|*.*"; dlgGuardar->FileName = edtArchivo->Text; if(dlgGuardar->Execute()){ AnsiString Archivo; Archivo = dlgGuardar->FileName; TBlobField *Documento = (TBlobField *) datDocumentacion->dstDocumentacion->FieldByName("Documento"); Documento->SaveToFile(Archivo); } } //--------------------------------------------------------------------------- TJose |
#5
|
|||
|
|||
Voy a probarlo a ver si consigo hacerlo funcionar y te cuento.
Muchísimas gracias. Alberto |
#6
|
|||
|
|||
Problema resuelto
Hola Jose, la verdad es que al principio no conseguía hacerlo funcionar. Pero me diste algunas pistas para solucionarlo. contigo y con la ayuda de un programa que desde aquí hago publicidad, ya que me ha parecido algo cojonudo. Si utilizais InterBase, olvidaros de IBConsole y utilizad IBExpert, os ayudará mucho más. Bueno, el problema era que se me guardaba en la bbdd pero no se guardaba la referencia a él dentro del campo blob, pero todavía no se porque, así que la obtengo después de hacer loadfromfile, y se la guardo en el campo. Ahora bien, me surge otro problemilla, creo que similar. A la hora de borrar, me ocurre que se me borra aparentemente bien, pero el tamaño de la bbdd no decrementa. Imagino que unicamente borro la referencia, y no lo que ocupa verdaderamente el fichero. A ver si alguien sabe como puedo hacerlo. Muchas gracias Saludos, Alberto |
#7
|
|||
|
|||
Hola
Cita:
Saludos TJose |
#8
|
|||
|
|||
muchas gracias, es un gran alivio.
la base de datos podría crecer mucho, pero no creo que se borren muchos, asi que podría pasar de ello, y si no pues probaré el backup/restore. gracce per tutto |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
C++ Builder, Interbase y los campos Blob | Albertuni | C++ Builder | 1 | 27-03-2007 13:35:35 |
error, Interbase y delphi, edicion campos Blob | athos | Conexión con bases de datos | 0 | 16-07-2004 21:51:09 |
Interbase, edicion de campos tipos Blob | athos | Conexión con bases de datos | 0 | 16-07-2004 16:31:15 |
Campos Blob | Huer | Varios | 1 | 11-06-2003 10:39:06 |
Campos Blob | Kafu | Firebird e Interbase | 2 | 08-05-2003 18:07:54 |
|