Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2004
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 57
Poder: 21
Jack Va por buen camino
Parametro para ingresar una variable en un blob

Hola de nuevo, en esta ocasión mi problema es la necesidad de ingresar una variable en un campo blob pero via SQL, es decir aplicandolo como parametro y utilizando un 'UPDATE o INSERT', probé con una variable tstream pero no me
aceptaba esta definicion como parametro. Alguien podría darme una pista. Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 10-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Con lo poco que dices, la única pista que te puedo dar, es que sigas probando, porqué se puede hacer (yo lo tengo en marcha). Si das más información, como la versión de Interbase, componentes utilizados, algo del código que no te funciona, el error que obtienes, ... quizá te podamos ayudar más.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 10-05-2004
Avatar de SCORDOBA
SCORDOBA SCORDOBA is offline
Miembro
 
Registrado: ago 2003
Ubicación: Llano de Brujas. Murcia
Posts: 37
Poder: 0
SCORDOBA Va por buen camino
Hola:

No has dicho con que componentes accedes a la base de datos. si lo estas haciendo desde Delphi con IBX o FIB busca en la calse TParams de TQuery los metodos, LoadFormStream, LoadFromFile.

Saludos
__________________
Ven a Murcia y no solo pasaras calor.
Responder Con Cita
  #4  
Antiguo 10-05-2004
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 57
Poder: 21
Jack Va por buen camino
Mas detalles

Disculpar, creí que me había explicado bien, el firebird es el 1.5, el componente es el ibsql de la paleta ibx de delphi5, el c´digo es algo asi
ibsql.sql.add( 'update Graficos' );
ibsql.sql.add( 'set Campo = :InCampo' );
ibsql.params.byname( 'InCampo' ) = 'variable'.
ibsql.execquery
Si campo esta definido como blob, de que tipo tiene que estar definido 'variable' en delphi.
No se si me explicado muy bien pero en fin, espero alguna contestación. Gracias otra vez
Responder Con Cita
  #5  
Antiguo 11-05-2004
Avatar de SCORDOBA
SCORDOBA SCORDOBA is offline
Miembro
 
Registrado: ago 2003
Ubicación: Llano de Brujas. Murcia
Posts: 37
Poder: 0
SCORDOBA Va por buen camino
Hola

El tipo de variable dedpende de lo que quieras poner. En principio prodria ser cualquiera.

Incorrecto
ibsql.params.byname( 'InCampo' ) = 'variable'.

Correcto

ibsql.params.byname( 'InCampo' ).asBlob = string
ibsql.params.byname( 'InCampo' ).asInteger = Integer
..
ibsql.params.byname( 'InCampo' ).LoadFromFile()
ibsql.params.byname( 'InCampo' ).LoadFromStream()

Estas son algunas de los metodos para introducir informacion en un blob.

Saludos
__________________
Ven a Murcia y no solo pasaras calor.
Responder Con Cita
  #6  
Antiguo 11-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Con componentes dbExpress, esto funciona correctamente. (no utilizo IBX por lo que no te lo puedo confirmar con esos componentes).

Comprueba que el parámetro InCampo lo tienes definido de tipo ftBlob.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 19-05-2004
Avatar de gzerox
gzerox gzerox is offline
Miembro
 
Registrado: may 2004
Ubicación: Edo Nueva Esparta, Venezuela
Posts: 10
Poder: 0
gzerox Va por buen camino
en caso de querer ingresar una imagen, prueba esto

Código Delphi [-]
 Consulta.Close;
 Consulta.SQL.Clear;
 Consulta.SQL.Add('INSERT INTO tabla  (Imagen)');
 Consulta.SQL.Add('VALUES (:img)');
 if Image2.Picture.Graphic  <> nil then begin //si la imagen tiene algo
  M:=TmemoryStream.Create;                    //creo un stream en memoria
  Image2.Picture.Graphic.SaveToStream(M); //asigno la imagen al stream
  M.Seek(0,0);                                        //posiciono el stream al inicio
  Consulta.ParamByName('imh').LoadFromStream(M,ftblob); //lleno el parametro con el stream
  M.Free;  //libero el stream
 end
 else begin  // si no hay imagen que guardar
  M:=TmemoryStream.Create; //creo el memory stream
  M.Clear;                           //lo limpio
  M.Seek(0,0);                    //lo posiciono al inicio
  Consulta.ParamByName('Foto').LoadFromStream(M,ftblob); //lo guardo en el parametro
  M.Free; //libero el stream
 end;
  Consulta.ExecSQL; //ejecuto la sentencia SQL


se puede sin embargo guardar con este codigo cualquier tipo de archivo siempre y cuando se asigne primero al TMemoryStream y luego este se asigne al parametro
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:17:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi