📄 sendcard.pas
字号:
procedure ppReport3BeforePrint(Sender: TObject);
procedure ppReport3PreviewFormCreate(Sender: TObject);
procedure ppReport4BeforePrint(Sender: TObject);
procedure ppReport4PreviewFormCreate(Sender: TObject);
procedure printClick(Sender: TObject);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure DateTimePicker2CloseUp(Sender: TObject);
procedure DateTimePicker3CloseUp(Sender: TObject);
procedure DateTimePicker4CloseUp(Sender: TObject);
procedure DBGrid4TitleClick(Column: TColumn);
procedure DBGrid3TitleClick(Column: TColumn);
procedure DBGrid2TitleClick(Column: TColumn);
procedure DBGrid5TitleClick(Column: TColumn);
procedure DBGrid6TitleClick(Column: TColumn);
procedure ADOjieguasiBeforePost(DataSet: TDataSet);
procedure ADOguasiBeforePost(DataSet: TDataSet);
procedure DBGrid7TitleClick(Column: TColumn);
procedure DBGrid8TitleClick(Column: TColumn);
procedure Edit3Exit(Sender: TObject);
procedure Edit4Exit(Sender: TObject);
procedure DBEdit8KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBEdit12KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure RadioGroup1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
procedure DBEdit10KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBEdit9KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
clk: TClockInfo;
s:string;
R: Boolean;
vb:tbuttonset;
readcardno:PRealCardInfo;
public
{ Public declarations }
end;
var
formcard: Tformcard;
fmat1,fmat2:string;
implementation
uses Functions, PrjConst, datamol, publicfunction, sendcardall, canfind,
main;
{$R *.DFM}
procedure Tformcard.FormCreate(Sender: TObject);
var
i: Integer;
begin
if fmat='/' then
begin
fmat1:=' / / ';
fmat2:=' / ' ;
end;
if fmat='-' then
begin
fmat1:=' - - ';
fmat2:=' - ';
end;
DateTimePicker1.DateTime:=now();
DateTimePicker2.DateTime:=now();
DateTimePicker3.DateTime:=now();
DateTimePicker4.DateTime:=now();
vb:=dbnavigator1.VisibleButtons;
adodataset1.Close;
adodataset1.CommandText:='select * from congcard order by workno,rq';
adodataset1.Open;
adodataset3.Close;
adodataset3.CommandText:='select * from tuikuancard order by workno,rq';
adodataset3.Open;
ADOQrymealcard.Close;
ADOQrymealcard.CommandText:='select * from mealcard order by workno';
ADOQrymealcard.Open;
adodataset2.close;
adodataset2.CommandText:='select * from pub05010 ';
adodataset2.Open;
adodataset2.First;
combobox4.Items.Clear;
combobox4.Items.Add('全部');
while not adodataset2.Eof do
begin
combobox4.Items.Add(adodataset2.fields[1].asstring);
adodataset2.Next;
end;
combobox5.Items.Clear;
combobox5.items:=combobox4.Items;
combobox4.ItemIndex:=0;
combobox5.ItemIndex:=0;
ADODataSet5.close;
Adodataset5.CommandText:='select * from per24010 where leave=0';
ADODataSet5.Open;
cbComPort.Items.Clear;
for i:=1 to 16 do
cbComPort.Items.Add(format('COM%d', [i]));
cbcomPort.itemindex:=0;
cbComRate.ItemIndex:=0;
pagecontrol1.ActivePageIndex:=0;
count.Enabled:=false;
print.Enabled:=false;
end;
procedure Tformcard.wwDBLookupCombo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_Down then
(Sender as Twwdblookupcombo).dropdown;
end;
procedure Tformcard.ToolButton8Click(Sender: TObject);
begin
close;
end;
procedure Tformcard.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClosePort(@clk);
action:=cafree;
formcard:=nil;
end;
procedure Tformcard.ADOQrymealcardworknoChange(Sender: TField);
begin
Adodataset5.close;
Adodataset5.CommandText:='select * from per24010 where workno='''+sender.AsString+''' and leave=0';
Adodataset5.Open;
if not Adodataset5.eof then
begin
ADOQrymealcardcardno.AsString:=Adodataset5cardno.asstring;
ADOQrymealcardname.AsString:=Adodataset5name.AsString;
ADOQrymealcardprof.AsString:=Adodataset5prof.AsString;
ADOQrymealcarddept.AsString:=Adodataset5dept.AsString;
end;
end;
procedure Tformcard.btnConnectClick(Sender: TObject);
var
R: Boolean;
begin
clk.Port:=cbComPort.ItemIndex+1;
clk.baudrate:=StrToInt(cbComRate.Text);
clk.clock_id:=StrToInt('$'+edClock_id.Text);
R:=OpenPort(@clk);
btnConnect.Enabled:=not R;
btnDisConnect.Enabled:=R;
end;
procedure Tformcard.btnDisConnectClick(Sender: TObject);
begin
ClosePort(@clk);
btnConnect.Enabled:=True;
btnDisConnect.Enabled:=False;
end;
procedure Tformcard.ADOQrymealcardAfterPost(DataSet: TDataSet);
begin
with Datamod.Adoquery1 do
begin
close;
Sql.Clear;
SQL.Add('update mealcard set readok=1 where workno='''+ADOQrymealcardworkno.AsString+''' ');
execsql;
close;
end;
end;
procedure Tformcard.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(sender,key);
end;
procedure Tformcard.ToolButton13Click(Sender: TObject);
begin
case pagecontrol1.ActivePageIndex of
1:begin
adoguasi.Close;
adoguasi.CommandText:='select * from guasi order by workno';
adoguasi.open;
end;
2:begin
adojieguasi.Close;
adojieguasi.CommandText:='select * from jieguasi order by workno';
adojieguasi.open;
end;
3:begin
ADOQrymealcard.Filtered:=false;
ADOQrymealcard.close;
ADOQrymealcard.commandtext:='select * from mealcard order by workno';
ADOQrymealcard.Open;
end;
4:begin
adodataset1.Close;
adodataset1.CommandText:='select * from congcard order by workno,rq';
adodataset1.Open;
end;
5:begin
adodataset3.Close;
adodataset3.CommandText:='select * from tuikuancard order by workno,rq';
adodataset3.Open;
end;
6:begin
case radiogroup1.ItemIndex of
0:
begin
ADOdaycong.Close;
ADOdaycong.CommandText:='select * from daycong order by workno,rq';
ADOdaycong.Open;
DataSource3.DataSet:=ADOdaycong;
end;
1:begin
ADOdaytuikuan.Close;
ADOdaytuikuan.CommandText:='select * from daytuikuan order by workno ,rq';
ADOdaytuikuan.Open;
DataSource3.DataSet:=ADOdaytuikuan;
end;
end;
end;
7:begin
case radiogroup2.ItemIndex of
0:
begin
ADOmoncong.Close;
ADOmoncong.CommandText:='select * From moncong order by workno,monthy';
ADOmoncong.Open;
adodataset6.close;
adodataset6.Open;
DataSource5.DataSet:=ADOmoncong;
datasource6.DataSet:=adodataset6;
end;
1:begin
ADOmontuikuan.Close;
ADOmontuikuan.CommandText:='select * From montuikuan order by workno,monthy';
ADOmontuikuan.Open;
adodataset4.Close;
adodataset4.Open;
DataSource5.DataSet:=ADOmontuikuan;
datasource6.DataSet:=adodataset4;
end;
end;
end;
end;
end;
procedure Tformcard.ToolButton9Click(Sender: TObject);
begin
if not assigned(formcardall) then
formcardall:=Tformcardall.create(Application);
formcardall.show;
end;
procedure Tformcard.ToolButton10Click(Sender: TObject);
begin
if assigned(formcanfind) then formcanfind.close;
case pagecontrol1.ActivePageIndex of
1: findrecorder(ADOQrymealcard,'ADOQrymealcard','mealcard');
2: findrecorder(ADODataSet1,'ADODataSet1','congcard');
3: findrecorder(ADODataSet3,'ADODataSet3','tuikuancard');
4:begin
case radiogroup1.ItemIndex of
0: findrecorder(ADOdaycong,'ADOdaycong','daycong');
1: findrecorder(ADOdaytuikuan,'ADOdaytuikuan','daytuikuan');
end;
end;
5:begin
case radiogroup2.ItemIndex of
0: findrecorder(ADOmoncong,'ADOmoncong','moncong');
1: findrecorder(ADOmontuikuan,'ADOmontuikuan','montuikuan');
end;
end;
end;
end;
procedure Tformcard.DBGrid1TitleClick(Column: TColumn);
begin
if s='ASC'then
s:='DESC'
else
s:='ASC';
ADOQrymealcard.Sort:=column.FieldName+ ' '+s
end;
procedure Tformcard.readcardClick(Sender: TObject);
var
Money, Times, CardStyle, GroupStation, GroupId: Integer;
day_consumed, day_times, c_month, c_day, c_flag: Integer;//ER-690卡扩展参数
Pwd: array[0..50] of char;
CardBuf, NameBuf: array[1..50] of char;
cardno1:string;
begin
if OpenPort(@clk) then
begin
cardno1:= '';
Name1.Text := '';
Money1.Text := '';
Times1.Text := '';
GroupStation := -1;
GroupId := 0;
FillChar(CardBuf, SizeOf(CardBuf), 0);
FillChar(NameBuf, SizeOf(NameBuf), 0);
FillChar(Pwd, SizeOf(Pwd), 0);
if ReadICCardEx(clk.hPort, @CardBuf, @NameBuf, @Pwd, Money, Times, day_consumed, day_times, c_month, c_day, c_flag, GroupStation, GroupId, CardStyle) then
begin
//读卡成功
case CardStyle of
CARDSTYLE_OLDCARD: Combobox1.ItemIndex:=0; // 标准IC卡格式
CARDSTYLE_NEWCARD: Combobox1.ItemIndex:=1; // 长IC卡格式
CARDSTYLE_690CARD: combobox1.ItemIndex:=2; // ER-690新消费机卡格式
else
combobox1.ItemIndex:=-1;
end;
end
else
begin
//读卡错误
MsgBox(msg_read_iccard_error, MB_ICONERROR);
exit;
end;
cardno1:= PChar(@CardBuf);
Name1.Text:= PChar(@NameBuf);
Money1.Text:= format('%g', [Money/10]);
Times1.Text:= format('%d', [Times]);
case pagecontrol1.ActivePageIndex of
3:begin
if not ADOqrymealcard.locate('cardno',cardno1,[]) then
exit
else
begin
ADOqrymealcard.Edit;
ADOqrymealcardmoney2.AsString:=money1.Text;
ADOqrymealcardtimes.AsInteger:=strtoint(times1.text);
ADOqrymealcard.Post;
Windows.Beep(2500, 100);
end;
end;
4:begin
adodataset2.Close;
adodataset2.CommandText:='select workno from per24010 where cardno='''+cardno1+'''';
adodataset2.open;
adodataset1.Append;
adodataset1cardno.AsString:=cardno1;
adodataset1workno.Asstring:=adodataset2.fieldbyname('workno').asstring;
dbedit2.SetFocus;
Windows.Beep(2500, 100);
end;
5:begin
adodataset2.Close;
adodataset2.CommandText:='select workno from per24010 where cardno='''+cardno1+'''';
adodataset2.open;
adodataset3.Append;
adodataset3cardno.AsString:=cardno1;
adodataset3workno.Asstring:=adodataset2.fieldbyname('workno').asstring;
dbedit5.SetFocus;
Windows.Beep(2500, 100);
end;
end;
end
else
begin
application.MessageBox('没联接好设备,请及时联接!','提示',mb_ok+mb_iconwarning);
ClosePort(@clk);
end;
// Windows.Beep(2500, 150);
end;
procedure Tformcard.ADOQrymealcardmoneyChange(Sender: TField);
begin
ADOQrymealcard.Edit;
ADOQrymealcardmoney2.AsFloat:=ADOQrymealcardmoney.AsFloat+ADOQrymealcardmoney1.AsFloat-ADOQrymealcarddecmoney.asfloat;
end;
procedure Tformcard.ADOQrymealcarddecmoneyChange(Sender: TField);
begin
ADOQrymealcard.Edit;
ADOQrymealcardmoney2.AsFloat:=ADOQrymealcardmoney.AsFloat+ADOQrymealcardmoney1.AsFloat-ADOQrymealcarddecmoney.asfloat;
end;
procedure Tformcard.ADODataSet1worknoChange(Sender: TField);
var c,n,d,p,g,s:string;
begin
c:='';n:='';d:='';p:='';g:='';s:='';
adodataset1.Edit;
if adodataset1workno.asstring<>'' then
begin
getworker(adodataset1workno.asstring,c,n,d,p,g,s);
if trim(n)='' then
application.messagebox('该员工不存在','Warning',mb_ok+mb_iconwarning)
else
begin
adodataset2.Close;
adodataset2.CommandText:='select dept from pub05010 where dno='''+d+'''';
adodataset2.Open;
adodataset1cardno.asstring:=c;
adodataset1name.asstring:=n;
adodataset1dept.asstring:=adodataset2.fieldbyname('dept').asstring;
adodataset1prof.asstring:=p;
adodataset2.close;
adodataset2.CommandText:='select workno,max(isnull(timesum,0)) timesum from congcard where workno='''+adodataset1workno.asstring+''' group by workno';
adodataset2.Open;
adodataset1.fieldbyname('timesum').AsInteger:=adodataset2.fieldbyname('timesum').asinteger+1;
adodataset1times.AsInteger:=1;
end;
end;
end;
procedure Tformcard.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (activecontrol=dbgrid1) or (activecontrol=dbgrid2)then
exit;
if key=#13 then
begin
key:=#0;
if activecontrol=dbedit10 then
begin
// if adodataset1.State =dsinsert then
// begin
// adodataset1.post;
// adodataset1.append;
// end;
dbedit2.setfocus;
end
else
if activecontrol=dbedit9 then
begin
// if adodataset3.State =dsinsert then
// begin
// adodataset3.post;
// adodataset3.Append;
// end;
dbedit5.setfocus;
end
else
selectnext(activecontrol,true,true);
end;
end;
procedure Tformcard.pagecontrol1Change(Sender: TObject);
begin
case pagecontrol1.activepageindex of
1:
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -