📄 cardissue.pas
字号:
sql.add('delete from Card where icNo=:icNo');
Parameters.parambyname('icNo').Value := ICno ;
try
execsql;
except
beep;
end;
end;
with frm_sys_dm.Qr_tmp2 do begin
close;
sql.clear;
sql.add('delete from Pbill where icNo=:icNo and Edate=:Edate');
Parameters.parambyname('icNo').Value := ICno ;
Parameters.parambyname('Edate').Value := issDateTime ;
try
execsql;
except
beep;
end;
end;
end;
procedure TFrm_CardIssue.Btn_IssueClick(Sender: TObject);
var
ICno: integer ; // IC卡号
fMoney: real; // 当IC卡是计时卡时, fMoney := 可上机的分钟数;否则, fMoney=充值+赠送
No, Info: string ; // 写卡函数需要的二个变量
s1, s2: string ;
YJ, CZ, ZS: real ; // 押金, 充值, 赠送
issDateTime: TDateTime ;
begin
issDateTime := Now ; // 发行时间
checkFlag := '1' ;
ValidCheck(sender);
if checkFlag='0' then exit; // 若检查通不过, 则自动退出
ICno := IcNumber ; //调用一个存储过程, 进而一个卡号
No := intTostr(CmbBx_CardType.ItemIndex+1)+ padl(intTostr(ICno),5); // 卡型+卡号
if (CmbBx_CardType.ItemIndex+1)=4 then //如果是计时卡
fMoney := strTofloat(edt_JSSS.Text)*60
else
fMoney := strTofloat(edt_Payment.text)+strTofloat(edt_Gift.text);
s1 := formatdatetime('yyyy"-"mm"-"dd', Picker_CardDate.Date) ;
s2 := formatdatetime('hh":"nn":"ss', Picker_CardDate.time) ;
info := MoneyString(fMoney)+copy(s1,3,2)+copy(s1,6,2)+copy(s1,9,2)+copy(s2,1,2)+copy(s2,4,2);
// 写卡不成功, 再写一次
if issue(m_com, pchar(No), pchar(info)) <> 0 then
if messagebox(handle,'写卡时出错, 是否再写一次?','提示', MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON1)=IDYES then begin
if issue(m_com, pchar(No), pchar(info)) <> 0 then begin
messagebox(handle,' 卡已损坏, 请再换一张卡 ', '提示', mb_ok+MB_ICONWARNING);
EditClear(Sender);
exit ;
end
end else begin
messagebox(handle,' 卡已损坏, 请再换一张卡 ', '提示', mb_ok+MB_ICONWARNING);
EditClear(Sender);
exit ;
end;
YJ := strTofloat(edt_Deposit.Text); // 押金
CZ := strTofloat(edt_Payment.text); // 充值
ZS := strTofloat(edt_Gift.Text); // 赠送
// 写数据表(CARD)
with frm_sys_dm.Qr_tmp1 do
begin
close;
sql.clear;
sql.add('insert into Card');
sql.add('(icNo, icType, Gname, IdentityNo, Tele, Deposit, Payment, Gift, JSSS, icDate, Fxrq, SYJE, SYSJ, Operator1)');
sql.add('values (:icNo, :icType, :Gname, :IdentityNo, :Tele, :Deposit, :Payment, :Gift, :JSSS, :icDate, :Fxrq, :SYJE, :SYSJ, :Operator1)');
Parameters.parambyname('icNo').Value := ICno ;
Parameters.parambyname('icType').value := CmbBx_CardType.items[CmbBx_CardType.itemindex] ;
Parameters.parambyname('Gname').value := trim(edt_Gname.text);
Parameters.parambyname('IdentityNo').value := trim(edt_IdentityNo.text);
Parameters.parambyname('Tele').value := trim(edt_Tele.text) ;
Parameters.parambyname('Deposit').value := YJ ; // 押金
Parameters.parambyname('Payment').value := CZ ; // 充值
Parameters.parambyname('Gift').value := ZS ; // 赠送
if CmbBx_CardType.ItemIndex = 3 then // 计时卡
begin
Parameters.parambyname('JSSS').value := strTofloat(edt_JSSS.text)*60 ; //计时时数
Parameters.parambyname('SYJE').value := 0 ;
Parameters.parambyname('SYSJ').value := strTofloat(edt_JSSS.text)*60 ; //剩余时间
end else
begin
Parameters.parambyname('JSSS').value := 0 ;
Parameters.parambyname('SYJE').value := CZ + ZS ; //剩余金额
Parameters.parambyname('SYSJ').value := 0 ;
end;
Parameters.parambyname('icDate').value := strTodatetime(s1 + ' '+ s2);
Parameters.parambyname('Fxrq').value := issDateTime ; // 发行日期
Parameters.parambyname('Operator1').value := m_OpName ; // 操作人
try
execsql;
except
application.messagebox(' 发行未能成功, 卡记录不能增加!','提示',mb_ok+mb_iconstop);
canc(m_com, pchar(No)); //注销卡
edt_Payment.SetFocus ;
EditClear(Sender);
exit;
end;
end;
// 写借贷表
if YJ>0 then
with frm_sys_dm.Qr_tmp1 do begin
close;
sql.clear;
sql.add('insert into Pbill');
sql.add('(icNo, Edate, itemName, JF, Operator)');
sql.add('values (:icNo, :Edate, :itemName, :JF, :Operator)');
Parameters.parambyname('icNo').Value := ICno ;
Parameters.parambyname('Edate').value := issDateTime ;
Parameters.parambyname('itemName').value := 'YJ' ;
Parameters.parambyname('JF').value := YJ ; // 借方=押金的金额
Parameters.parambyname('Operator').value := m_OpName ;
try
execsql;
except
application.messagebox(' 发行未能成功, 借贷表不能增加!','提示',mb_ok+mb_iconstop);
canc(m_com, pchar(No)); //注销卡
RecallOPT(ICno, issDateTime); // 操作回退
EditClear(Sender);
edt_Payment.SetFocus ;
exit;
end;
end;
if CZ>0 then
with frm_sys_dm.Qr_tmp1 do begin
close;
sql.clear;
sql.add('insert into Pbill');
sql.add('(icNo, Edate, itemName, JF, Operator)');
sql.add('values (:icNo, :Edate, :itemName, :JF, :Operator)');
Parameters.parambyname('icNo').Value := ICno ;
Parameters.parambyname('Edate').value := issDateTime ;
Parameters.parambyname('itemName').value := 'CZ' ;
Parameters.parambyname('JF').value := CZ ; // 借方=充值的金额
Parameters.parambyname('Operator').value := m_OpName ;
try
execsql;
except
application.messagebox(' 发行未能成功, 借贷表不能增加!','提示',mb_ok+mb_iconstop);
canc(m_com, pchar(No)); //注销卡
RecallOPT(ICno, issDateTime); // 操作回退
EditClear(Sender);
edt_Payment.SetFocus ;
exit;
end;
end;
if ZS>0 then
with frm_sys_dm.Qr_tmp1 do begin
close;
sql.clear;
sql.add('insert into Pbill');
sql.add('(icNo, Edate, itemName, JF, Operator)');
sql.add('values (:icNo, :Edate, :itemName, :JF, :Operator)');
Parameters.parambyname('icNo').Value := ICno ;
Parameters.parambyname('Edate').value := issDateTime ;
Parameters.parambyname('itemName').value := 'ZS' ;
Parameters.parambyname('JF').value := ZS ; // 借方=赠送的金额
Parameters.parambyname('Operator').value := m_OpName ;
try
execsql;
except
application.messagebox(' 发行未能成功, 借贷表不能增加!','提示',mb_ok+mb_iconstop);
canc(m_com, pchar(No)); //注销卡
RecallOPT(ICno, issDateTime); // 操作回退
EditClear(Sender);
edt_Payment.SetFocus ;
exit;
end;
end;
MessageBox(handle, pchar(CmbBx_CardType.items[CmbBx_CardType.itemindex]+ '发行成功! '+char(13)+char(13)+ ' 请拔出IC卡 '),'提示',mb_ok+MB_ICONWARNING);
EditClear(Sender); //清空edit中的0
end;
procedure TFrm_CardIssue.Btn_ReadClick(Sender: TObject);
var
p: array[0..32] of char;
I:INTEGER;
begin
// 检查IC卡是否是新卡
I:=GETNO(m_com, p);
if I<>0 then begin
messagebox(handle,PCHAR(GETMSG(I)), '提示', mb_ok+MB_ICONWARNING);
exit;
end;
if CardInfo(m_ICtype, m_ICno, m_ICmoney, m_ICdate)= 0 then // 读卡成功
begin
case strToint(m_ICtype)of
1: messagebox(handle, pchar(' 该卡是普通卡'+#13+#13+'卡上余额是'+floatTostr(m_ICmoney)), '提示', mb_ok);
2: messagebox(handle, pchar(' 该卡是客户金卡'+#13+#13+'卡上余额是'+floatTostr(m_ICmoney)), '提示', mb_ok);
3: messagebox(handle, pchar(' 该卡是客户银卡'+#13+#13+'卡上余额是'+floatTostr(m_ICmoney)), '提示', mb_ok);
4: messagebox(handle, pchar(' 该卡是计时卡'+#13+#13+'卡上余时是'+GetHourMinute((trunc(m_ICmoney)))),'提示', mb_ok);
5: messagebox(handle, pchar(' 该卡是管理卡'+#13+#13+'卡上余额是'+floatTostr(m_ICmoney)), '提示', mb_ok);
end;
end;
end;
procedure TFrm_CardIssue.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
vk_return:
begin
if ((activecontrol is tcombobox) and ((ssalt in shift) or (activecontrol as tcombobox).droppeddown)) then
exit;
SelectNext(ActiveControl As Twincontrol,true,true);
key:=0;
end;
vk_up,vk_down:
begin
if (ssAlt in shift) or ((ActiveControl is Tcombobox)and((ActiveControl as Tcombobox).droppeddown)) then
exit;
SelectNext(ActiveControl As Twincontrol,key=vk_down,true);
key:=0;
end;
end;
end;
procedure TFrm_CardIssue.edt_IdentityNoExit(Sender: TObject);
begin
edt_IdentityNo.Text := trim(edt_IdentityNo.Text);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -