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

📄 handle.~pa

📁 一个典当行的业务管理系统程序
💻 ~PA
📖 第 1 页 / 共 2 页
字号:
          {end
          else
          begin
              //必须输入月份
              messagedlg(Msg.MsgMonthInfo,mtWarning,[mbYes],0);
              exit;
          end;
     end
     else  //年份没有输入
     begin
          if txtMonth.Text<>''then
          begin
               //必须输入年份
               messagedlg(Msg.MsgYearInfo,mtWarning,[mbYes],0);
               exit;
          end
          else  //年月为空
          begin
               if txtDay.Text<>''then
               begin
                    //必须输入年月
                    messagedlg(Msg.MsgMYInfo,mtWarning,[mbYes],0);
                    exit;
               end
               else
                   DateMark:=False;
          end;
     end;}

     if txtBeginMoney.Text<>'' then
     begin    //起始金额不为空
          if txtEndMoney.Text<>''then
          begin  //终到金额也不为空
                 Sql:=Sql+'and (d.PawnMoney>=:BeginMoney and d.PawnMoney<:EndMoney) ';
                 //BeginMoneyMark:=True;
                 MoneyMark:=True;
          end
          else  //终到金额为空--允许
          begin
               Sql:=Sql+'and d.PawnMoney>=:BeginMoney ';
               BeginMoneyMark:=True;
          end;
     end
     else   //起始的金额为空
     begin
          if txtEndMoney.Text<>'' then
          begin //终到的金额不为空,必须输入起始金额
              messagedlg(Msg.MsgHandleMoney,mtWarning,[mbYes],0);
              txtBeginMoney.SetFocus ;
              exit;
          end
          else //终到金额为空,不判断金额
               MoneyMark:=False;
     end;
     with dmPawnFrm do
     begin
          dqDeadDetail.Close;
          dqDeadDetail.SQL.Clear ;
          if cmbCategory.Text<>'' then
          begin
               Sql:=Sql+'and d.PawnCategory=:Category ';
          end;
          dqDeadDetail.SQL.Add(Sql);
          //dqDeadDetail.ParamByName('DateElapsed').AsDateTime:=NowtoTen;
          if cmbCategory.Text<>'' then
          begin
               dqDeadDetail.ParamByName('Category').asstring:=cmbCategory.Text;
          end;
          //dqDeadDetail.ParamByName('Sta1').asstring:='绝当';
          if DateMark=True then
          begin
               DateMark:=False;
               dqDeadDetail.ParamByName('SearchDate').asDateTime:=SearchDate;
          end;
          if MoneyMark=True then
          begin
               MoneyMark:=False;
               dqDeadDetail.ParamByName('BeginMoney').asfloat:=strtofloat(txtBeginMoney.text);
               dqDeadDetail.ParamByName('EndMoney').asfloat:=strtofloat(txtEndMoney.text);
          end;
          if BeginMoneyMark=True then
          begin
               BeginMoneyMark:=False;
               dqDeadDetail.ParamByName('BeginMoney').asfloat:=strtofloat(txtBeginMoney.text);
          end;
          dqDeadDetail.Open;
          if dqDeadDetail.IsEmpty=True then
             messagedlg(Msg.MsgNoDeadPawn,mtWarning,[mbYes],0);
     end;
end;

procedure TfrmHandle.txtHandleNumKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=VK_RETURN then
     begin
          if txtHandleNum.Text<>'' then
          begin
               if PawnNumber<strtoint(txtHandleNum.text) then
               begin
                    messagedlg(Msg.MsgNumberExceed,mtWarning,[mbYes],0);
                    txtHandleNum.SetFocus ;
                    exit;
               end;
               if txtHandleNum.Text='0' then
               begin
                    messagedlg('数量不能为零,请重新输入!',mtWarning,[mbYes],0);
                    txtHandleNum.SetFocus;
                    exit;
               end;
               txtHandlePrice.SetFocus ;
          end
          else
          begin
               //未输入数量
               messagedlg('请输入数量!',mtWarning,[mbYes],0);
               txtHandleNum.SetFocus;
          end;
     end;
end;


