怎样备份表,和提取备份表(100分)

  • 主题发起人 主题发起人 GRAGON
  • 开始时间 开始时间
G

GRAGON

Unregistered / Unconfirmed
GUEST, unregistred user!
现在做一个数据的输入输出表,这个表每天都有数据备删除,也有数据被添加。现在要求每天都有备份。在程序中要做的事就是输入日期,例如今天是10-20,当输入10-15时,可以提取10月15号的各种数据的状态,但是在16,17,18,19时。都有大部分的数据存入和删除。
怎么实现,各位教我啊。



 
利用BatchMove就可以:
把它的MODE属性改为batCopy不就行了
 
你可以把旧数据转到另一个表,另一个表里加一个栏位,转档日期。
然后将符合条件的资料用一个循环转过去不就可以了?
我以前就这么干。
要用旧资料的话再从另一个表中提出来。
 
你说得不是很清楚,我的理解也许不对:既然你每天都有备份,你可以在你恢复以前的
数据之前先做一个现在数据的备份,然后恢复以前的数据,处理完以后恢复最后的备份,
这样不行吗?
 
这样简单的问题为什么自己不解决?[?]
 
zqmagic,大哥我是菜鸟中的菜鸟.真的不会,所以要您指点啊.
sword_liu您的这种方法也是我现在得到的最好的方法,不知道可不可以写一下SQL的原码(一个表的内容复制到另一个表)给我吗?我的信箱是lj_1979@263.net.先谢谢了.
redfly,大概是我没有[8D]说明白,其实现在就是说,我要在程序中自动实现我以上所得功能,在程序中加日期控制,日期一到立刻保存表中数据.而且要求以后可以查到今天保存的东西.
dragon,大哥那个控件不大会用,可不可以在详细的说一下,怎么实现数据从一个表中到另一个表中.十分感谢
再次感谢各位的解答,不久我会以积分回报.
 
i want to know more.
 
在本站搜索: batchmove
并看这个例子:C:/Program Files/Borland/Delphi6/Help/Examples/BatchMv/batmv.dpr
 
我是用一个界面的方式作的。
========================================
var
FrmOrderDistic: TFrmOrderDistic;

implementation

uses DatDM;

{$R *.DFM}

procedure TFrmOrderDistic.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;

procedure TFrmOrderDistic.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TFrmOrderDistic.Button1Click(Sender: TObject);
var
XSQL:String;
i:Integer;
y:Integer;
x:Array[0..59] of String;
j:Integer;
z:Integer;
begin
DataModule1.ADODataSet1.Close;
XSQL:='SELECT COUNT(*) FROM DORDER WHERE 訂單狀態='+''''+'OK'+''''+' AND DATEPART(MM,接單日期)='+''''+ComboBox1.Text+'''';
DataModule1.ADODataSet1.CommandText:=XSQL;
DataModule1.ADODataSet1.Open;
y:=DataModule1.ADODataSet1.FieldByName ('COLUMN1').AsInteger;
for j:=1 to y do
begin
DataModule1.ADODataSet1.Close;
XSQL:='SELECT * FROM DORDER WHERE 訂單狀態='+''''+'OK'+''''+' AND DATEPART(MM,接單日期)='+''''+ComboBox1.Text+'''';
DataModule1.ADODataSet1.CommandText:=XSQL;
DataModule1.ADODataSet1.Open;
if DataModule1.ADODataSet1.RecordCount<>0 then
begin
for i:=0 to 59 do
begin
x:=DataModule1.ADODataSet1.Fields.AsString;
end;
end;
DataModule1.ADODataSet1.Close;
XSQL:='INSERT DFORDER (( 訂單號碼,鞋型編號,顏色編號,接單日期,工廠確認日,客戶確認日,預計交貨日,客戶訂單號, 客戶編號,转档日期,修改用戶) VALUES
('+''''+X[0]+''''+','+''''+X[1]+''''+','+''''+X[2]+''''+','+''''+X[3]+''''+','+'
'''+X[4]+'
'''+','+''''+X[5]+''''+','+''''+X[6]+''''+','+''''+X[7]+''''+','+''''+X[8]+''''+
','+''''+X
[57]+''''+','+''''+X[58]+''''+')';
DataModule1.ADOConnection1.Execute(XSQL);
for z:=1 to 48 do
begin
DataModule1.ADODataSet1.Close;
XSQL:='UPDATE DFORDER SET SIZE_'+IntToStr(z)+'='+''''+x[z+8]+''''+'WHERE 訂單號碼='+''''+x[0]+'''';
DataModule1.ADOConnection1.Execute(XSQL);
end;
DataModule1.ADODataSet1.Close;
XSQL:='DELETE DORDER WHERE 訂單號碼='+''''+x[0]+'''';
DataModule1.ADOConnection1.Execute(XSQL);
DataModule1.ADODataSet1.Close;
XSQL:='DELETE DIN WHERE 訂單號碼='+''''+x[0]+'''';
DataModule1.ADOConnection1.Execute(XSQL);
DataModule1.ADODataSet1.Close;
XSQL:='DELETE DOUT WHERE 訂單號碼='+''''+x[0]+'''';
DataModule1.ADOConnection1.Execute(XSQL);
DataModule1.ADODataSet1.Close;
XSQL:='DELETE DSTOCK WHERE 訂單號碼='+''''+x[0]+'''';
DataModule1.ADOConnection1.Execute(XSQL);
Label4.Caption:=x[0];
with Gauge1 do
begin
if (100 div y)=(100 / y) then
begin
progress:=progress+(100 div y);
end
else
begin
progress:=progress+(100 div y)+1;
end;
end;
end;
end;

end.
 
多人接受答案了。
 
分已经加给大家了,谢谢大家
 
后退
顶部