更新记录里的图像数据(或删除重复记录)(100)

  • 主题发起人 主题发起人 嚼槟榔
  • 开始时间 开始时间

嚼槟榔

Unregistered / Unconfirmed
GUEST, unregistred user!
各位前辈:小弟用ACCESS利用内存流存储含有图像数据的记录,存储成功后,但是我又想更新记录里面的图像数据,请问怎么做?我自己设计的思路是这样的,在数据表中不设定主键,在添加数据过程中,其它字段值不作改变,只改变图像(例如:同一个名字有两个不同的照片记录),实际上就更新了图像,于是就出现了重复相同的记录,再把以前的记录删除,留下图像改变了的记录,但是问题来了,提示错误信息“键列信息不足....”,于是我就利用‘select distinct * from tableName’来得到无重复记录的结果集,但是又提示‘pic 中不得含有bolb或ole 对象’。
 
因为你有相同的纪录,所以更新的时候不知道该更新哪行 所以会提示“键列信息不足”为什么不做主键?另外,更新为什么不直接修改图像,而是重新添加了一条新纪录再删除旧的?
 
问题就是怎么更新(修改)选定记录里面的图像啊?adoquery1.sql.add('update datename set image=?????? where ??????')
 
1.主键在数据库的设计中是绝对绝对必要的,赶紧修改表结构吧。2.对图像字段重新赋值就更新了图像了。
 
叶前辈,小弟也感觉必须要用主键,但小弟水平有限,请问怎么对图像字段重新赋值呢?用更新语句,还是其它,请具体一二可否?adoquery1.sql.add('update datename set image=??????(内存流) where ??????') ?????
 
当然不是用SQL。>小弟用ACCESS利用内存流存储含有图像数据的记录.........--原来怎么赋值的,现在就怎么赋值
 
给你修改图片的代码...我以前用过的//****************修改图片*************************************procedure TForm1.Button8Click(Sender: TObject); var jg : TJpegImage; s:TMemorystream;begin if opendialog1.FileName<>'' then begin s:=TMemorystream.Create; s.LoadFromFile(opendialog1.FileName); ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('update 表1 set hehe='''+edit2.Text +''',heihei=:tmpcad where haha=''123'' '); ADOQuery2.Parameters.ParamByName('tmpcad').LoadFromStream(s,ftBlob); ADOQuery2.Prepared; ADOQuery2.ExecSQL; end else begin ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('update 表1 set hehe='''+edit2.Text +''',heihei=null where haha=''123'' '); ADOQuery2.ExecSQL; end;end;
 
问题已经解决谢谢
 
后退
顶部