请各位高手帮帮忙,分不够可再加,只要能解决问题.

解决方案 »

  1.   

    procedure TForm1.BInDBClick(Sender: TObject);
    var
      strm:tmemorystream;
      ext:string;
    begin
      if imagesee.Picture<>nil then
      begin
        ext:=extractfileext(op.FileName);
        strm:=tmemorystream.Create;
        try
          imagesee.Picture.Graphic.SaveToStream(strm);
          adotable1.Edit;
          strm.Position:=0;
          tblobfield(adotable1.fieldbyname('myimage')).LoadFromStream(strm);
          if uppercase(ext)='.BMP' THEN
            adotable1.FieldByName('isbmp').Value:='1'
          else if (uppercase(ext)='.JPG')OR((uppercase(ext)='.JPEG'))then
            adotable1.FieldByName('isbmp').Value:='0';
          adotable1.Post;
        finally
          strm.Free;
        end;
      end;
    end;procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
    var
      strm:tadoblobstream;
      jpegimage:tjpegimage;
      bitmap:tbitmap;
    begin
      strm:=tadoblobstream.Create(tblobfield(adotable1.FieldByName('myimage')),bmread);
      try
        strm.Position:=0;
        imagesee.Picture.Graphic:=nil;
        if adotable1.FieldByName('isbmp').AsString='1' then
        begin
          bitmap:=tbitmap.Create;
          try
            bitmap.LoadFromStream(strm);
            imagesee.Picture.Graphic:=bitmap;
          finally
            strm.Free;
            bitmap.Free;
          end;
        end
        else if adotable1.FieldByName('isbmp').AsString='0' then
        begin
          jpegimage:=tjpegimage.Create;
          try
            jpegimage.LoadFromStream(strm);
            imagesee.Picture.Graphic:=jpegimage;
          finally
            strm.Free;
            jpegimage.Free;
          end;
        end;
      except
      end;end;
    能看懂吗,不动我再写点说明
      

  2.   

    何必这么复杂,简单点
    FieldByName('O_Photo').Assign(Im_Photo.Picture.Graphic);
    Im_Photo.Picture.Assign(FieldByName('O_Photo'))
      

  3.   

    楼上的两个,楼主要的是“原生ADO”的做法……
      

  4.   

    保存到文件里
    var
        PDataValue:Pointer;
       AFields: Fields;
       FieldValue: OleVariant;
       len : integer;
       Stream:TMemoryStream;           FieldValue := AFields[I].Value;
               Stream := TMemoryStream.Create;
                try
                  len := AFields[I].ActualSize;
                  if VarIsArray(FieldValue) then
                  begin
                   PDataValue := VarArrayLock(FieldValue);
                    try
                    Stream.Write(PDataValue^,len);
                   Stream.SaveToFile(...);
                    finally
                     VarArrayUnlock(FieldValue);
                    end;
                 end
                 else begin
                   PDataValue := TVarData(FieldValue).VString;
                   Stream.Write(PDataValue^,len);
                   Stream.SaveToFile(...);
                 end;
                finally
                  Stream.Free;
                end;