我的文件路径
c:\SPGTOOL\SPG.exe
c:\SPGTOOL\Sprite.mdb
另有
c:\SPGTOOL\Sprite\..
其中Sprite文件夹用来存储bmp图片,如有
c:\SPGTOOL\Sprite\A1.BMP
c:\SPGTOOL\Sprite\A2.BMP 等
ADOTable1 连接 Sprite.mdb,由于跟exe同个文件夹,所以控件的ConnectionString属性框输入的方法: 
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.\Sprite.mdb; Persist Security Info=False 
连接正常,但是我的程序里面有这样一段:
procedure TForm4.N1Click(Sender: TObject);
var
   Filename:String;
//   Rec_count:Integer;
begin
  DoubleBuffered:= true;
  if Opendialog1.Execute then
  begin                                      //添加精灵
   Filename:=ChangeFileExt(ExtractFileName(OpenDialog1.FileName),'');
   ADOTable1.Edit;                           //DB 插入数据
   ADOTable1.Insert;
   ADOTable1['Idex']:=Rec_count+1;
   ADOTable1['Sprite_Name']:=Filename;
   ADOTable1['X']:=Map_X1;
   ADOTable1['Y']:=Map_Y1;
   ADOTable1['Display']:='1';
   ADOTable1.Post;
。。当我用以上方法加入一个精灵后,再想对ADOTable1进行操作,就出现找不到文件‘c:\SPGTOOL\Sprite\Sprite.mdb’ 的错误,这个小问题应该怎么处理啊?为什么连接的字符串变掉了

解决方案 »

  1.   

    使用Opendialog1.Execute后,当前路径就被改变了
    设置成绝对路径看看
    ConnectionString := Format('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%sSprite.mdb;', [ExtractFilePath(ParamStr(0))]);
      

  2.   

    ConnectionString := Format('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%sSprite.mdb;', [ExtractFilePath(ParamStr(0))]);中Sprite.mdb 前的 %s  是什么啊?设置成这样的话,我的Active 一变成true马上就提示找不到
    sSprite.mdb 了
      

  3.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ADOQuery1.ConnectionString := Format('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%sSprite.mdb;', [ExtractFilePath(ParamStr(0))]);
    end;不是直接设置,要通过代码执行
    如果还有问题就ShowMessage(ADOQuery1.ConnectionString)检查路径
      

  4.   

    试了。路径还是那样,本来是正常的,一执行  if Opendialog1.Execute then 
    就变掉了
      

  5.   

    奇怪了,用 ShowMessage(ADOTable1.ConnectionString);  检查路径,得到的都是
    Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Sprite.mdb; 
    但是为什么会变成找不到 c:\SPGTOOL\Sprite\Sprite.mdb’