自动导出数据 ( 积分: 100 )

  • 主题发起人 主题发起人 angellover
  • 开始时间 开始时间
A

angellover

Unregistered / Unconfirmed
GUEST, unregistred user!
在特定时间,假设每个星期一,8点,数据自动导出(不是导出所有数据).
导出的数据条件要根据INI文件中的记录来过滤,假设INI中条件为NAME=XXX,DATE=XXX.
那么先找出数据,然后将导出到TXT即可以.
 
帮顶一下!
 
这个可能要另外做个程序来实现。
 
to xl4772:
不用吧,在程序上放个TIMER,到时间载入INI,进行导出,应该就可以了!

大家有什么想法,建议,实现方法都说说!比如是否需要用多线程?
 
我前段时间也做了一个数据自动导出程序,不过是将数据表中的数据导出到xls文件中。我在程序中使用了一个TTime的控件,将它的Interval的属性设为1000,产生一个Timer1Timer事件,
procedure TFrm_main.Timer1Timer(Sender: TObject);
var
DateTime : TDateTime;
begin
DateTime := Time; // store the current date and time
time1 := TimeToStr(DateTime); // convert the time into a string
if time1='21:00:00' then //到了指定时间程序自动运行
不知对你是否有帮助。
 
to jzg007:
谢谢,主要问题不在这边!

麻烦的是载入的INI文件中的条件可能有很多组查询条件,根据每组查询条件生成一个TXT文件.
 
procedure TForm1.Timer1Timer(Sender: TObject);//timer的interval属性设为10000 10秒钟检测一次
var
info:Tinifile;
filename:string;
begin
timer1.Enabled :=false;
if dayofweek(Now)=2 then //判断是不是星期一
begin
if formatdatetime('hh',now)='08' then//判断是不是不早上8点
begin
filename:=ExtractFilePath(paramstr(0))+'tiaojian.ini';//创建ini文件
info:=TInifile.Create(filename);
name:=info.readstring('姓名','name','');//从原ini文件中读取条件
date:=info.ReadString('日期','date','');
with adoquery1 do //查出数据,作导出操作
begin

end;
end;
end;
timer1.Enabled :=true;
end;
 
实现了一个大概...写的比较乱,呵呵!看到哪里写的有问题的提醒一下!
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
if DayOfWeek(Now)=3 then //判断是不是星期二
begin
if FormatDateTime('hh:mm',Now)='15:00' then
begin
Form1.Button1Click(sender);
end;
end;
// ShowMessage(FormatDateTime('hh:mm',Now));
Timer1.Enabled := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Filename: String;
Str1,Str2,Str3,F1,F2,F3,F4: String;
VI1,VI2,VI3: Integer;
AList,FList: TStringList;
FADOQ: TADOQuery;
FSQL: String;
FFile: TextFile;
OutPutTxt: TStringList;
FStrTo:String;
I:Integer;
begin
// Edit1.Clear ;
Filename:=ExtractFilePath(ParamStr(0))+'Test.ini';
MyInifile:=TInifile.Create(Filename); //
AList:= TStringList.Create ;
MyInifile.ReadSections(AList);
For I:=1 to AList.Count do
Begin
FList:= TStringList.Create ; //
MyInifile.ReadSection('Filter'+IntToStr(I),FList);
// ListBox1.Items := FList;
// Edit1.Text := FList[0];
// VI1:= MyInifile.ReadInteger('Filter1','NUM',0);
VI2:= MyInifile.ReadInteger('Filter'+IntToStr(I),'ID',0);
VI3:= MyInifile.ReadInteger('Filter'+IntToStr(I),'Age',0);
// Edit1.Text := IntToStr(VI1)+','+IntToStr(VI2)+','+IntToStr(VI3);

FADOQ := TADOQuery.Create(nil) ;
FADOQ.Connection := ADOConnection1;
DataSource2.DataSet :=FADOQ;
DBGrid2.DataSource := DataSource2;
FSQL:= 'Select * from Test where '+FList[0]+'='+IntToStr(VI2)+ ' and '+FList[1]+'='+IntToStr(VI3);
with FADOQ do
begin
Close;
SQL.Clear ;
SQL.Add(FSQL);
Open ;
FStrTo :='';
if not IsEmpty then
begin
First;
While not Eof do
begin
F1:= IntToStr(FADOQ.FieldByName('id').AsInteger);
F2:= FADOQ.FieldByName('name').AsString;
FStrTo := 'ID: '+F1+' Name:'+F2 +#13+#10+FStrTo;
OutPutTxt := TStringList.Create;
OutPutTxt.Add(FStrTo);
Next;
end;
end;
AssignFile(FFile,ExtractFilePath(ParamStr(0))+'AA'+IntToStr(I)+'.txt');// ExtractFilePath(ParamStr(0))
try
Rewrite(FFile);
Write(FFile,OutPutTxt.Text);
finally
CloseFile(FFile);
OutPutTxt.Clear ;
end;
end;
end;
// if FADOQ <> NIL then FreeAndNil(FADOQ);
if FList <> nil then FreeAndNil(FList);
if MyInifile <> nil then FreeAndNil(MyInifile);
if OutPutTxt <> nil then FreeAndNil(OutPutTxt);
ShowMessage('导出成功!') ;
end;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
842
DelphiTeacher的专栏
D
D
回复
0
查看
848
DelphiTeacher的专栏
D
D
回复
0
查看
682
DelphiTeacher的专栏
D
后退
顶部