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

📄 pawnquery.pas

📁 一个典当行的业务管理系统程序
💻 PAS
📖 第 1 页 / 共 3 页
字号:
                   dqHeadUn.ParamByName('Status1').asstring:='处理';
                   dqHeadUn.ParamByName('Status2').asstring:='绝当';
              end;
              if ckNopawn.Checked=True then
              begin
                   //dqHeadUn.ParamByName ('OutTime').AsDateTime:=NowToTen; //EncodeDate(Year,Month,Day)-Pawn.OutPawnLimit;
                   dqHeadUn.ParamByName ('Status').Asstring:='绝当';
              end;}
              dqHeadUn.Open;
              staRecNum.Caption:='共'+inttostr(dqHeadUn.RecordCount)+'张当票';
              DataSetHeadOpenMark:=True;
          end;
     end;
end;
//当头表中的某一条记录被点中后,取出他的当票编号,
//再在细表中查询具有此当票编号的当物信息放入网格dgDetail中,
//dgDetail在点击检索键时被设为与dsQueryDetailUn数据源相连
procedure TfrmPawnQuery.dgHeadCellClick(Column: TColumn);
var
   Sql:string;
   PawnStatus:string;
   PawnEndDate:TDateTime;
   DayLimit:integer;
   CategoryMark:Boolean;

begin
     dgDetail.DataSource :=dmPawnFrm.dsQueryDetailUn ;
     self.staQuery.Caption:='';

     if DataSetHeadOpenMark=True then
     begin
          //DataSetHeadOpenMark:=False;
          if ckRansom.Checked=True then
          begin
               PawnCode:=dgHRansom.Columns[0].Field.AsString;
          end
          else
          begin
               PawnCode:=dgHead.Columns[0].Field.AsString;
          end;
     end
     else
     begin
          exit;
          //PawnCode:='';
     end;
     
     Sql:='select PawnTicketCode,PawnLineNum,PawnName,PawnCategory,PawnSpec,';
     Sql:=Sql+'PawnNumber,AppriseValue,DiscountRate,PawnMoney from PawnDetail_Tbl ';
     Sql:=Sql+ 'where True and Status='''' ';

     with dmPawnFrm do
     begin
          tblHead.Open;
          tblHead.IndexFieldNames:='PawnTicketCode';
          tblHead.SetKey;
          tblHead.FieldByName('PawnTicketCode').Asstring:=PawnCode;
          if tblHead.GotoKey then
               PawnStatus:=tblHeadStatus.Value;
          tblHead.Close;
     end;
     if (PawnStatus='未赎')or (PawnStatus='解挂') or
        (PawnStatus='半处')then
     begin
          PawnEndDate:=dgHead.Columns[11].Field.Value;
          DayLimit:=Round(Now-PawnEndDate);
          if DayLimit<0 then //在当
             self.staQuery.Caption:=Msg.StatusBuyOnline;
          //if DayLimit>10 then  //绝当
             //self.staQuery.Caption:=Msg.StatusBuyDeadPawn;
          if (DayLimit>=1)and (DayLimit<=10) or (DayLimit>10) then  //逾期
             self.staQuery.Caption:=Msg.StatusBuyTimeOut;
     end
     else
     begin
          if PawnStatus='赎回'then
          begin
             self.staQuery.Caption:=Msg.MsgBuyBuyed;
          end;
          if PawnStatus='挂失'then
          begin
             self.staQuery.Caption:=Msg.MsgBuyLost;
          end;
          if PawnStatus='处理'then
          begin
             self.staQuery.Caption:=Msg.MsgBuyDeadOutStock;
          end;
          if PawnStatus='绝当' then
          begin
               self.staQuery.Caption:=Msg.StatusBuyDeadPawn;
          end;
     end;
     //查询细表
     with dmPawnFrm do
     begin
          dqDetailUn.close;
          dqDetailUn.SQL.clear;
          Sql:=Sql+' and PawnTicketCode=:PawnCode ';
          //if cmbCategory.Text<>'' then
          //begin
               //CategoryMark:=True;
               //Sql:=Sql+'and PawnCategory=:Category ';
          //end;

          dqDetailUn.SQL.add(Sql);
          dqDetailUn.paramByName('PawnCode').Asstring:=PawnCode;
          //if CategoryMark=True then
          //begin
               //CategoryMark:=False;
               //dqDetailUn.ParamByName('Category').asstring:=cmbCategory.Text;
          //end;
          dqDetailUn.open;

     end;
end;
//点击挂失键
procedure TfrmPawnQuery.cmdLostClick(Sender: TObject);
begin
     if PawnCode='' then
     begin
          messagedlg(Msg.MsgDelClickHead,mtInformation,[mbYes],0);
          exit;
     end;
     staQuery.Caption :=Msg.StatusMsgLostIn;
     with dmPawnFrm do
     begin
          tblHead.Open;
          tblHead.IndexFieldNames:='PawnTicketCode';
          tblHead.SetKey;
          tblHead.FieldByName('PawnTicketCode').asstring:=PawnCode;
          if tblHead.GotoKey  then
          begin
               if tblHeadStatus.Value<>'赎回' then
               begin
                    tblHead.Edit;
                    tblHeadStatus.Value :='挂失';
                    tblHead.Post ;
                    staQuery.Caption :=Msg.StatusMsgLostOver;
               end
               else
                   messagedlg(Msg.MsgModifyInfo,mtWarning,[mbYes],0);
          end;
          tblHead.Close;
     end;
end;
//点击解挂键
procedure TfrmPawnQuery.cmdFindClick(Sender: TObject);
begin
     if PawnCode='' then
     begin
          messagedlg(Msg.MsgDelClickHead,mtInformation,[mbYes],0);
          exit;
     end;
     staQuery.Caption :=Msg.StatusMsgFindIn;
     with dmPawnFrm do
     begin
          tblHead.Open;
          tblHead.IndexFieldNames:='PawnTicketCode';
          tblHead.SetKey;
          tblHead.FieldByName('PawnTicketCode').asstring:=PawnCode;
          if tblHead.GotoKey  then
          begin
               if tblHeadStatus.Value<>'赎回'then
               begin
                    tblHead.Edit;
                    tblHeadStatus.Value :='解挂';
                    tblHead.Post ;
                    staQuery.Caption :=Msg.StatusMsgFindOver;
               end
               else
                   messagedlg(Msg.MsgModifyInfo,mtWarning,[mbYes],0);
          end;
          tblHead.Close;
     end;
end;

procedure TfrmPawnQuery.FormShow(Sender: TObject);
var
   Present: TDateTime;
   Year, Month, Day: Word;
begin
     dgHRansom.Visible:=False;
     Present:= Now;
     DecodeDate(Present, Year, Month, Day);
     txtBeginYear.Value :=Year;
     txtBeginMonth.Value:=Month;
     txtBeginDay.Value:=Day;
     txtEndYear.Value:=Year;
     txtEndMonth.Value:=Month;
     txtEndDay.Value:=Day;
     ckTotalData.Checked:=True;
     //IniCategoryBox;
     with dmPawnFrm do
     begin
          dqHeadUn.Close;
          if DataSetHeadOpenMark=True then
          begin
               DataSetHeadOpenMark:=False;
          end;
          dqDetailUn.Close;
     end;
end;
//点击删除键
procedure TfrmPawnQuery.cmdDeleteClick(Sender: TObject);
var
   Sql:string;
begin
     if messagedlg(Msg.MsgDel,mtConfirmation,[mbYes,mbNo],0)=mrYes then
     begin
          if PawnCode='' then
          begin
               messagedlg(Msg.MsgDelClickHead,mtInformation,[mbYes],0);
               exit;
          end;
          //dmPawnFrm.Database.Commit ;
          //dmPawnFrm.Database.StartTransaction;
          staQuery.Caption :=Msg.StatusMsgDelIn;
          with dmPawnFrm do
          begin
               //删除头表中的记录
               tblHead.Open;
               tblHead.IndexFieldNames:='PawnTicketCode';
               tblHead.SetKey;
               tblHead.FieldByName('PawnTicketCode').asstring:=PawnCode;
               if tblHead.GotoKey  then
               begin
                    tblHead.Delete;
                    //在dmpawnfrm 的tblHead 的DELETE之前有beforedelete
                    //将要删除的记录存入头表历史数据表中
               end;
               tblHead.Close;

               //删除细表中相应的记录根据当票编号
               Sql:='select PawnTicketCode,PawnLineNum,PawnName,PawnCategory,PawnSpec,';
               Sql:=Sql+'PawnNumber,AppriseValue,DiscountRate,PawnMoney from PawnDetail_Tbl ';
               Sql:=Sql+ 'where PawnTicketCode=:PawnCode';

               dqDetailDel.Close;
               dqDetailDel.SQL.Clear ;
               //Sql:=Sql+' and PawnTicketCode=:PawnCode';   //"'+ PawnCode + '"';
               dqDetailDel.SQL.Add (Sql);
               dqDetailDel.ParamByName('PawnCode').Asstring:=PawnCode;
               dqDetailDel.Open;
               if dqDetailDel.IsEmpty=False then
               begin
                    //dqDetailDel.RequestLive:=True;
                    dqDetailDel.First ;
                    tblDetailHistory.Open;
                    while not dqDetailDel.Eof do
                    begin
                         //删除细表记录前,将要删除的记录存入细表历史数据表中
                         //有beforedelete事件
                         dqDetailDel.Delete ;
                         //dqDetailDel.Next ;
                    end;
                    tblDetailHistory.Close;
               end
               else
               begin
                  staQuery.Caption:='';
               end;
               //dqDetailDel.RequestLive:=False;
               //删除库存记录
               tblStockpile.Open;
               tblStockpile.IndexFieldNames:='PawnCode';
               tblStockpile.SetKey;
               tblStockpile.FieldByName('PawnCode').asstring:=PawnCode;
               if tblStockpile.GotoKey  then
               begin
                    tblStockpile.Delete;    //在dmpawnfrm 的tblHead 的DELETE之前有beforedelete
               end;
               tblStockpile.Close;
               //删除典当金额数据表中的记录PawnMoney_Tbl
               tblPawnMoney.Open;
               tblPawnMoney.IndexFieldNames:='PawnTicketCode';
               tblPawnMoney.SetKey;
               tblPawnMoney.FieldByName('PawnTicketCode').asstring:=PawnCode;
               if tblPawnMoney.GotoKey then
               begin
                    tblPawnMoney.Delete;
               end;
               tblPawnMoney.Close;
               //将网格中的数据刷新
               cmdQueryClick(Sender);
               //dgDetail被设为允许修改和删除的数据源dsDetailDel
               //为了将删除后的数据刷新
               dgDetail.DataSource:=dsDetailDel ;
               dgDetail.Refresh ;
               staQuery.Caption :=Msg.StatusMsgDelOver;
          end;
     end;
end;

procedure TfrmPawnQuery.cmbCategoryKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=VK_RETURN then
     begin
          if CertiEnterTimes=0 then
          begin
               CertiEnterTimes:=CertiEnterTimes+1;
               if SendMessage((Sender as TComBoBox).handle,CB_GetDroppedState,0,0)
                  =0 then
                  PostMessage((Sender as TComBoBox).handle,CB_SHOWDROPDOWN,1,0);
          end
          else
          begin
               CertiEnterTimes:=0;
          end;
     end;
end;

procedure TfrmPawnQuery.dgHRansomKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Column:TColumn;
begin
     if key=VK_RETURN then
     begin
          dgHeadCellClick(Column);     
     end;
end;

procedure TfrmPawnQuery.dgHeadKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Column:TColumn;
begin
     if key=VK_RETURN then
     begin
          dgHeadCellClick(Column);     
     end;
end;

end.

⌨️ 快捷键说明

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