Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Parametro para ingresar una variable en un blob (https://www.clubdelphi.com/foros/showthread.php?t=10062)

Jack 10-05-2004 09:41:54

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.

guillotmarc 10-05-2004 11:46:02

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.

SCORDOBA 10-05-2004 16:01:53

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

Jack 10-05-2004 22:05:09

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

SCORDOBA 11-05-2004 09:37:05

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

guillotmarc 11-05-2004 10:37:37

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.

gzerox 19-05-2004 18:33:21

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


La franja horaria es GMT +2. Ahora son las 03:32:51.

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