📄 ydstatisticreport0.pas
字号:
unit YDStatisticReport;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WSVoucherBrowse, DB, ActnList, Grids,WSEdit, DBGrids, QLDBGrid,
ComCtrls, ExtCtrls, ToolWin,DateUtils, ADODB, StdCtrls, Buttons, GEdit,
DBCtrls, Menus, WNADOCQuery,TypInfo, CheckLst;
type
TYDStatisticReportForm = class(TWSVoucherBrowseForm)
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
adsMaster: TADODataSet;
Panel2: TPanel;
ADOQuery: TADOQuery;
ADOQuery2: TADOQuery;
Panel3: TPanel;
Panel5: TPanel;
Button3: TButton;
TempAds: TADODataSet;
WNADOCQuery1: TWNADOCQuery;
Button1: TButton;
Panel4: TPanel;
GroupBox3: TGroupBox;
Memo1: TMemo;
Button2: TButton;
Panel6: TPanel;
Button4: TButton;
ExpSttcGroupBox: TGroupBox;
ExpSttcCheckListBox: TCheckListBox;
ExpSttcCkBxPopMenu: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
VipsetPanel: TPanel;
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Button5: TButton;
Button6: TButton;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
procedure UpdateDBGrid;
procedure DBGridTitleClick(Column: TColumn);
procedure DBGridDblClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure adsMasterBeforeOpen(DataSet: TDataSet);
procedure DateTimePicker2Exit(Sender: TObject);
procedure DateTimePicker1Exit(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
WhereStr :string;
public
{ Public declarations }
protected
function CreateEditForm: TWSEditForm; override;
end;
var
YDStatisticReportForm: TYDStatisticReportForm;
implementation
uses CommonDM,QLDBFlt;
{$R *.dfm}
function TYDStatisticReportForm.CreateEditForm: TWSEditForm;
begin
// Result := TSLEdClearBillAForm.Create(Self);
end;
procedure TYDStatisticReportForm.UpdateDBGrid;
var I: Integer;
begin
with DBGrid do
begin
FooterRowCount := 0;
Columns[0].Footer.ValueType := fvtStaticText;
Columns[0].Footer.Value := '合计:';
Columns[0].Footer.Alignment := taCenter;
Columns[0].Title.Alignment:= taCenter;
for I := 0 to Columns.Count - 1 do
begin
Columns[i].Width :=90;
if Pos('日',Columns[I].FieldName)>0 then Columns[i].Width :=70;
if Pos('编',Columns[I].FieldName)>0 then Columns[i].Width :=70;
Columns[i].Title.Alignment:= taCenter;
if Columns[I].Field is TNumericField then
begin
if (not CheckBox1.Checked) and (Pos('数量',Columns[I].FieldName)>0 )
then Columns[I].Visible :=False;
if (not CheckBox2.Checked) and (Pos('单价',Columns[I].FieldName)>0 )
then Columns[I].Visible :=False;
if (not CheckBox3.Checked) and (Pos('金额',Columns[I].FieldName)>0 )
then Columns[I].Visible :=False;
SetStrProp(Fields[I], 'DisplayFormat','#,#.00') ;
if Pos('Price',Columns[I].FieldName)<=0 then
Columns[I].Footer.ValueType := fvtSum;
end;
end;
FooterRowCount := 1;
end;
end;
procedure TYDStatisticReportForm.DBGridTitleClick(Column: TColumn);
begin
inherited;
UpdateDBGrid;
end;
procedure TYDStatisticReportForm.DBGridDblClick(Sender: TObject);
begin
// inherited;
end;
procedure TYDStatisticReportForm.Button3Click(Sender: TObject);
begin
inherited;
WNADOCQuery1.TabName :='TempExpenseList';
WNADOCQuery1.ConnectionString :=CommonData.acnConnection.ConnectionString;
WNADOCQuery1.Execute(False);
if trim(WNADOCQuery1.QueryTerm)<>'' then
WhereStr :=' where ' + trim(WNADOCQuery1.QueryTerm)
else WhereStr :=' Where 1=1 ' ;
Memo1.ReadOnly :=False;
Memo1.Clear;
if ( copy(trim(WNADOCQuery1.QueryTerm),1,3) ='not' ) or
( copy(trim(WNADOCQuery1.QueryTerm),1,3) ='NOT' )then
Memo1.Text :='全部不满足条件: '
+Copy(trim(WNADOCQuery1.ShowTerm.Text),5,length(trim(WNADOCQuery1.ShowTerm.Text))-4 )
else Memo1.Text :=Copy(trim(WNADOCQuery1.ShowTerm.Text),5,length(trim(WNADOCQuery1.ShowTerm.Text))-4);
if WhereStr =' Where 1=1 ' then
begin
Memo1.Clear;
Memo1.Text :='不限制条件!';
end;
Memo1.ReadOnly :=True;
ToolBar.Hint :=' 台帐条件: '+Memo1.Text;
if Button1.Tag=1 then Button1Click(sender)
else Button2Click(sender);
end;
procedure TYDStatisticReportForm.FormShow(Sender: TObject);
var I :integer;
begin
inherited;
ADOQuery.Close;
ADOQuery.SQL.Text :=' IF EXISTS( SELECT * FROM tempdb..sysobjects '
+' WHERE ID = OBJECT_ID('+Quotedstr('tempdb..#ExpenseList')
+' )) DROP TABLE #ExpenseList ' ;
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' select b.Date [日期], '
+' b.Code [编号], '
+' b.BillMode [业务类别], '
+' b.Brief [摘要], '
+' c.name [入库人], '
+' d.name [经手人] , '
+' b.ClearDate [保质日期] , '
+' e.name [仓库名称] , '
+' h.name [商品名称], '
+' a.GoodsSpec [规格型号], '
+' a.Quantity*Isnull(b.ModeDC,1)*Isnull(b.ModeC,1) [包装数量], '
+' f.name [包装单位], '
+' a.PriceBase [移动成本单价], '
+' a.GoalQuantity*Isnull(b.ModeDC,1)*Isnull(b.ModeC,1) [标准数量], '
+' g.name [标准单位], '
+' a.PriceCost [核算成本单价], '
+' a.Amount*Isnull(b.ModeDC,1)*Isnull(b.ModeC,1) [成本金额], '
+' b.memo [备注], '
+' a.memo [附注] '
+' into #ExpenseList '
+' from YDGoodsInDetail a '
+' left outer join YDGoodsInMaster b on b.ID=a.MasterID '
+' left outer join MSEmployee c on c.ID=b.ClientID '
+' left outer join MSEmployee d on d.ID=b.EmployeeID '
+' left outer join STWarehouse e on e.ID=b.WareHouseID '
+' left outer join MSUnit f on f.ID=a.PackUnitID '
+' left outer join MSUnit g on g.ID=a.GoalUnitID '
+' left outer join DAGoods h on h.ID=a.GoodsID '
+' where b.RecordState<>'+ Quotedstr('删除')
+' and a.GoodsID<>0 and a.GoodsID is not null ';
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' if exists (select * from dbo.sysobjects where '
+' id = object_id '
+' (' +Quotedstr('[dbo].[TempExpenseList]')+') and OBJECTPROPERTY(id,'
+Quotedstr('IsUserTable')+' ) = 1) drop table [dbo].[TempExpenseList] ';
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' select top 1 * into TempExpenseList from #ExpenseList' ;
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' select top 1 * from TempExpenseList' ;
ADOQuery.open;
ExpSttcCheckListBox.Columns :=4;
ExpSttcCheckListBox.Items.Clear;
ExpSttcCheckListBox.Hint :='';
WNADOCQuery1.Field.Clear;
for I := 0 to ADOQuery.Fields.Count - 1 do
begin
if not (ADOQuery.Fields[i] is TNumericField) then
ExpSttcCheckListBox.Items.Add(Trim(ADOQuery.Fields[i].FieldName))
else
ExpSttcCheckListBox.Hint :=ExpSttcCheckListBox.Hint
+', sum(isnull('+Trim(ADOQuery.Fields[i].FieldName)+',0)) as ['
+Trim(ADOQuery.Fields[i].FieldName)+'] ';
WNADOCQuery1.Field.Add(Trim(ADOQuery.Fields[i].FieldName));
end;
WhereStr :=' where 1=1 ';
Memo1.Text :='不限制条件!';
end;
procedure TYDStatisticReportForm.Button1Click(Sender: TObject);
begin
Panel6.Visible :=True;
Panel6.Repaint;
Button1.Tag:=1 ;
adsMaster.Close;
adsMaster.CommandText:=' select * from #ExpenseList'+WhereStr ;
// showmessage(adsMaster.CommandText);
adsMaster.open;
Panel6.Visible :=False;
UpdateDBGrid;
DBGrid.hint :='';
end;
procedure TYDStatisticReportForm.FormActivate(Sender: TObject);
begin
inherited;
ADOQuery.Close;
ADOQuery.SQL.Text :='select max(日期) MDate from #ExpenseList ';
ADOQuery.Open;
if ADOQuery.FieldByName('MDate').IsNull then WhereStr :=Datetostr(date)
else WhereStr :=Trim(ADOQuery.fieldbyname('MDate').AsString);
Memo1.ReadOnly :=False;
Memo1.Clear;
Memo1.Text :=' 日期 等于'+ Quotedstr(WhereStr);
Memo1.ReadOnly :=True;
WhereStr :=' where [日期]='+Quotedstr(WhereStr);
Button1Click(sender);
end;
procedure TYDStatisticReportForm.Button2Click(Sender: TObject);
var I :integer;
SelectStr1:String;
begin
inherited;
Panel6.Visible :=True;
Panel6.Repaint;
Button1.Tag:=0;
if Trim(SelectStr) ='' then
begin
ExpSttcCheckListBox.Checked[1] :=true;
ExpSttcCheckListBox.ItemIndex := 1;
ExpSttcCheckListBox.OnClickCheck(ExpSttcCheckListBox);
end;
SelectStr1 :=Trim(SelectStr);
while Pos(',', SelectStr1)=1 do SelectStr1[Pos(',', SelectStr1)] :=' ';
ADOQuery.Close;
ADOQuery.SQL.Text :=' IF EXISTS( SELECT * FROM tempdb..sysobjects '
+' WHERE ID = OBJECT_ID('+Quotedstr('tempdb..#ExpenseListTtl')
+' )) DROP TABLE #ExpenseListTtl ' ;
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text:=' select ' + SelectStr+ ExpSttcCheckListBox.hint
+' into #ExpenseListTtl from #ExpenseList '
+WhereStr +' group by '+SelectStr;
ADOQuery.ExecSQL;
adsMaster.Close;
adsMaster.CommandText:=' select * from #ExpenseListTtl ';
adsMaster.open;
Panel6.Visible :=False;
UpdateDBGrid;
DBGrid.hint :='汇总项目:'+SelectStr;
end;
procedure TYDStatisticReportForm.N1Click(Sender: TObject);
begin
ExpSttcCheckListBox.Sorted :=not ExpSttcCheckListBox.Sorted;
end;
procedure TYDStatisticReportForm.N2Click(Sender: TObject);
var I:integer;
begin
for I := 0 to ExpSttcCheckListBox.Items.Count - 1 do
ExpSttcCheckListBox.Checked[I] :=not ExpSttcCheckListBox.Checked[I];
end;
procedure TYDStatisticReportForm.N3Click(Sender: TObject);
var I:integer;
begin
for I := 0 to ExpSttcCheckListBox.Items.Count - 1 do
ExpSttcCheckListBox.Checked[I] :=True;
end;
procedure TYDStatisticReportForm.N4Click(Sender: TObject);
var I:integer;
begin
for I := 0 to ExpSttcCheckListBox.Items.Count - 1 do
ExpSttcCheckListBox.Checked[I] :=False;
end;
procedure TYDStatisticReportForm.adsMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
adsMaster.IndexFieldNames := '';
end;
procedure TYDStatisticReportForm.DateTimePicker2Exit(Sender: TObject);
begin
inherited;
if DateTimePicker1.Date>DateTimePicker2.Date then
DateTimePicker1.Date :=DateTimePicker2.Date;
end;
procedure TYDStatisticReportForm.DateTimePicker1Exit(Sender: TObject);
begin
inherited;
if DateTimePicker1.Date>DateTimePicker2.Date then
DateTimePicker2.Date :=DateTimePicker1.Date;
end;
procedure TYDStatisticReportForm.Button4Click(Sender: TObject);
var year,month,day:word;
begin
inherited;
Panel2.Enabled :=False;
DBGrid.Enabled :=False;
VipsetPanel.Visible :=True;
VipsetPanel.Repaint;
// DateTimePicker1.Date :=date;
// DateTimePicker2.Date :=EndoftheMonth(date);
DecodeDate(date,year,month,day) ;
DateTimePicker1.Date :=Encodedate(year,month,1);
DateTimePicker2.Date :=date;
end;
procedure TYDStatisticReportForm.Button6Click(Sender: TObject);
begin
inherited;
Panel2.Enabled :=True;
DBGrid.Enabled :=True;
VipsetPanel.Visible :=False;
end;
procedure TYDStatisticReportForm.Button5Click(Sender: TObject);
begin
inherited;
Panel2.Enabled :=True;
DBGrid.Enabled :=True;
VipsetPanel.Visible :=False;
ADOQuery.Close;
ADOQuery.SQL.Text :=' IF EXISTS( SELECT * FROM tempdb..sysobjects '
+' WHERE ID = OBJECT_ID('+Quotedstr('tempdb..#ExpenseList0')
+' )) DROP TABLE #ExpenseList0' ;
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' select * into #ExpenseList0 from #ExpenseList'
+' where [日期] >='+Quotedstr(Datetostr(DateTimePicker1.Date))
+' and [日期] <='+Quotedstr(Datetostr(DateTimePicker2.Date));
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' Insert into #ExpenseList0 '
+' ([日期],[业务类别],[商品名称],[标准数量],[仓库名称],[成本金额] )'
+' select '+Quotedstr(Datetostr(DateTimePicker1.Date-1))
+' as [日期],'+Quotedstr('期初结转')+' as [业务类别],'
+' [商品名称],sum(isnull([标准数量],0)), '
+' sum(isnull([成本金额],0)) '
+' from #ExpenseList '
+' where [日期] <'+Quotedstr(Datetostr(DateTimePicker1.Date))
+' Group by [日期],[业务类别],[商品名称]';
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' IF EXISTS( SELECT * FROM tempdb..sysobjects '
+' WHERE ID = OBJECT_ID('+Quotedstr('tempdb..#ExpenseList')
+' )) DROP TABLE #ExpenseList' ;
ADOQuery.ExecSQL;
ADOQuery.Close;
ADOQuery.SQL.Text :=' select * into #ExpenseList from #ExpenseList0'
+' where [日期] is not null '
+' order by [日期] ' ;
ADOQuery.ExecSQL;
if Button1.Tag=1 then Button1Click(sender)
else Button2Click(sender);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -