1、之前提过,没人答,再多问一次,请知道的朋友回答一下!
我做了一个数据库表,和一个简单的入库界面,由5个人操作,目的是储存订单的明细资料,但日前给订单增加了‘订单图样’的的字段后(Jpeg)格式,只是20来张的图片,数据库一下子增大了100兆,但每张图片也不超过1兆呀~,整个入库界面就像蜗牛一样慢,简单界面包含一个查询界面,就是用ADOQUERY的AfterScroll事件动态显示图片而已,真不明白,sql2000不至于这么不济吧几十幅不超过1M图片也容不下????晕! 还是有其它需要设置的,请知道大虾明示下,这个问题搅了好几天没搅好!
2、 我改过了关于存储的问题,改用openpicturedialog保存路径,但数据库内只保存有“d:\胸围图样\”我靠,文件名呢??? 而且AfterScroll事件显示也不太懂得如何做?请给个示例参考一下我是真正初学者,觉得delphi实在容易上手而用的!谢谢!
                                                                       重分答谢!

解决方案 »

  1.   

    如果是SQL SERVER的话你可以看一下他的日志.
    原来我弄个了个.他有20多G后来我把他的日心文件给删了.最一变成了7G
    你还可以试一下收缩一下你的数据库.
      

  2.   

    但入库界面实在慢得可怜,现在都不敢再增加图样了,100兆已经慢得如此,那么如果再增加,岂不更慢,我觉得有个前辈提议的改用openpicturedialog保存路径很好,,,但数据库内怎么只保存有“d:\胸围图样\”  文件名呢???唉,,,,碍于新手又没人指导,不知道怎么搅,这个入库界面也是抄csdn上一位朋友,望谅~~~~~~~~~ 现在最想知道的就是AfterScroll事件显示赋值给image1应该如何做,要用流吗???请给个示例参考一下(1.保存路径,2.事件给image.picture显示出来)
      

  3.   

    你是如何插入到表中的?如何从表中读出来的?插入和读出都用流的方式!TBlobField(Ado.FieldByName('订单图样')).LoadFromFile('YourBmpFile');
      

  4.   

    我插入只用一个按钮,得到一个图样,然后就是
    保存:
    adoquery.fieldbyname('photos').asstring:=openpicturedialog.filename 了
      

  5.   

    1\数据库字段名photo  image 属性
    var
     strm:tmemorystream;
     ext:string;
    begin
     if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
     begin
      ext:=extractfileext(openpicturedialog1.FileName); //取出文件的扩展名
      strm:= tmemorystream.Create;
       try
        image1.Picture.Graphic.SaveToStream(strm);
        ddadoquery.Edit;
        strm.Position :=0;
        tblobfield(ddadoquery.FieldByName('photo')).LoadFromStream(strm);
        TBlobField(ddadoquery.FieldByName('photo')).LoadFromFile(OpenPictureDialog1.FileName);
        if uppercase(ext)='.bmp' then
        ddadoquery.FieldByName('isbmp').Value := 1  
        else if (uppercase(ext) = '.JPG') OR ( uppercase(ext) = '.JPEG') Then
          ddadoquery.FieldByName('isbmp').Value := 
    0; //JPEG型图像数据
          ddadoquery.Post;
        finally
         strm.Free; 
      end;
    end;
      

  6.   

    tblobfield(ddadoquery.FieldByName('photo')).LoadFromStream(strm);
    TBlobField(ddadoquery.FieldByName('photo')).LoadFromFile(OpenPictureDialog1.FileName);干嘛要load两次啊
      

  7.   

    如果你只是保存图片路径的话,那就建立一个图片库,
    然后在添加记录窗口上放上打开对话框penpicturedialog,和保存对话框组件SavePictureDialog,在插入新纪录的时候使用SavePictureDialog选择要保存的图片,
    if SavePictureDialog1.execute then
    begin
       with DM.DataSet do
       begin
         insert;
            .....
            
            FieldByname('photo').asstring:=SavePictureDialog.filename;  
         post;
       end;
    end;
    浏览时通过DataSet的AfterScroll事件里写加载图片
    var
      JPG:TJPEGImage;
    begin
      try
        JPG:=TJPEGImage.Create;
        if trim(DataSet.FieldByName('Photo').asstring)<>''  then
        begin
           JPG.LoadFromFile(DataSet.FieldByName('Photo').asstring);
           fm_showPic.IMAGE1.Picture.Bitmap.Assign(JPG);
        end;
      Finally
         JPG.Free;
      end;
    end;
      

  8.   

    补充一下: 必须在uses中引用JPEG单元才能定义TJPEGImage类型
      

  9.   

    我觉得在数据库中使用image字段不好!
    一方面减慢你的速度,另一方面占用太好的数据库
    我觉得应该像WEB中发送邮件那样,图片应该以附件的形式保存在磁盘中,然后在数据库中关联其文件名!