📄 ql_data.~pas
字号:
unit ql_data;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,dbtables,db, ExtCtrls, ComCtrls,bde, Buttons, RXDice, RXCtrls;
type
TclearForm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Bevel1: TBevel;
E_DATE1: TDateTimePicker;
E_DATE2: TDateTimePicker;
Button1: TBitBtn;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure bfyear(date1,date2:tdate);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
clearForm: TclearForm;
implementation
uses dm_xjysxx_view_pas;
{$R *.DFM}
procedure TclearForm.Button2Click(Sender: TObject);
begin
close;
end;
procedure TclearForm.FormCreate(Sender: TObject);
begin
E_DATE1.DATE:=date;
E_DATE2.DATE:=date;
end;
procedure TclearForm.Button1Click(Sender: TObject);
var
year1,year2,mm,dd:word;
L_m1,l_m2,L_M12:tdate;
l_I:INTEGER;
begin
try
if E_DATE2.DATE<E_Date1.DATE then
begin
Application.MessageBox('起始日期必須小於等於結束日期','消息',MB_ICONINFORMATION);
exit;
end;
except
on e:EConvertError do
begin
Application.MessageBox('輸入的時間不正確','消息',MB_ICONINFORMATION);
exit;
end;
end;
if Application.MessageBox('確實要清理巡更資訊嗎?','消息', MB_ICONINFORMATION+MB_OKCANCEL) = IDCANCEL then
exit;
decodedate(E_DATE1.DATE,year1,mm,dd);
decodedate(E_DATE2.DATE,year2,mm,dd);
if year1<year2 then
BEGIN
L_M1:=strtodate(inttostr(year1)+'-12-31');
L_m2:=strtodate(inttostr(year2)+'-01-01');
BFYEAR(E_DATE1.DATE,L_m1);
BFYEAR(L_M2,E_DATE2.DATE);
FOR l_i:=YEAR1+1 to year2-1 do
BEGIN
l_M12:=STRTODATE(INTtOSTR(L_I)+'-12-31');
l_m1:=strtodate(inttostr(l_i)+'-01-01');
bfyear(l_m1,l_m12);
end;
end
ELSE
BFYEAR(E_DATE1.DATE,E_DATE2.DATE);
Application.MessageBox('資料清理完畢!','消息',MB_ICONINFORMATION);
clearForm.Close;
with dm_xjysxx_view.q_temp do
begin
close;
open;
dm_xjysxx_view.q_del.close;
dm_xjysxx_view.q_del.sql.clear;
dm_xjysxx_view.q_del.sql.Add('delete from temp');
dm_xjysxx_view.q_del.execsql;
dm_xjysxx_view.q_del.close;
dm_xjysxx_view.q_del.sql.clear;
dm_xjysxx_view.q_del.sql.Add('select * from temp');
dm_xjysxx_view.q_del.open;
while not eof do
begin
dm_xjysxx_view.q_del.append;
dm_xjysxx_view.q_del.edit;
dm_xjysxx_view.q_del.fieldbyname('pdate').asdatetime:=fieldbyname('pdate').asdatetime;
dm_xjysxx_view.q_del.fieldbyname('ptime').asdatetime:=fieldbyname('ptime').asdatetime;
dm_xjysxx_view.q_del.fieldbyname('pencode').asstring:=fieldbyname('pencode').asstring;
dm_xjysxx_view.q_del.fieldbyname('workercode').asstring:=fieldbyname('workercode').asstring;
dm_xjysxx_view.q_del.fieldbyname('node').asstring:=fieldbyname('node').asstring;
dm_xjysxx_view.q_del.fieldbyname('pstatu').asstring:=fieldbyname('pstatu').asstring;
dm_xjysxx_view.q_del.fieldbyname('linename').asstring:=fieldbyname('linename').asstring;
dm_xjysxx_view.q_del.fieldbyname('nodeplace').asstring:=fieldbyname('nodeplace').asstring;
dm_xjysxx_view.q_del.fieldbyname('nodename').asstring:=fieldbyname('nodename').asstring;
dm_xjysxx_view.q_del.fieldbyname('lseq').asstring:=fieldbyname('lseq').asstring;
dm_xjysxx_view.q_del.fieldbyname('workername').asstring:=fieldbyname('workername').asstring;
dm_xjysxx_view.q_del.post;
next;
end;
dm_xjysxx_view.q_xjysxx_view.close;
dm_xjysxx_view.q_xjysxx_view.open;
dm_xjysxx_view.q_xjysxx_view.Filter:='';
dm_xjysxx_view.q_xjysxx_view.Filtered:=false;
end;
end;
procedure tclearform.bfyear(date1:tdate;date2:tdate);
const
DescStr = 'Driver Name: %s'#13#10'AliasName: %s'#13#10 +
'Text: %s'#13#10'Physical Name/Path: %s';
var
sql1:tquery;
l_filename:string;
yearnow,mm,dd:word;
tablecc:ttable;
dbDes: DBDesc;
begin
Check(DbiGetDatabaseDesc('GYXGDB', @dbDes));
sql1:=tquery.create(clearform);
sql1.DatabaseName:='GYXGDB';
// sql1.datasource:=dm_xjysxx_viewDataSourcet_opera;
sql1.SQL.clear;
sql1.sql.add('SELECT * FROM PATROLREC WHERE (Pdate >=:l_p1) and (Pdate <=:l_p2)');
sql1.close;
sql1.prepare;
sql1.params[0].asdate:=date1;
sql1.params[1].asdate:=date2;
sql1.execsql;
sql1.active:=true;
if sql1.isempty then
exit
else
begin
decodedate(date1,yearnow,mm,dd);
l_filename:=dbdes.szphyname+'\bf'+inttostr(yearnow)+'.db';
// l_filename:='bf'+inttostr(yearnow)+'.db';
tablecc:=ttable.create(clearform);
if fileexists(l_filename) then
begin
tablecc.DatabaseName := 'GYXGDB';
tablecc.TableType := ttParadox ;
tablecc.tablename:=l_filename;
tablecc.batchmove(sql1,batAppend);
dm_xjysxx_view.t_PATROLREC.batchmove(sql1,batdelete);
end
else
begin
// if not Tablecc.Exists then
with Tablecc do
begin
Active := False;
DatabaseName := 'GYXGDB';
TableType := ttParadox ;
TableName := l_filename;
with FieldDefs do
begin
Clear;
Add('Dataseq',ftAutoInc,0,false);
Add('Pdate', ftdate, 0,false);
Add('Ptime', fttime, 0, False);
Add('Pencode', ftString, 2, False);
Add('node', ftString, 4, False);
Add('Workercode', ftString, 2, False);
Add('nodename', ftString, 20, False);
Add('nodeplace', ftString, 20, False);
Add('workername', ftString, 20, False);
Add('Linename', ftString, 20, False);
Add('Lseq', ftinteger, 0, False);
Add('pStatu',ftString,8,False);
end;
with IndexDefs do
begin
Clear;
Add('dataseq', 'dataseq', [ixPrimary]);
add('DateLT','PDATE;LINENAME;PTIME', []);
add('Date1','Pdate',[ixCaseInsensitive]);//必须加ixCaseInsensitive 属性
end;
CreateTable;
tablecc.batchmove(sql1,batAppend);
dm_xjysxx_view.T_PATROLREC.batchmove(sql1,batdelete);
end;
end;
end;
end;
procedure TclearForm.FormShow(Sender: TObject);
begin
E_DATE2.DateTime:=now;
E_DATE1.DateTime:=now; { scaled:=true;
height:=round(height*longint(screen.height)*96 / 600/screen.pixelsperinch);
width :=round( width *longint(screen.width)*96 / 800/screen.pixelsperinch);
ScaleControls(screen.width, 800);
ScaleControls(96,screen.pixelsperinch); }
end;
procedure TclearForm.BitBtn1Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -