我想将一些图片以二进制的形式存放在Access中 库中有张表图形数据表,表中的Graphdb的字段类型我定义为OLE对象,运行下段代码却发现错误//错误提示:变量或者变量类型不正确,或者不再可以接受的范围内,要不就是与其它数据冲突.怎么解决该问题procedure TForm1.FormCreate(Sender: TObject);
begin
 {创建一个临时的ODBC数据源指向一个MsAccess数据库并利用此DSN建立一个数据库连接}AConnection := CreateOleObject('ADODB.Connection');AConnection.Open('Provider=MSDASQL.1;Persist Security Info=False;Data Source=GraphDB');
{建立一个数据集对象并从数据表中提取数据}ARecordSet := CreateOleObject('ADODB.RecordSet');
ARecordSet.open( '图形数据表', AConnection,adopenKeySet ,adLockOptimistic,adCmdTable );end;procedure TForm1.Button1Click(Sender: TObject);
var
   fl  :file;
   temp:byte;
   Imgroup:array of byte;
   Bytecount: integer;
   ds  :string;
   i   :integer;
   ByteRead :integer;
begin
    if opendialog1.Execute then
        Begin
        ds:=opendialog1.FileName;
        AssignFile( fl , ds);
        reset(fl,1);
        Bytecount:=FileSize( fl );
       End;
     //重定义数组容纳fl的字节
     setlength(imgroup,ByteCount-1);
     //将fl以字节添入imgroup数组
     for  i:=0 to ByteCount-1 do
         Begin
             BlockRead(fl , imgroup[i],1 ,ByteRead);
         end;
      //存储到数据库
      ARecordSet.AddNew;
      for I:=0 to  ByteCount -1  do
      Begin
          ARecordSet.Fields['GraphDB'].AppendChunk (imgroup[i]);
      end;
      ARecordSet.movefirst;
     //关闭文件  清空数组
       closefile(fl);
       imgroup:=nil;end;

解决方案 »

  1.   

    查一下这个问题,那儿有代码,但是不能存大于1M的图片,可以用另外一种方法将图片存入Access数据库,如需要我可以发给你,我也是从别人那得到的.
    Access存入图片大小问题
      

  2.   

    其实我是想用二进制存储文件,这样的话,在存储时我就没必要考虑存储对象的类型,统统以二进制存储.查了OLE字段一下,其大小是这么说的:最大可为 1 GB(受磁盘空间限制)。ffwin()你有着方面的资料吗?. 有好的想法大家交流交流呀