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

📄 ord420_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
  ADOQuery1.SQL.Add('from ORD500A,ORD500B,INV150,INV120');
  ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500B_003=I150_001 and I150_005=I120_001 and');
  ADOQuery1.SQL.Add('  O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by I120_001,''[''+I120_002+'']''+I120_003,I120_004');
  ADOQuery1.SQL.Add('order by ''[''+I120_002+'']''+I120_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
    ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
    ADODataSet1.FieldByName('FQuote').Value:=ADOQuery1.FieldByName('FNum').Value;
    ADODataSet1.FieldByName('FOrder').Value:=0;
    ADODataSet1.FieldByName('FPercent').Value:=0;
    ADODataSet1.Post;
    ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FNum').Value;
    ADOQuery1.Next;
  end;
  //定单數量統計     按销售日期来统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select I120_001 as FNo,''[''+I120_002+'']''+I120_003 as FName,I120_004 as FParent,count(*) as FNum');
  ADOQuery1.SQL.Add('from ORD510A,ORD510B,INV150,INV120');
  ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510B_003=I150_001 and I150_005=I120_001 and');
  ADOQuery1.SQL.Add('  O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by I120_001,''[''+I120_002+'']''+I120_003,I120_004');
  ADOQuery1.SQL.Add('order by ''[''+I120_002+'']''+I120_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('FNo').Value,[]) then
    begin
      ADODataSet1.Edit;
      ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
      ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FNum').Value/ADODataSet1.FieldByName('FQuote').Value)*100;
      ADODataSet1.Post;
    end else
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
      ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
      ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
      ADODataSet1.FieldByName('FQuote').Value:=0;
      ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
      ADODataSet1.FieldByName('FPercent').Value:=0;
      ADODataSet1.Post;
    end;
    ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FNum').Value;
    ADOQuery1.Next;
  end;

  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    if ADODataSet1.FieldByName('FOrder').AsInteger=0 then
      ADODataSet1.FieldByName('FPercent').Value:=0
    else
      ADODataSet1.FieldByName('FPercent').Value:=ADODataSet1.FieldByName('FQuote').AsInteger/ADODataSet1.FieldByName('FOrder').AsInteger;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
end;

procedure TOrd420_01Form.BySeller(AFromDate, AToDate: TDateTime);
begin
  //报价单数量统计        按报价日期来统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select H150_001 as FNo,''[''+H150_002+'']''+H150_003 as FName,H150_001 as FParent,count(*) as FNum');
  ADOQuery1.SQL.Add('from ORD500A,ORD500B,HRM150');
  ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500A_005=H150_001 and');
  ADOQuery1.SQL.Add('  O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by H150_001,''[''+H150_002+'']''+H150_003,H150_001');
  ADOQuery1.SQL.Add('order by ''[''+H150_002+'']''+H150_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
    ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
    ADODataSet1.FieldByName('FQuote').Value:=ADOQuery1.FieldByName('FNum').Value;
    ADODataSet1.FieldByName('FOrder').Value:=0;
    ADODataSet1.FieldByName('FPercent').Value:=0;
    ADODataSet1.Post;
    ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FNum').Value;
    ADOQuery1.Next;
  end;
  //定单數量統計     按销售日期来统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select H150_001 as FNo,''[''+H150_002+'']''+H150_003 as FName,H150_001 as FParent,count(*) as FNum');
  ADOQuery1.SQL.Add('from ORD510A,ORD510B,HRM150');
  ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510A_005=H150_001 and');
  ADOQuery1.SQL.Add('  O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by H150_001,''[''+H150_002+'']''+H150_003,H150_001');
  ADOQuery1.SQL.Add('order by ''[''+H150_002+'']''+H150_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('FNo').Value,[]) then
    begin
      ADODataSet1.Edit;
      ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
      ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FNum').Value/ADODataSet1.FieldByName('FQuote').Value)*100;
      ADODataSet1.Post;
    end else
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
      ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
      ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
      ADODataSet1.FieldByName('FQuote').Value:=0;
      ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
      ADODataSet1.FieldByName('FPercent').Value:=0;
      ADODataSet1.Post;
    end;
    ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FNum').Value;
    ADOQuery1.Next;
  end;

  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    if ADODataSet1.FieldByName('FOrder').AsInteger=0 then
      ADODataSet1.FieldByName('FPercent').Value:=0
    else
      ADODataSet1.FieldByName('FPercent').Value:=ADODataSet1.FieldByName('FQuote').AsInteger/ADODataSet1.FieldByName('FOrder').AsInteger;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
end;

procedure TOrd420_01Form.ByArea(AFromDate, AToDate: TDateTime);
begin
  //报价单数量统计        按报价日期来统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select O120_001 as FNo,O120_002 as FName,O120_003 as FParent,count(*) as FNum');
  ADOQuery1.SQL.Add('from ORD500A,ORD500B,ORD150,ORD120');
  ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500A_017=O150_001 and O150_011=O120_001 and');
  ADOQuery1.SQL.Add('  O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by O120_001,O120_002,O120_003');
  ADOQuery1.SQL.Add('order by O120_001');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
    ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
    ADODataSet1.FieldByName('FQuote').Value:=ADOQuery1.FieldByName('FNum').Value;
    ADODataSet1.FieldByName('FOrder').Value:=0;
    ADODataSet1.FieldByName('FPercent').Value:=0;
    ADODataSet1.Post;
    ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FNum').Value;
    ADOQuery1.Next;
  end;
  //定单數量統計     按销售日期来统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select O120_001 as FNo,O120_002 as FName,O120_003 as FParent,count(*) as FNum');
  ADOQuery1.SQL.Add('from ORD510A,ORD510B,ORD150,ORD120');
  ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510A_017=O150_001 and O150_011=O120_001 and');
  ADOQuery1.SQL.Add('  O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by O120_001,O120_002,O120_003');
  ADOQuery1.SQL.Add('order by O120_001');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('FNo').Value,[]) then
    begin
      ADODataSet1.Edit;
      ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
      ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FNum').Value/ADODataSet1.FieldByName('FQuote').Value)*100;
      ADODataSet1.Post;
    end else
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
      ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
      ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
      ADODataSet1.FieldByName('FQuote').Value:=0;
      ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
      ADODataSet1.FieldByName('FPercent').Value:=0;
      ADODataSet1.Post;
    end;
    ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FNum').Value;
    ADOQuery1.Next;
  end;

  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    if ADODataSet1.FieldByName('FOrder').AsInteger=0 then
      ADODataSet1.FieldByName('FPercent').Value:=0
    else
      ADODataSet1.FieldByName('FPercent').Value:=ADODataSet1.FieldByName('FQuote').AsInteger/ADODataSet1.FieldByName('FOrder').AsInteger;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
end;

procedure TOrd420_01Form.sbSearchClick(Sender: TObject);
begin
  inherited;
//查询
  if (edtFromDate.Text='') or (edtToDate.Text='') then
  begin
    ShowMsg('UMS10000319');  //起止日期不可为空
    if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
    Abort;
  end;
  if edtFromDate.Date>edtToDate.Date then
  begin
    ShowMsg('UMS10000320');  //结束日期不能小于起始日期
    edtToDate.SetFocus;
    Abort;
  end;
  Screen.Cursor:=crHourGlass;
  if Assigned(SYSDM.wwFilterDialog1.Form) then SYSDM.wwFilterDialog1.ClearFilter;
  ABusy:=True;
  ATotal[1]:=0;
  ATotal[2]:=0;
  ADODataSet1.DisableControls;
  ADODataSet1.Close;
  ADODataSet1.CreateDataSet;
  case cbType.ItemIndex of
    0:ByCustomer(edtFromDate.Date,edtToDate.Date);       //按客户
    1:ByCustomerClass(edtFromDate.Date,edtToDate.Date);  //按客户类别
    2:ByItem(edtFromDate.Date,edtToDate.Date);           //按产品
    3:ByItemClass(edtFromDate.Date,edtToDate.Date);      //按产品类别
    4:BySeller(edtFromDate.Date,edtToDate.Date);         //按销售员
    5:ByArea(edtFromDate.Date,edtToDate.Date);           //按地区
  end;
  ADODataSet1.EnableControls;
  ADODataSet1AfterScroll(ADODataSet1);
  Screen.Cursor:=crDefault;
end;

procedure TOrd420_01Form.ReportGetValue(const ParName: String; var ParValue: Variant);
var
  AValue,AValue1,AValue2:Double;
begin
  inherited;
  if ParName='ADate' then ParValue:=lblDate.Caption  //起止日期
  else if ParName='AFromDate' then ParValue:=edtFromDate.Text  //
  else if ParName='AToDate' then ParValue:=edtToDate.Text  //
  else if ParName='AType' then ParValue:=lblType.Caption  //类型
  else if ParName='ATypeValue' then ParValue:=cbType.Text  //
  else if ParName='FName' then ParValue:=ADODataSet1FName.DisplayLabel  //名称
  else if ParName='FQuote' then ParValue:=ADODataSet1FQuote.DisplayLabel  //服务总数
  else if ParName='FOrder' then ParValue:=ADODataSet1FOrder.DisplayLabel  //已完成数
  else if ParName='FPercent' then ParValue:=ADODataSet1FPercent.DisplayLabel  //完工比率

  else if ParName='FSum' then ParValue:=GetDBString('TAS40001012')  //合计
  else if ParName='FSum1' then
  begin
    AValue:=dxDBTreeList1.ColumnByFieldName('FQuote').SummaryFooterValue;
    if cbType.ItemIndex=0 then AValue:=AValue/2;
    ParValue:=FormatFloat(',0.00',AValue);
  end
  else if ParName='FSum2' then
  begin
    AValue:=dxDBTreeList1.ColumnByFieldName('FOrder').SummaryFooterValue;
    if cbType.ItemIndex=0 then AValue:=AValue/2;
    ParValue:=FormatFloat(',0.00',AValue);
  end
  else if ParName='FSum3' then
  begin
    AValue1:=dxDBTreeList1.ColumnByFieldName('FQuote').SummaryFooterValue;
    AValue2:=dxDBTreeList1.ColumnByFieldName('FOrder').SummaryFooterValue;
    if cbType.ItemIndex=0 then
    begin
      AValue1:=AValue1/2;
      AValue2:=AValue2/2;
    end;
    if AValue1=0 then AValue:=0 else AValue:=(AValue2/AValue1)*100;
    ParValue:=FormatFloat(',0.00%',AValue);
  end
end;

procedure TOrd420_01Form.ActPrintExecute(Sender: TObject);
var
  AfrReport:TfrReport;
begin
  //inherited;
  AfrReport:=TfrReport.Create(nil);
  try
    ABusy:=True;
    PreparedReport(ADODataSet1,AReportName,AfrReport);
    SYSDM.frDBDataSet1.DataSet:=ADODataSet1;
    ADODataSet1.DisableControls;
    SYSDM.frReport2.OnGetValue:=ReportGetValue;
    SYSDM.frReport2.ShowPreparedReport;
    SYSDM.frReport2.ShowReport;
    ADODataSet1.EnableControls;
  finally
    ABusy:=False;
    ADODataSet1.EnableControls;
    SYSDM.frReport2.Clear;
//    AfrReport.Free;
  end;
end;

procedure TOrd420_01Form.RefreshEvent;
begin
  inherited;
  sbSearch.Click;
end;

initialization
  RegisterClass(TOrd420_01Form);

finalization
  UnRegisterClass(TOrd420_01Form);

end.

⌨️ 快捷键说明

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