Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-03-2010
r1d2m3 r1d2m3 is offline
Miembro
 
Registrado: nov 2009
Posts: 88
Poder: 15
r1d2m3 Va por buen camino
campos blob (memo) para almacenar un archivo en mysql

Hola colegas, estoy con el siguiente inconveniente, debo grabar en una base de datos MySQL, un documento (tipo rtf), y, hasta donde he podido avanzar, debo hacerlo bajo un campo tipo blob, hasta aquí todo bien, pero al intentar enviarlo a la bd, tengo un problema de definición del parámetro y me tira un error. Les muestro el código que estoy usando y luego les transcribo el error.

Código Delphi [-]
procedure GrabarTexto(varIDTexto:Integer; varStream:TStream);
    var
      cmdActDatos:TADOQuery;

    begin
      cmdActDatos:=TADOQuery.Create(nil);
      cmdActDatos.Connection:=cnn;
      cmdActDatos.Parameters.CreateParameter('nroRs', ftInteger, pdInput, 10, False);
      cmdActDatos.Parameters.CreateParameter('descripBreve', ftString, pdInput, 30, False);
      
      //en este línea es donde salta el siguiente error: la aplicación utiliza un valor de tipo no válido 
      //para la operación actual
      cmdActDatos.Parameters.CreateParameter('pltTexto', ftBlob, pdInput, 10000 , false);
      cmdActDatos.SQL.Add('insert into tabmaetextos (nroRs, descripBreve, pltTexto) Values (:nroRs, :descripBreve, :ltTexto)');
      cmdActDatos.Parameters.ParamByName('nroRs').Value := varIDTexto;
      cmdActDatos.Parameters.ParamByName('descripBreve').Value := 'Probando textos';
      cmdActDatos.Parameters.ParamByName('pltTexto').LoadFromStream(varStream, ftBlob);
      cmdActDatos.ExecSQL;

    end;

pido disculpas por lo rudimentario del código, pero se trata de un prototipo que después será emprolijado a los efectos de protegerlo contra fallos, también vi por otros hilos que no se recomienda guardar documentos en las bd, comparto la opinión pero en este caso, los documentos siempre serán de muy bajo peso, razón por la cual la bd no crecerá fuera de control.

Gracias y quedo a la espera de vuestros comentarios.
Responder Con Cita
  #2  
Antiguo 30-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

A simple vista veo que tienes algunas lineas de códigos que estan por demás y cómo siempre es bueno destruir(liberar lo que se crea), que quisas sean las causantes del error.
Prueba hacerlo de ésta manera:
Código Delphi [-]
procedure GrabarTexto(varIDTexto:Integer; varStream:TStream);
var cmdActDatos:TADOQuery;
begin
     cmdActDatos:=TADOQuery.Create(nil);
    try
      cmdActDatos.Connection :=cnn;
      {No es necesario crear los parametros por código ya que delphi los crea automáticamente
       cuando en la consulta SQL anteponemos los dos puntos ":"}
      cmdActDatos.SQL.Add('insert into tabmaetextos (nroRs, descripBreve, pltTexto) Values (:nroRs, :descripBreve, :ltTexto)');
      cmdActDatos.Parameters.ParamByName('nroRs').Value := varIDTexto;
      cmdActDatos.Parameters.ParamByName('descripBreve').Value := 'Probando textos';
      cmdActDatos.Parameters.ParamByName('pltTexto').LoadFromStream(varStream, ftBlob);
      cmdActDatos.ExecSQL;
    finally
     cmdActDatos.Free; // Siempre debemos liberar los objetos que hemos creado cuando ya no lo necesitemos
   end;
end;
.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 31-03-2010
r1d2m3 r1d2m3 is offline
Miembro
 
Registrado: nov 2009
Posts: 88
Poder: 15
r1d2m3 Va por buen camino
Gracias por la respuesta, pruebo y luego comento como sale.

Saludos.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como usar un campo blob para almacenar un archivo en mysql? r1d2m3 SQL 2 22-04-2010 13:42:42
Almacenar y usar consultas vistas y procedimientos en campos blob sitrico Firebird e Interbase 6 07-09-2007 05:19:05
Encryptacion para memo o Blob vroa74 OOP 8 04-07-2007 21:03:48
Campos Memo son MySQL 5.0 vinicc Conexión con bases de datos 2 18-12-2006 21:29:11
Cómo declarar un campo blob en interbase para almacenar un *.jpg jaderl Firebird e Interbase 1 20-10-2004 16:50:02


La franja horaria es GMT +2. Ahora son las 03:49:44.


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