?? 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; // 當(dāng)IC卡是計時卡時, fMoney := 可上機的分鐘數(shù);否則, fMoney=充值+贈送
No, Info: string ; // 寫卡函數(shù)需要的二個變量
s1, s2: string ;
YJ, CZ, ZS: real ; // 押金, 充值, 贈送
issDateTime: TDateTime ;
begin
issDateTime := Now ; // 發(fā)行時間
checkFlag := '1' ;
ValidCheck(sender);
if checkFlag='0' then exit; // 若檢查通不過, 則自動退出
ICno := IcNumber ; //調(diào)用一個存儲過程, 進(jìn)而一個卡號
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); // 贈送
// 寫數(shù)據(jù)表(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 ; //計時時數(shù)
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 ; // 發(fā)行日期
Parameters.parambyname('Operator1').value := m_OpName ; // 操作人
try
execsql;
except
application.messagebox(' 發(fā)行未能成功, 卡記錄不能增加!','提示',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(' 發(fā)行未能成功, 借貸表不能增加!','提示',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(' 發(fā)行未能成功, 借貸表不能增加!','提示',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(' 發(fā)行未能成功, 借貸表不能增加!','提示',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]+ '發(fā)行成功! '+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.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -