"恢复"按钮在form_main里
var
  MyFileName, aa: string;
begin
  MyFileName := '';
  try
    if OpenDialog1.Execute then
    begin
      MyFileName := OpenDialog1.FileName;
      if MyFileName <> '' then
      begin
        aa := ExtractFilePath(Application.ExeName) + 'zy\zy.mdb';
        if CopyFile(Pchar(MyFileName),Pchar(aa), false) then
        begin
          //ADOConnection1放在form_login中,现在只要加上以下两条语句就会出错,不加就正常.
            但是form_main窗体里的DBGrid中的数据却更新不了
          //form_login.ADOConnection1.Close;
          //form_login.ADOConnection1.Open;          Application.MessageBox('数据恢复成功','提示',Mb_ok + mb_iconinformation);
        end;
      end;
    end;
  except
    Application.MessageBox('数据恢复失败','提示',Mb_ok + mb_iconError);
  end;
end;愁死,各位高手忙.

解决方案 »

  1.   

    显示主窗体后 你的登陆窗体被FREE了吧?
    你的ADOCONNECTION放在登陆窗体中, 所以也被释放了,
    建议把ADOCONNECTION,QUERY, DATASOURCE这些东西全放在数据模块中
      

  2.   

    没有释放,只是隐藏了而已.我测试过,把数据控件全部放在form_main也会报错.
      

  3.   

    各位,小弟问题已经解决,用相对路径即可,但必须使用extractfilepath(application.ExeName)进行设置,结贴.