procedure TfrmHandle.cmdOkClick(Sender: TObject);
var
   SqlHandle:string;
   HandleRecNum:integer;
   TotalRecNum:integer;
begin
     if txtNumber.Text='' then
        txtNumber.Text:='0';
     if txtPreMoney.Text='' then
        txtPreMoney.Text:='0';
     //判断输入的数量是否超出已有的数量
     if txtHandleNum.Text<>'' then
     begin
          if PawnNumber<strtoint(txtHandleNum.text) then
          begin
               messagedlg(Msg.MsgNumberExceed,mtWarning,[mbYes],0);
               txtHandleNum.SetFocus ;
               exit;
          end;
          if txtHandleNum.Text='0' then
          begin
               messagedlg('数量不能为零,请重新输入!',mtWarning,[mbYes],0);
               txtHandleNum.SetFocus;
               exit;
          end;
          //txtHandlePrice.SetFocus ;
     end
     else
     begin
          //未输入数量
          messagedlg('请输入数量!',mtWarning,[mbYes],0);
          txtHandleNum.SetFocus;
          exit;
     end;
     //判断输入的金额是否合理
     if txtHandlePrice.Text='' then
     begin
          txtHandlePrice.Text:=Format('%8.1f',[0.0]);
          messagedlg('处理金额为0.0,请确认!',mtWarning,[mbYes],0);
          exit;
     end
     else
     begin
          if strtofloat(txtHandlePrice.Text)=0 then
          begin
               messagedlg('处理金额为0.0,请确认!',mtWarning,[mbYes],0);
               txtHandlePrice.SetFocus;
               exit;
          end;
          txtHandlePrice.Text:=Format('%8.1f',[strtofloat(txtHandlePrice.Text)]);
          //cmdOk.SetFocus;
     end;
     //------------------
     with dmPawnFrm do
     begin
          //将此条已处理的信息放入Handle_Tbl
          tblHandle.Open;
          tblHandle.Insert;
          tblHandlePawnTicketCode.Value:=PawnCode;
          tblHandlePawnName.Value:=trim(txtName.text);
          tblHandlePawnCategory.Value:=trim(txtCategory.text);
          tblHandlePawnSpec.Value:=trim(txtSpec.text);
          tblHandlePawnNumber.Value:=strtoint(trim(txtHandleNum.text));
          tblHandlePawnMoney.Value:=strtofloat(trim(txtPreMoney.text));
          tblHandleSellMoney.Value:=strtofloat(trim(txtHandlePrice.text));
          tblHandleHandleDate.value:=Date;
          tblHandle.Post;
          tblHandle.Close;
          //将细表中此条记录的Status设为处理
          tblDetail.Open;
          tblDetail.SetKey;
          tblDetail.FieldByName('PawnTicketCode').Asstring:=PawnCode;
          tblDetail.FieldByName('PawnLineNum').asinteger:=LineNum;
          if tblDetail.FindKey([PawnCode,LineNum]) then
          begin
               tblDetail.DisableControls ;
               tblDetail.Edit;
               if strtoint(txtHandleNum.Text)=PawnNumber then
                  tblDetailStatus.Value:='处理'
               else if strtoint(txtHandleNum.Text)<PawnNumber then
               begin
                    tblDetailPawnNumber.Value:=PawnNumber-strtoint(txtHandleNum.Text);
                    tblDetailStatus.Value:='半处';
               end;
               tblDetail.Post;
               tblDetail.EnableControls ;
          end;
          tblDetail.Close;
          //再查看细表中所有具有此当票编号的记录的Status是否均为处理
          //若均为处理,则将头表中有此当票编号的记录的Status设为处理
          //并将其从库存数据表stockpile_Tbl中删除
          //否则,设为半处!
          //----将已处理的记录数与有此当票编号的所有记录数进行比较
          //----当两记录数相等,即为均被处理
          dqDetail.Close;
          dqDetail.SQL.Clear;
          SqlHandle:='Select * from PawnDetail_Tbl ';
          SqlHandle:=SqlHandle+'where PawnTicketCode=:PawnCode ';
          SqlHandle:=SqlHandle+'and Status=:Status;';
          dqDetail.SQL.Add(SqlHandle);
          dqDetail.ParamByName('PawnCode').asstring:=PawnCode;
          dqDetail.ParamByName('Status').asstring:='处理';
          dqDetail.Open;
          if dqDetail.IsEmpty=False then
             HandleRecNum:=dqDetail.RecordCount 
          else
              HandleRecNum:=0;
          dqDetail.Close;
         //----此当票编号的所有记录数
         dqDetail.Close;
         dqDetail.SQL.Clear ;
         SqlHandle:='Select * from PawnDetail_Tbl ';
         SqlHandle:=SqlHandle+'where PawnTicketCode=:PawnCode ';
         dqDetail.SQL.Add(SqlHandle);
         dqDetail.ParamByName('PawnCode').asstring:=PawnCode;
         dqDetail.Open;
         if dqDetail.IsEmpty=False then
             TotalRecNum:=dqDetail.RecordCount 
         else
              TotalRecNum:=0;
         dqDetail.Close;
         //开始判断
         if TotalRecNum<>0 then
         begin
              tblHead.Open;
              tblHead.IndexFieldNames:='PawnTicketCode';
              tblHead.SetKey;
              tblHead.FieldByName('PawnTicketCode').asstring:=PawnCode;
              if TotalRecNum=HandleRecNum then
              begin                       //均被处理
                   if tblHead.GotoKey then
                   begin
                        tblHead.Edit;
                        tblHeadStatus.Value:='处理';
                        tblHead.Post ;
                        //从库存中删除它
                        tblStockpile.Open;
                        tblStockpile.IndexFieldNames:='PawnCode';
                        tblStockpile.SetKey ;
                        tblStockpile.FieldByName('PawnCode').asstring:=PawnCode;
                        if tblStockpile.GotoKey then
                        begin
                             tblStockpile.Delete;
                        end;
                        tblStockpile.Close;
                   end;
              end
              else //未被全部处理
              begin
                   if HandleRecNum<>0 then  //有被处理的记录
                   begin
                        if tblHead.GotoKey then
                        begin
                             tblHead.Edit;
                             tblHeadStatus.Value:='半处';
                             tblHead.Post ;
                        end;
                   end;
              end;//end else
              tblHead.Close;
         end;//end totalrecnum<>0
     end;//end with
     //staHandle.Caption:='物品处理结束!';
     ClearForm;
     FormShow(Sender);
