📄 ord420_01.pas.svn-base
字号:
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 + -