Hola a todos,
os comento mi problema haber si me podeis ayudar:
tengo una funcion en el modulo de datos que carga una imagen de la base de datos, os pongo el codigo:
Código Delphi
[-]function TMMaestros.CargarFoto(Tabla, CodTabla, Titulo: String): TGraphic;
var
StrSQL: String;
Grafico : TGraphic;
Stream : TStream;
begin
Result := nil;
Tabla := Trim(UpperCase(Tabla));
CodTabla := Trim(CodTabla);
Titulo := Trim(Titulo);
StrSQL := 'SELECT * FROM Archivos '+
'WHERE Tabla = "'+Tabla+'"'+
' AND CodTabla = "'+CodTabla+'"'+
' AND Titulo = "'+Titulo+'"';
Funciones.AbrirQuery(Archivos,StrSQL);
if Archivos.RecordCount = 0 then
begin
StrSQL := 'SELECT * FROM Archivos '+
'WHERE Tabla = "CLIENTES"'+
' AND CodTabla = "BLANCO"'+
' AND Titulo = "FOTO"';
Funciones.AbrirQuery(Archivos,StrSQL);
end;
if Archivos.RecordCount > 0 then
begin
try
Stream := Archivos.CreateBlobStream(ArchivosArchivo,bmRead);
if ExtractFileExt(ArchivosNombre.AsString) = '.bmp' then
Grafico := TBitmap.Create
else
if ExtractFileExt(ArchivosNombre.AsString) = '.jpg' then
Grafico := TJPEGImage.Create;
Grafico.LoadFromStream(Stream);
Result := Grafico;
Grafico.free;
Stream.Free;
except
Grafico.free;
Stream.free;
end;
end
else
Result := nil;
end;
Y despues lo que quiero hacer es desde un FormCliente cargar esa imagen que me devuelve la funcion en un TImagen, lo hago asi:
Código Delphi
[-]try
Foto.Picture.Graphic := MMaestros.CargarFoto('CLIENTES',MMaestros.Clientes.FieldByName('CodCliente').AsString,'FOTO');
except
end;
El error que me da es una violacion de acceso. Delphi 7 contra Access.
En cambio si meto la funcion en el mismo formulario y modifico este trozo de codigo si funciona la funcion:
Código Delphi
[-]try
Stream := MMaestros.Archivos.CreateBlobStream(MMaestros.ArchivosArchivo,bmRead);
if ExtractFileExt(MMaestros.ArchivosNombre.AsString) = '.bmp' then
Grafico := TBitmap.Create;
Grafico.LoadFromStream(Stream);
Foto.Picture.Graphic := Grafico;
Grafico.free;
Stream.Free;
except
Grafico.free;
Stream.free;
end;
Gracias de antemano