希望你说的详细一点,“用dialog下的打开、存储来完成备份和恢复”是什么意思啊?

解决方案 »

  1.   

    就是说在dialog页下有opendialog和savedialog控件,使用这两个控件完成对一个操作设定时间段内的数据的备份和恢复工作!
      

  2.   

    to cobi:
         能帮帮我吗?
    to all:
         弟兄们,看在delphi的面子上,拉兄弟一把吧!!
      

  3.   

    为什么要用这两个控件呢?他们应当不提供你想做的事情的功能。
    如果我没有猜错,你是希望在savedialog中输入文件名后,就触发数据备份操作;
    在opendialog中选择文件名后,就触发恢复操作。是吗?
    那如果是这样的话,代码可以这样写:
    if opendialog.execute then
      datarestore(opendialog.filename);if savedialog.execute then 
      databackup(savedialog.filename);
      

  4.   

    to cobi:
         您猜错了,我只是知道这两个可以用,我只是要实现数据根据时间从数据库备份和恢复!
    to yyb2000:
         我想打开和保存一些数字和两个时间!
      

  5.   

    如果是恢复或是备份数据,首先应当知道数据的类型。其次如果是文件的覆盖。直接用dialog对话框就可以了,只是比较麻烦。COBI的代码是对的。。
      

  6.   

    那你执行了备份或恢复操作之后(前),可以直接用savetofile或loadfromfile保存或打开数据文件。不过我想你还是把具体的程序贴出来看一下
      

  7.   

      要想备份和恢复数据光用这两个控件是没有用的。你可以用这两个控件得到想要被份的文件名。
    但具体到数据的备份还要靠程序来实现。这你我可以提供一种方法:1)用opendialog返回用户要所选择的备份文件名 2)用两个Ttable 或TQuery 分别连接到源数据库(表)和目标数据库(表)。3)逐条记录的将源记录一条一条的“复制”过来。4)至于你的“时间段”用where 子句就可以搞定。   别忘了加分。
      

  8.   

    to 飞翔的鹰
    远程数据库还是本地数据库还是某个目录的几个txt文件???如果是远程数据库如果的某几个表的备份,你可以在程序中调用BCP来做,当然可以用dialog来确定备份文件名和路径或者采用delphi的batchmove控件来把数据库中的表做成bcp、foxpro、txt类型的备份文件,恢复也可以用batchmove控件实现,你说的两个控件只能是辅助提供选择文件名而已,其实很简单的oicq 299942
      

  9.   


    备份:
    quy_back.close;
                      quy_back.sql.clear;
                      quy_back.sql.add('backup database ht to disk=:dir');
                      quy_back.ParamByName('dir').asstring:=et_dir.Text ;
                      quy_back.execsql;
                      messagedlg('备份到服务器的'+et_dir.text,mtInformation ,[mbyes],0);
                      close; 
    恢复:
    quy_kill.Close;
               quy_kill.SQL.Clear ;
               quy_kill.SQL.Add('restore database ht from disk=:p');           quy_kill.ParamByName ('p').asstring:=et_dir.text;
               quy_kill.execsql;
               quy_kill.Close;
               quy_all.close;
               messagedlg('恢复成功',mtinformation,[mbyes],0);
               dm_bargain.dbs_bargain.connected:=false;
               dm_bargain.dbs_bargain.connected:=true;
              close;
      

  10.   

    用opendialog和savedialog完成,但不知你要备份的数据是何种类型,现以文档为例,假设有一个richedit对象
    备份:
    if savedialog.execute then
      richedit1.lines.savetofile(savedialog.filename);恢复:
    if opendialog.execute then
      richedit1.lines.loadfromfile(opendialog.filename);  
      

  11.   

    对本地数据库的备份和恢复程序可以直接使用sql语句完成,但是我希望你把要求说的更明白一些
    1.本地数据库是什么数据库;
    2.备份要备份成什么样的文件;
    3.文件名不是个重要的问题,其实你可以让程序根据备份时间自行设定
    4.恢复的操作是要有用户完成吗?
    或许你说明白了这些,我可以给你代码,因为我自己也写过
      

  12.   

    我要恢复从2001/10/28到2001/10/31的来电,包括serialno、phone、和来电的开始和结束时间。我的数据库是oracle,备份成普通文本文件或者后缀名自己起的.su文件都行,恢复和备份 都由用户操作!我将时间作成文件名一部分的话怎么恢复呢?要判断文件是否已经存在..等等。
      

  13.   

    给你2个函数,用的是CLIENTDATESET ,换成QUERY也可以,思路一样。你应该能搞定。
    function TForm1.DataIn(Cds1:TclientDataSet;Cds2:TclientDataSet;Cds3:TclientDataSet;Filename:string):boolean;
    Var SourceStream,LastStream,TempStream:TmemoryStream;
        len1,len2,len3:integer;   //三个CDS流化后的长度
        Buffer1 :array[0..9] of char;
        Buffer2 :array[0..9] of char;
        Buffer3 :array[0..9] of char;
    begin
       Result:=false;
       SourceStream:=TMemoryStream.Create();
       SourceStream.LoadFromFile(Filename);
       TempStream:=Tmemorystream.Create();
       LastStream:=SourceStream;
       LastStream.Read(buffer1,10);
       LastStream.Read(buffer2,10);
       LastStream.Read(buffer3,10);
       Len1:=StrToInt(buffer1);
       Len2:=StrToInt(buffer2);
       Len3:=StrToInt(buffer3);   LastStream.Position:=30;  //位置偏移量   TempStream.Clear;
       TempStream.CopyFrom(Laststream,len1);
       TempStream.Position:=0;
       cds1.LoadFromStream(Tempstream);
       LastStream.Position:=30+len1;   TempStream.Clear;
       TempStream.CopyFrom(Laststream,len2);
       TempStream.Position:=0;
       cds2.LoadFromStream(Tempstream);
       LastStream.Position:=30+len1+len2;   TempStream.Clear;
       TempStream.CopyFrom(Laststream,len3);
       TempStream.Position:=0;
       cds3.LoadFromStream(Tempstream);   SourceStream.Free;   TempStream.Free;end;
    function TForm1.DataOut(Cds1:TclientDataSet;Cds2:TclientDataSet;Cds3:TclientDataSet;Filename:string):boolean;
    Var LastStream,TempStream:TmemoryStream;
        len1,len2,len3:integer;   //三个CDS流化后的长度
        Buffer1 :array[0..9] of char;
        Buffer2 :array[0..9] of char;
        Buffer3 :array[0..9] of char;
    begin
      Result:=false;
      LastStream:=TmemoryStream.Create();
      TempStream:=TmemoryStream.Create();  cds1.SaveToStream(tempStream);
      Len1:=TempStream.Size;
      StrLcopy(Buffer1,Pchar(IntToStr(Len1)),40);
      tempStream.Clear;
      cds2.SaveToStream(tempStream);
      Len2:=TempStream.Size;
      StrLcopy(Buffer2,Pchar(IntToStr(Len2)),40);  tempStream.Clear;  cds3.SaveToStream(tempStream);
      Len3:=TempStream.Size;
      StrLcopy(Buffer3,Pchar(IntToStr(Len3)),40);  tempStream.Clear;  LastStream.Position:=0;
      LastStream.Write(buffer1,10);
      LastStream.Write(buffer2,10);
      LastStream.Write(buffer3,10);
      LastStream.Position:=0;
      TempStream.Clear;
      cds1.SaveToStream(TempStream);
      TempStream.Position:=0;  LastStream.Position:=30;  //随CDS个数变化
      LastStream.CopyFrom(TempStream,TempStream.Size);  TempStream.Clear;
      cds2.SaveToStream(TempStream);
      TempStream.Position:=0;
      LastStream.CopyFrom(TempStream,TempStream.Size);  TempStream.Clear;
      cds3.SaveToStream(TempStream);
      TempStream.Position:=0;
      LastStream.CopyFrom(TempStream,TempStream.Size);  TempStream.Free;
      LastStream.SaveToFile(Filename);
      LastStream.Free;
    end;
      

  14.   

    qhdsfh(飞翔的鹰)使用的是oracle,不是本地数据库,误导大家啦