Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2007
gabirojas gabirojas is offline
Miembro
 
Registrado: sep 2007
Posts: 27
Poder: 0
gabirojas Va por buen camino
Acces violation at address... al hacer un tmemorystream

Hola a todos los amigos del Club Delphi. Tengo un error al tratar de guardar un stream en un campo memo en una tabla access. El codigo es el que sigue:

Código Delphi [-]
procedure TForm1.carga1Button1Click(Sender: TObject);
var  
  simagen:tmemorystream;  
  jpg:tjpegimage; 
begin   
  jpg:=tjpegimage.Create;   
  jpg.LoadFromFile(opendialog1.FileName);   
  simagen:=tmemorystream.Create;   
  jpg.SaveToStream(simagen);     
  simagen.Position:=0;   
  dm.ADOTable2.Append;   //al ejecutarse la siguiente linea da el error
  tmemorystream(dm.ADOTable2.FieldByName('imagen')).
  LoadFromStream(simagen);  
  dm.ADOTable2.Post;  
end;

La leyenda del error mencionado es lo que sigue: " Access violation at address 004755fa in module 'prueba.exe'. Read off address 0000A18D".

Donde dm es el DataModule, ADOTable es la tabla que estoy utilizando e Imagen es el campo de la tabla al cual quiero insertar la imagen, que es del tipo memo. Utilizo Delphi 7 y Access.

Muchas gracias anticipadas.

Última edición por dec fecha: 08-09-2007 a las 20:19:37.
Responder Con Cita
  #2  
Antiguo 08-09-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
ese error se debe a que aun no has creado el dm, debes crearlo antes de ejecutarlo
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 08-09-2007
gabirojas gabirojas is offline
Miembro
 
Registrado: sep 2007
Posts: 27
Poder: 0
gabirojas Va por buen camino
crear dm

Hola eduarcol. Muchas gracias por tu respuesta. A que te refieres con crear el dm? Es una unidad datamodule, donde esta innsertado el adoconection y la adotable. Si eres tan amable, dime por favor como se crea. Gracias.
Responder Con Cita
  #4  
Antiguo 08-09-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Para crearlo
Código Delphi [-]
dm := TDataModule.Create(application);

pero antes asegurate que no lo hayas creado o no esta en los autocreateforms
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 08-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Yo lo que no entiendo es por que haces este typecast
Código Delphi [-]
  tmemorystream(dm.ADOTable2.FieldByName('imagen'))
¿FieldByName devuelve un TMemoryStream? ¿Devuelve siquiera un puntero?
Responder Con Cita
  #6  
Antiguo 08-09-2007
gabirojas gabirojas is offline
Miembro
 
Registrado: sep 2007
Posts: 27
Poder: 0
gabirojas Va por buen camino
tmemorystream

Hola seoane. Gracias por tu respuesta. La idea del Tmemory stream es que me guarde en el campo 'imagen' el stream guardado en la variable simagen. Si conoces algun metodo mejor para guardar imagenes en ese campo, y como recuperlarlo despues, por favor házmelo saber. Muchas gracias.

Última edición por gabirojas fecha: 08-09-2007 a las 22:39:59.
Responder Con Cita
  #7  
Antiguo 08-09-2007
gabirojas gabirojas is offline
Miembro
 
Registrado: sep 2007
Posts: 27
Poder: 0
gabirojas Va por buen camino
crear dm

eduarcol, si coloco en el codigo
Código Delphi [-]
dm:=tdatamodule.create(application);
salta el error "incompatible types tdm and tdatamodule".
Igual creo que esta entre los autocreateforms, porque desde otras instancias del programa puedo insertar y ver datos.
Responder Con Cita
  #8  
Antiguo 09-09-2007
gabirojas gabirojas is offline
Miembro
 
Registrado: sep 2007
Posts: 27
Poder: 0
gabirojas Va por buen camino
Problema resuelto

A todos los que necesiten guardar y recuperar imagenes jpg con ado y access, visiten este link:
Código PHP:
http://www.latiumsoftware.com/es/pascal/0011.php 
Recomendado por: casachan(muchas gracias nuevamente).
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Debug mode y Access violation at address fonx Varios 4 02-08-2007 17:58:43
Error Acces violation at Address... aqui si a qui no... NEG1414 C++ Builder 2 06-05-2007 11:47:41
Access violation at address 00000000 Enan0 Varios 1 03-03-2005 16:16:33
Access violation at address ... Franklim API de Windows 2 03-12-2004 00:09:53
Access violation at address 005553D2 Antonio Rosas E Conexión con bases de datos 2 08-10-2004 20:18:55


La franja horaria es GMT +2. Ahora son las 08:13:50.


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