end;

procedure TfrmHandle.txtHandlePriceKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=VK_RETURN then
     begin
          if txtHandlePrice.Text='' then
          begin
               txtHandlePrice.Text:=Format('%8.1f',[0.0]);
               messagedlg('处理金额为0.0,请确认!',mtWarning,[mbYes],0);
          end
          else
          begin
               if strtofloat(txtHandlePrice.Text)=0 then
               begin
                    messagedlg('处理金额为0.0,请确认!',mtWarning,[mbYes],0);
                    txtHandlePrice.SetFocus;
                    exit;
               end;
               txtHandlePrice.Text:=Format('%8.1f',[strtofloat(txtHandlePrice.Text)]);
               cmdOk.SetFocus;
          end;
     end;
end;

procedure TfrmHandle.txtHandleNumKeyPress(Sender: TObject; var Key: Char);
begin
     if key>=chr(58) then
        key:=chr(0);
end;

procedure TfrmHandle.txtYearKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Year,Month,Day:word;
begin
     if key=VK_RETURN then
     begin
          if txtYear.Text =''then
          begin
               DecodeDate(Now, Year, Month, Day);
               txtYear.Value:= Year;
          end;
          txtMonth.SetFocus;
     end;
end;

procedure TfrmHandle.txtMonthKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Year,Month,Day:word;
begin
     if key=VK_RETURN then
     begin
          if txtMonth.Text =''then
          begin
               DecodeDate(Now, Year, Month, Day);
               txtMonth.Value:=Month;
          end;
          txtDay.SetFocus;
     end;
end;

procedure TfrmHandle.txtDayKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Year,Month,Day:word;
begin
     if key=VK_RETURN then
     begin
          if txtDay.Text =''then
          begin
               DecodeDate(Now, Year, Month, Day);
               txtDay.Value:=Day;
          end;
          cmdQuery.SetFocus;
     end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -