⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardissue.pas

📁 1. 发卡服务端:Server 项目文件:autojet.prj 2. 计费客户端:Client 项目文件:internet.prj Explorer.prj 先启动Exp
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -