📄 changecard.pas
字号:
unit changecard;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Mask, DBCtrls, Db, ADODB, ExtCtrls, ImgList, ToolWin,
Grids, DBGrids, ppDB, ppDBPipe, ppDBBDE, ppComm, ppRelatv, ppProd,
ppClass, ppReport, ppCtrls, ppVar, ppPrnabl, ppBands, ppCache;
type
TFormchangecard = class(TForm)
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
ToolButton6: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
tbnprint: TToolButton;
ToolButton4: TToolButton;
DBNavigator1: TDBNavigator;
ImageList1: TImageList;
Panel1: TPanel;
DataSource1: TDataSource;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
ppBDEPipeline1: TppBDEPipeline;
Panel2: TPanel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button1: TButton;
Button2: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label5: TLabel;
DBEdit2: TDBEdit;
ADOchangecard: TADODataSet;
ADOchangecardoldcard: TStringField;
ADOchangecardnewcard: TStringField;
ADOchangecardvalidedate: TDateTimeField;
ADOchangecardinvalidedate: TDateTimeField;
ADOchangecardoperator: TStringField;
ADOchangecardcdate: TDateTimeField;
ADOchangecardworkno: TStringField;
ADOchangecardname: TStringField;
ADOQuery1: TADOQuery;
ADOchangecarddept: TStringField;
ppReport1: TppReport;
ppHeaderBand1: TppHeaderBand;
ppLine1: TppLine;
ppLabel2: TppLabel;
ppLabel3: TppLabel;
ppLabel4: TppLabel;
ppLabel5: TppLabel;
ppLabel6: TppLabel;
ppLabel7: TppLabel;
ppLabel1: TppLabel;
ppLabel8: TppLabel;
ppLabel9: TppLabel;
ppLabel10: TppLabel;
ppLabel11: TppLabel;
ppLabel12: TppLabel;
ppSystemVariable3: TppSystemVariable;
ppSystemVariable4: TppSystemVariable;
ppLabel13: TppLabel;
ppDetailBand1: TppDetailBand;
ppDBText1: TppDBText;
ppDBText2: TppDBText;
ppDBText3: TppDBText;
ppDBText4: TppDBText;
ppDBText5: TppDBText;
ppDBText6: TppDBText;
ppFooterBand1: TppFooterBand;
ppLine2: TppLine;
ppSystemVariable1: TppSystemVariable;
ppSystemVariable2: TppSystemVariable;
procedure ToolButton4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure DateTimePicker2CloseUp(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure DBEdit4Exit(Sender: TObject);
procedure DBEdit1Exit(Sender: TObject);
procedure ADOchangecardBeforePost(DataSet: TDataSet);
procedure DBEdit2Exit(Sender: TObject);
procedure ADOchangecardinvalidedateChange(Sender: TField);
procedure tbnfindClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure tbnprintClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ppReport1BeforePrint(Sender: TObject);
procedure ppReport1AfterPrint(Sender: TObject);
procedure ppReport1PreviewFormCreate(Sender: TObject);
procedure MaskEdit4Exit(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure ADOchangecardBeforeEdit(DataSet: TDataSet);
procedure ADOchangecardBeforeDelete(DataSet: TDataSet);
private
f:string;{ Private declarations }
public
{ Public declarations }
end;
var
Formchangecard: TFormchangecard;
implementation
uses main,datamol,publicfunction, canfind;
{$R *.DFM}
procedure TFormchangecard.ToolButton4Click(Sender: TObject);
begin
close;
end;
procedure TFormchangecard.FormCreate(Sender: TObject);
begin
datetimepicker1.date:=date;
datetimepicker2.date:=date;
adochangecard.Open;
end;
procedure TFormchangecard.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
adochangecard.close;
formchangecard:=nil;
action:=cafree;
end;
procedure TFormchangecard.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(sender,key);
end;
procedure TFormchangecard.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
selectnext(activecontrol,true,true);
end;
end;
procedure TFormchangecard.DateTimePicker1CloseUp(Sender: TObject);
begin
adochangecard.edit;
adochangecard.fieldbyname('validedate').asstring:=datetostr(datetimepicker1.date);
end;
procedure TFormchangecard.DateTimePicker2CloseUp(Sender: TObject);
begin
adochangecard.edit;
adochangecard.fieldbyname('invalidedate').asstring:=datetostr(datetimepicker2.date);
end;
procedure TFormchangecard.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
case button of
nbinsert,nbedit:dbedit1.setfocus;
end;
end;
procedure TFormchangecard.DBEdit4Exit(Sender: TObject);
begin
if adochangecard.state=dsinsert then
begin
adochangecard.Post;
adochangecard.insert;
end else adochangecard.post;
dbedit1.setfocus;
end;
procedure TFormchangecard.DBEdit1Exit(Sender: TObject);
begin
with datamod do
begin
Query1.close;
Query1.sql.Text:='Select cardno,name,workno,dept from per24010 where cardno='''+Dbedit1.text+''' and leave=0 ';
Query1.open;
if Query1.EOF then
begin
Application.messagebox(pchar('你输入的卡号:'+dbedit1.text+'不存在,请重新输入!'),'卡号错误',mb_ok+mb_iconerror);
dbedit1.setfocus;
end
else
begin
adochangecard.fieldbyname('workno').asstring:=query1.fieldbyname('workno').asstring;
adochangecard.fieldbyname('name').asstring:=query1.fieldbyname('name').asstring;
adochangecard.fieldbyname('dept').asstring:=query1.fieldbyname('dept').asstring;
end;
//Query1.close;
end;
end;
procedure TFormchangecard.ADOchangecardBeforePost(DataSet: TDataSet);
var fmat1:string;
begin
if fmat='/' then
fmat1:=' / / ';
if fmat='-' then
fmat1:=' - - ';
if (adochangecard.FieldByName('invalidedate').isnull) or (adochangecard.fieldbyname('invalidedate').asstring=fmat1) then
adochangecard.fieldbyname('invalidedate').value:=null;
adochangecard.fieldbyname('operator').asstring:=pubworkname;
adochangecard.fieldbyname('cdate').asstring:=formatdatetime('yyyy/mm/dd',now);
end;
procedure TFormchangecard.DBEdit2Exit(Sender: TObject);
begin
with datamod do
if length(DBEdit1.Text)<>length(DBEdit2.Text) then
begin
Application.MessageBox('输入的卡号位数长度不够!!!!','系统提示',48);
DBEdit2.SetFocus;
end
else
begin
Query1.close;
Query1.sql.Text:='Select cardno from per24010 where cardno='''+Dbedit2.text+''' and leave=0 ';
Query1.open;
if NOT Query1.EOF then
begin
Application.messagebox(pchar('你输入的卡号:'+dbedit2.text+'已被使用,请重新输入!'),'卡号重复',mb_ok+mb_iconerror);
dbedit2.setfocus;
end;
Query1.close;
end;
end;
procedure TFormchangecard.ADOchangecardinvalidedateChange(Sender: TField);
var fmat1:string;
begin
if fmat='/' then
fmat1:=' / / ';
if fmat='-' then
fmat1:=' - - ';
if adochangecard.fieldbyname('invalidedate').asstring=fmat1 then
adochangecard.fieldbyname('invalidedate').value:=null;
end;
procedure TFormchangecard.tbnfindClick(Sender: TObject);
begin
if assigned(formcanfind) then formcanfind.close;
findrecorder(adochangecard,'Adochangecard','per_changecard'); //调用publicfuction中的查询功能
end;
procedure TFormchangecard.Button2Click(Sender: TObject);
begin
panel2.visible:=false;
end;
procedure TFormchangecard.tbnprintClick(Sender: TObject);
begin
panel2.visible:=true;
end;
procedure TFormchangecard.Button1Click(Sender: TObject);
var fmat1:string;
begin
if fmat='/' then
fmat1:=' / / ';
if fmat='-' then
fmat1:=' - - ';
if radiobutton2.checked then
begin
if (maskedit1.Text<>fmat1) and (maskedit2.Text<>fmat1) then
begin
with adochangecard do
begin
close;
commandtext:='Select * from per_changecard where validedate between '''+maskedit1.text+''' and '''+maskedit2.text+''' order by validedate,workno ';
open;
pplabel8.caption:=maskedit1.text+'~~'+maskedit2.text;
end;
end
else
begin
Application.messagebox('输入要列印的离职范围 !!!!!! ','系统提示',48);
exit;
maskedit1.SetFocus;
end;
end
else
begin
adochangecard.close;
adochangecard.commandtext:='Select * from per_changecard order by validedate,workno ';
adochangecard.open;
end;
panel2.visible:=false;
pplabel1.caption:=companyname1;
pplabel12.Caption:=pubworkname;
pplabel13.caption:='换卡作业资料明细';
ppreport1.print;
end;
procedure TFormchangecard.ppReport1BeforePrint(Sender: TObject);
begin
if radiobutton2.checked then
begin
with adochangecard do
begin
disablecontrols;
close;
commandtext:='Select * from per_changecard where validedate between '''+maskedit1.text+''' and '''+maskedit2.text+''' ';
open;
end;
end;
pplabel1.caption:=companyname1;
end;
procedure TFormchangecard.ppReport1AfterPrint(Sender: TObject);
begin
with adochangecard do
begin
close;
commandtext:='Select * from per_changecard ';
open;
enablecontrols;
end;
panel2.visible:=false;
end;
procedure TFormchangecard.ppReport1PreviewFormCreate(Sender: TObject);
begin
tppReport(Sender).PreviewForm.WindowState:=wsMaximized;
end;
procedure TFormchangecard.MaskEdit4Exit(Sender: TObject);
var fmat1:string;
begin
if fmat='/' then
fmat1:=' / / ';
if fmat='-' then
fmat1:=' - - ';
if maskedit2.text<>fmat1 then
if (not isdate(maskedit1.Text)) or (not isdate(maskedit2.text)) then
begin
Application.MessageBox('对不起,您输入的不是有效日期','Warning',mb_ok+mb_iconwarning);
maskedit1.SetFocus;
end
else begin
Adochangecard.close;
Adochangecard.commandtext:='Select * from per_changecard where validedate<='''+maskedit2.text+''' and validedate>='''+maskedit1.text+''' order by validedate,oldcard ';
Adochangecard.open;
end;
end;
procedure TFormchangecard.ToolButton6Click(Sender: TObject);
begin
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.add('update per24010 set cardno=per_changecard.newcard from per_changecard where per_changecard.workno=per24010.workno and per_changecard.oldcard=per24010.cardno and ((per_changecard.invalidedate is null and '''+formatdatetime('yyyy/mm/dd',now)+'''>per_changecard.validedate) or (per_changecard.invalidedate is not null and '''+formatdatetime('yyyy/mm/dd',now)+''' between per_changecard.validedate and per_changecard.invalidedate))' );
//adoquery1.sql.add( 'update per24010 set cardno=per_changecard.oldcard from per_changecard where per_changecard.workno=per24010.workno and per_changecard.invalidedate is not null and '''+formatdatetime('yyyy/mm/dd',now)+'''>per_changecard.invalidedate ');
adoquery1.execsql;
adochangecard.close;
adochangecard.filtered:=false;
adochangecard.filter:='';
adochangecard.commandtext:='Select * from per_changecard order by validedate,oldcard';
adochangecard.open;
end;
procedure TFormchangecard.DBGrid1TitleClick(Column: TColumn);
begin
if f='DESC' then
f:='ASC'
else
f:='DESC';
adochangecard.Sort :=column.FieldName+' '+f;
end;
procedure TFormchangecard.ADOchangecardBeforeEdit(DataSet: TDataSet);
begin
writerecorder(ADOchangecard,false);
end;
procedure TFormchangecard.ADOchangecardBeforeDelete(DataSet: TDataSet);
begin
writerecorder(adochangecard,true);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -