D7gmYushang/进度统计查询(Statistics.dll)/U_DHXSTJList.pas
DESKTOP-E401PHE\Administrator 1d94a89439 0
2025-09-24 13:13:14 +08:00

435 lines
13 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_DHXSTJList;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, BtnEdit,
cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, DateUtils;
type
TfrmDHXSTJList = class(TForm)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBFind: TToolButton;
TBExport: TToolButton;
TBClose: TToolButton;
ADOQueryCmd: TADOQuery;
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
DataSource1: TDataSource;
cxGridPopupMenu1: TcxGridPopupMenu;
CDS_Main: TClientDataSet;
RM1: TRMGridReport;
RMDBMain: TRMDBDataSet;
RMXLSExport1: TRMXLSExport;
RMDBHZ: TRMDBDataSet;
CDS_HZ: TClientDataSet;
CDS_PRT: TClientDataSet;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ADOQueryPrint: TADOQuery;
Panel1: TPanel;
Label2: TLabel;
Label3: TLabel;
Label8: TLabel;
BegDate: TDateTimePicker;
EndDate: TDateTimePicker;
SPRTCODE: TEdit;
CustomerNoName: TEdit;
chkdate: TCheckBox;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
Tv1Column1: TcxGridDBColumn;
Tv1Column2: TcxGridDBColumn;
Tv1Column3: TcxGridDBColumn;
Tv1Column4: TcxGridDBColumn;
Tv1Column5: TcxGridDBColumn;
Tv1Column6: TcxGridDBColumn;
Tv1Column7: TcxGridDBColumn;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Tv1Column8: TcxGridDBColumn;
Label1: TLabel;
season: TEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure ConNoMChange(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBExportClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure SPIDKeyPress(Sender: TObject; var Key: Char);
procedure PIHAOChange(Sender: TObject);
procedure FactoryNameChange(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure ToolButton1Click(Sender: TObject);
procedure TBFindClick(Sender: TObject);
procedure SPRTCODEChange(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure chkdateClick(Sender: TObject);
private
procedure SetStatus();
procedure InitGrid();
{ Private declarations }
public
canshu1: string;
{ Public declarations }
end;
var
frmDHXSTJList: TfrmDHXSTJList;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp;
{$R *.dfm}
procedure TfrmDHXSTJList.SetStatus();
begin
end;
procedure TfrmDHXSTJList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmDHXSTJList.FormCreate(Sender: TObject);
begin
EndDate.DateTime := SGetServerDate10(ADOQueryTemp);
BegDate.DateTime := StartOfTheYear(Now);
end;
procedure TfrmDHXSTJList.InitGrid();
begin
if RadioButton1.Checked = True then
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Close;
sql.Clear;
sql.Add('select *,price=ROUND((money/qty),2) from (');
SQL.Add('select SPrtCode,SUM(FHPS)PS,ISNULL(HZUnit,ORDERUNIT)UNIT, qty=(case when ISNULL(HZUnit,ORDERUNIT)=''<27><><EFBFBD><EFBFBD>'' then SUM(FHQTY) else sum(FHMS) end ) ,SUM( ');
SQL.Add('PRICE*(case WHEN ISNULL(HZUnit,ORDERUNIT)=''<27><><EFBFBD><EFBFBD>'' THEN fhqty ELSE FHMS END) )money');
SQL.Add(' from FHSQ_Sub B INNER JOIN FHSQ_Main A ON A.FSID=B.FSID');
SQL.Add('WHERE FHPS>0 and crtype=''<27><><EFBFBD>۳<EFBFBD><DBB3><EFBFBD>'' and SQType=''<27><><EFBFBD><EFBFBD>'' and iSNULL(HZUnit,ORDERUNIT)<>'''' ');
if chkdate.Checked then
begin
sql.Add(' and A.FHDATE>=' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', Begdate.DateTime))));
sql.Add(' and A.FHDATE<' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', EndDate.DateTime + 1))));
end;
SQL.Add('GROUP BY SPrtCode,ISNULL(HZUnit,ORDERUNIT) )AA');
sql.Add('order by [dbo].[getNum](SPrtCode) ');
Open;
end;
SCreateCDS20(ADOQueryMain, CDS_Main);
SInitCDSData20(ADOQueryMain, CDS_Main);
finally
ADOQueryMain.EnableControls;
end;
end
else if RadioButton2.Checked = True then
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Close;
sql.Clear;
sql.Add('select *,price=ROUND((money/qty),2) from (');
SQL.Add('select SPrtCode,CustomerNoName,SUM(FHPS)PS,ISNULL(HZUnit,ORDERUNIT)UNIT, qty=(case when ISNULL(HZUnit,ORDERUNIT)=''<27><><EFBFBD><EFBFBD>'' then SUM(FHQTY) else sum(FHMS) end ) ,SUM( ');
SQL.Add('PRICE*(case WHEN ISNULL(HZUnit,ORDERUNIT)=''<27><><EFBFBD><EFBFBD>'' THEN fhqty ELSE FHMS END) )money');
SQL.Add(' from FHSQ_Sub B INNER JOIN FHSQ_Main A ON A.FSID=B.FSID');
SQL.Add('WHERE FHPS>0 and crtype=''<27><><EFBFBD>۳<EFBFBD><DBB3><EFBFBD>'' and SQType=''<27><><EFBFBD><EFBFBD>'' and iSNULL(HZUnit,ORDERUNIT)<>'''' ');
if chkdate.Checked then
begin
sql.Add(' and A.FHDATE>=' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', Begdate.DateTime))));
sql.Add(' and A.FHDATE<' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', EndDate.DateTime + 1))));
end;
SQL.Add('GROUP BY CustomerNoName,SPrtCode,ISNULL(HZUnit,ORDERUNIT) )AA');
sql.Add('order by [dbo].[getNum](SPrtCode) ');
Open;
end;
SCreateCDS20(ADOQueryMain, CDS_Main);
SInitCDSData20(ADOQueryMain, CDS_Main);
finally
ADOQueryMain.EnableControls;
end;
end
else if RadioButton3.Checked = True then
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Close;
sql.Clear;
sql.Add('select *,price=ROUND((money/qty),2) from (');
SQL.Add('select SPrtCode,CustomerNoName,season,SUM(FHPS)PS,ISNULL(HZUnit,ORDERUNIT)UNIT, qty=(case when ISNULL(HZUnit,ORDERUNIT)=''<27><><EFBFBD><EFBFBD>'' then SUM(FHQTY) else sum(FHMS) end ) ,SUM( ');
SQL.Add('PRICE*(case WHEN ISNULL(HZUnit,ORDERUNIT)=''<27><><EFBFBD><EFBFBD>'' THEN fhqty ELSE FHMS END) )money');
SQL.Add(' from FHSQ_Sub B INNER JOIN FHSQ_Main A ON A.FSID=B.FSID');
SQL.Add('WHERE FHPS>0 and crtype=''<27><><EFBFBD>۳<EFBFBD><DBB3><EFBFBD>'' and SQType=''<27><><EFBFBD><EFBFBD>'' and iSNULL(HZUnit,ORDERUNIT)<>'''' ');
if chkdate.Checked then
begin
sql.Add(' and A.FHDATE>=' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', Begdate.DateTime))));
sql.Add(' and A.FHDATE<' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', EndDate.DateTime + 1))));
end;
SQL.Add('GROUP BY SPrtCode,CustomerNoName,season,ISNULL(HZUnit,ORDERUNIT) )AA');
sql.Add('order by [dbo].[getNum](SPrtCode) ');
Open;
end;
SCreateCDS20(ADOQueryMain, CDS_Main);
SInitCDSData20(ADOQueryMain, CDS_Main);
finally
ADOQueryMain.EnableControls;
end;
end;
end;
procedure TfrmDHXSTJList.TBRafreshClick(Sender: TObject);
begin
BegDate.SetFocus;
InitGrid();
end;
procedure TfrmDHXSTJList.ConNoMChange(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
end;
end;
procedure TfrmDHXSTJList.TBCloseClick(Sender: TObject);
begin
WriteCxGrid(trim(self.Caption), Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>Ʊ<EFBFBD>');
Close;
end;
procedure TfrmDHXSTJList.FormShow(Sender: TObject);
begin
ReadCxGrid(trim(self.Caption), Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>Ʊ<EFBFBD>');
// ReadCxGrid(trim(self.Caption), Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
InitGrid();
end;
procedure TfrmDHXSTJList.TBExportClick(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
exit;
TcxGridToExcel('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>', cxGrid1);
end;
procedure TfrmDHXSTJList.N1Click(Sender: TObject);
begin
SelOKNo(CDS_Main, True);
end;
procedure TfrmDHXSTJList.N2Click(Sender: TObject);
begin
SelOKNo(CDS_Main, False);
end;
procedure TfrmDHXSTJList.SPIDKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
{if Length(Trim(SPID.Text))<4 then Exit;
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered:=False;
Close;
sql.Clear;
sql.Add(' select A.* ');
sql.Add(',ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId)');
//sql.Add(' ,ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId )');
sql.Add(' from CK_SXPB_CR A');
sql.add(' where SPID like :SXID');
Parameters.ParamByName('SXID').Value:='%'+Trim(SXID.Text)+'%';
Open;
//ShowMessage(SQL.Text);
end;
SCreateCDS20(ADOQueryMain,CDS_Main);
SInitCDSData20(ADOQueryMain,CDS_Main);
finally
ADOQueryMain.EnableControls;
end; }
end;
end;
procedure TfrmDHXSTJList.PIHAOChange(Sender: TObject);
begin
TBFind.Click;
end;
procedure TfrmDHXSTJList.FactoryNameChange(Sender: TObject);
begin
TBFind.Click;
end;
procedure TfrmDHXSTJList.FormDestroy(Sender: TObject);
begin
frmDHXSTJList := nil;
end;
procedure TfrmDHXSTJList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
Fsunhao: double;
begin
if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('sunhao').Index] = null then
Exit;
Fsunhao := AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('sunhao').Index];
if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('ZPPS').Index] = null then
Exit;
if (AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('ZPPS').Index]) > 0 then
begin
//<2F><><EFBFBD>ġ<EFBFBD>2% <20><>ɫ<EFBFBD><C9AB> <20><><EFBFBD>ġ<EFBFBD>2% ~ <20><>5% <20><>ɫ<EFBFBD><C9AB> <20><><EFBFBD>Ĵ<EFBFBD><C4B4>ڡ<EFBFBD>5% <20><>ɫ
if Fsunhao < 0 then
Fsunhao := -Fsunhao;
if Fsunhao <= 2 then
ACanvas.Brush.Color := clMoneyGreen;
if (Fsunhao > 2) and (Fsunhao <= 5) then
ACanvas.Brush.Color := $00FFFF80;
if Fsunhao > 5 then
ACanvas.Brush.Color := $008080FF;
end;
end;
procedure TfrmDHXSTJList.ToolButton1Click(Sender: TObject);
begin
if CDS_Main.IsEmpty then
Exit;
try
ADOQueryCmd.Connection.BeginTrans;
CDS_Main.DisableControls;
with CDS_Main do
begin
First;
while not eof do
begin
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add(' exec P_UPdate_LCKJY ''' + Trim(CDS_Main.fieldbyname('SPID').AsString) + '''');
execsql;
end;
CDS_Main.Next;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_Main.EnableControls;
except
ADOQueryCmd.Connection.RollbackTrans;
CDS_Main.EnableControls;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>쳣!', '<27><>ʾ', 0);
end;
InitGrid();
end;
procedure TfrmDHXSTJList.TBFindClick(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS20(ADOQueryMain, CDS_Main);
SInitCDSData20(ADOQueryMain, CDS_Main);
end;
end;
procedure TfrmDHXSTJList.SPRTCODEChange(Sender: TObject);
begin
TBFind.Click();
end;
procedure TfrmDHXSTJList.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked = True then
begin
RadioButton2.Checked := False;
RadioButton3.Checked := False;
Tv1Column7.Visible := False;
Tv1Column7.hidden := True;
Tv1Column8.Visible := False;
Tv1Column8.hidden := True;
season.Text := '';
CustomerNoName.Text := '';
season.Enabled := False;
CustomerNoName.Enabled := False;
end;
InitGrid();
end;
procedure TfrmDHXSTJList.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Checked = True then
begin
RadioButton1.Checked := False;
RadioButton3.Checked := False;
Tv1Column7.Visible := true;
Tv1Column7.hidden := False;
Tv1Column8.Visible := False;
Tv1Column8.hidden := True;
season.Text := '';
season.Enabled := False;
CustomerNoName.Enabled := True;
end;
InitGrid();
end;
procedure TfrmDHXSTJList.RadioButton3Click(Sender: TObject);
begin
if RadioButton3.Checked = True then
begin
RadioButton2.Checked := False;
RadioButton1.Checked := False;
Tv1Column7.Visible := true;
Tv1Column7.hidden := False;
Tv1Column8.Visible := true;
Tv1Column8.hidden := False;
season.Enabled := true;
CustomerNoName.Enabled := True;
end;
InitGrid();
end;
procedure TfrmDHXSTJList.chkdateClick(Sender: TObject);
begin
InitGrid();
end;
end.