我用以下方法实现了数据备份,但是只能备份在固定的目录下,怎样才能实现让用户选择目录进行备份
self.ADOQuery4.SQL.Text:='backup database bug to disk = ' + '''' + 'e:\backup.dat' + '''';
  showmessage(AdoQuery4.SQL.Text);
  self.ADOQuery4.ExecSQL;
谢谢大家

解决方案 »

  1.   

    放一个TSaveDialog控件if SaveDialog1.Execute then
    begin
      self.ADOQuery4.SQL.Text:='backup database bug to disk = ' + '''' + SaveDialog1.filename+ '''';
      showmessage(AdoQuery4.SQL.Text);
      self.ADOQuery4.ExecSQL;end;
      

  2.   

    var
      path:String;
    begin
      path:='e:\backup.dat';
      self.ADOQuery4.SQL.Text:='backup database bug to disk = ' +QuotedStr(path) ;
      showmessage(AdoQuery4.SQL.Text);
      self.ADOQuery4.ExecSQL;
    end;
      

  3.   

    路径选择的WINDOWS标准对话框:
    unit Unit1; 
    interface 
    uses 
      shlobj,ActiveX; 
    var
       Form1: TForm1; 
       Path: string;   //起始路径
    implementation 
    {$R *.DFM} function BrowseCallbackProc(hwnd: HWND;uMsg: UINT;lParam: Cardinal;lpData: Cardinal): integer; stdcall; 
    begin 
      if uMsg=BFFM_INITIALIZED then 
        result :=SendMessage(Hwnd,BFFM_SETSELECTION,Ord(TRUE),Longint(PChar(Path))) 
      else 
        result :=1 
    end; function SelDir(const Caption: string; const Root: WideString; out Directory: string): Boolean; 
    var 
      WindowList: Pointer; 
      BrowseInfo: TBrowseInfo; 
      Buffer: PChar; 
      RootItemIDList, ItemIDList: PItemIDList; 
      ShellMalloc: IMalloc; 
      IDesktopFolder: IShellFolder; 
      Eaten, Flags: LongWord; 
    begin 
      Result := False; 
      Directory := ''; 
      FillChar(BrowseInfo, SizeOf(BrowseInfo), 0); 
      if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then 
      begin 
        Buffer := ShellMalloc.Alloc(MAX_PATH); 
        try 
          RootItemIDList := nil; 
          if Root <> '' then begin 
            SHGetDesktopFolder(IDesktopFolder); 
            IDesktopFolder.ParseDisplayName(Application.Handle, nil, POleStr(Root), Eaten,           RootItemIDList, Flags); 
          end; 
          with BrowseInfo do begin 
            hwndOwner := Application.Handle; 
            pidlRoot := RootItemIDList; 
            pszDisplayName := Buffer; 
            lpszTitle := PChar(Caption); 
            ulFlags := BIF_RETURNONLYFSDIRS; 
            lpfn :=@BrowseCallbackProc; 
            lParam :=BFFM_INITIALIZED; 
          end; 
          WindowList := DisableTaskWindows(0); 
          try 
            ItemIDList := ShBrowseForFolder(BrowseInfo); 
          finally 
            EnableTaskWindows(WindowList); 
          end; 
          Result := ItemIDList <> nil; 
          if Result then begin 
            ShGetPathFromIDList(ItemIDList, Buffer); 
            ShellMalloc.Free(ItemIDList); 
            Directory := Buffer; 
          end; 
        finally 
          ShellMalloc.Free(Buffer); 
        end; 
      end; 
    end; procedure TForm1.SpeedButton1Click(Sender: TObject); 
    var 
      Path1: string; 
    begin 
      Path :=Edit1.Text; 
      SelDir('SelectDirectory Sample','d:\temp',Path1); 
      Edit1.Text :=Path1 
    end; end.