D7wmguihua/样品/U_SGManage.pas
DESKTOP-E401PHE\Administrator b4b5840f18 1
2025-01-18 16:22:10 +08:00

540 lines
15 KiB
ObjectPascal
Raw 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_SGManage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin,
StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP,ShellAPI,IniFiles, cxCheckBox, cxCalendar,
cxButtonEdit, cxTextEdit;
type
TfrmSGManage = class(TForm)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBAdd: TToolButton;
TBDel: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
cxGridPopupMenu1: TcxGridPopupMenu;
Tv1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
Panel1: TPanel;
ToolButton2: TToolButton;
TBEdit: TToolButton;
Label1: TLabel;
YCLSpec: TEdit;
v1Column1: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1Column3: TcxGridDBColumn;
v1Column4: TcxGridDBColumn;
v1Column5: TcxGridDBColumn;
v1Column6: TcxGridDBColumn;
v1Column7: TcxGridDBColumn;
v1Column8: TcxGridDBColumn;
DataSource2: TDataSource;
ADOQueryMain: TADOQuery;
CDS_Main: TClientDataSet;
v1Column12: TcxGridDBColumn;
ToolButton1: TToolButton;
ToolButton4: TToolButton;
RM1: TRMGridReport;
RMDB_Main: TRMDBDataSet;
v1Column15: TcxGridDBColumn;
Label3: TLabel;
YCLName: TEdit;
Panel2: TPanel;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
cxGridDBColumn1: TcxGridDBColumn;
cxGridDBColumn2: TcxGridDBColumn;
cxGridDBColumn3: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
cxGridDBColumn5: TcxGridDBColumn;
cxGridDBColumn6: TcxGridDBColumn;
cxGridDBColumn7: TcxGridDBColumn;
cxGridDBColumn8: TcxGridDBColumn;
cxGridDBColumn9: TcxGridDBColumn;
cxGridDBColumn10: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
Button1: TButton;
Button2: TButton;
Label2: TLabel;
Label6: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_HZ: TDataSource;
CDS_HZ: TClientDataSet;
Label4: TLabel;
YCLType: TEdit;
v1Column9: TcxGridDBColumn;
v1Column10: TcxGridDBColumn;
v1Column11: TcxGridDBColumn;
v1Column13: TcxGridDBColumn;
v1Column14: TcxGridDBColumn;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBAddClick(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure TBEditClick(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure YCLNameChange(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView;
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure cxGridDBColumn2PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure cxGridDBColumn8PropertiesEditValueChanged(Sender: TObject);
procedure cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject);
private
{ Private declarations }
procedure InitGrid();
procedure InitGridHZ();
function SaveData():Boolean;
public
{ Public declarations }
end;
var
frmSGManage: TfrmSGManage;
implementation
uses
U_DataLink,U_Fun,U_SGInput,U_FileUp, U_ZDYHelp;
{$R *.dfm}
procedure TfrmSGManage.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered:=False;
Close;
SQL.Clear;
sql.Add('select AA.*,Case when XDQty>0 then cast(1 as bit) else cast(0 as bit) end as YXD ');
sql.Add(',Case when JHQty>0 then cast(1 as bit) else cast(0 as bit) end as YJH ');
SQL.Add('from(select A.*,XDQty=(select isnull(sum(isnull(OrdQty,0)),0) from YCL_SG_HZ where MainId=A.MainId )');
SQL.Add(',JHQty=(select isnull(sum(isnull(SJQty,0)),0) from YCL_SG_HZ where MainId=A.MainId )');
sql.Add('from YCL_SG A where A.SGDate>=:begdate and A.SGDate<:Enddate) AA');
Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',begdate.DateTime));
Parameters.ParamByName('Enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',Enddate.DateTime+1));
Open;
end;
SCreateCDS20(ADOQueryMain,CDS_Main);
SInitCDSData20(ADOQueryMain,CDS_Main);
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmSGManage.InitGridHZ();
begin
try
ADOQueryTemp.DisableControls;
with ADOQueryTemp do
begin
Filtered:=False;
Close;
SQL.Clear;
SQL.Add('select * from YCL_SG_HZ where MainId='''+Trim(CDS_Main.fieldbyname('MainId').AsString)+'''');
Open;
end;
SCreateCDS20(ADOQueryTemp,CDS_HZ);
SInitCDSData20(ADOQueryTemp,CDS_HZ);
finally
ADOQueryTemp.EnableControls;
end;
end;
procedure TfrmSGManage.FormDestroy(Sender: TObject);
begin
frmSGManage:=nil;
end;
procedure TfrmSGManage.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfrmSGManage.TBCloseClick(Sender: TObject);
begin
WriteCxGrid('<27><EFBFBD>б<EFBFBD>',Tv1,'<27><EFBFBD><EAB9BA><EFBFBD><EFBFBD>');
WriteCxGrid('<27><EFBFBD><EAB9BA>ִ',Tv2,'<27><EFBFBD><EAB9BA><EFBFBD><EFBFBD>');
Close;
end;
procedure TfrmSGManage.TBDelClick(Sender: TObject);
begin
if CDS_Main.IsEmpty then Exit;
if CDS_HZ.IsEmpty=False then
begin
Application.MessageBox('<27><><EFBFBD>л<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ',0);
Exit;
end;
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>ʾ',32+4)<>IDYES then Exit;
if Trim(CDS_Main.fieldbyname('MainID').AsString)<>'' then
begin
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('delete YCL_SG where MainID='''+Trim(CDS_Main.fieldbyname('MainID').AsString)+'''');
ExecSQL;
end;
end;
CDS_Main.Delete;
end;
procedure TfrmSGManage.FormShow(Sender: TObject);
begin
ReadCxGrid('<27><EFBFBD>б<EFBFBD>',Tv1,'<27><EFBFBD><EAB9BA><EFBFBD><EFBFBD>');
ReadCxGrid('<27><EFBFBD><EAB9BA>ִ',Tv2,'<27><EFBFBD><EAB9BA><EFBFBD><EFBFBD>');
Enddate.DateTime:=SGetServerDate(ADOQueryTemp);
begdate.DateTime:=Enddate.DateTime-7;
InitGrid();
if Trim(DParameters1)='<27>깺' then
begin
Button1.Visible:=False;
Button2.Visible:=False;
Tv2.OptionsSelection.CellSelect:=False;
end;
if Trim(DParameters1)='<27><>ִ' then
begin
TBAdd.Visible:=False;
TBDel.Visible:=False;
TBEdit.Visible:=False;
end;
end;
procedure TfrmSGManage.TBAddClick(Sender: TObject);
begin
try
frmSGInput:=TfrmSGInput.Create(Application);
with frmSGInput do
begin
FMainId:='';
if ShowModal=1 then
begin
Self.InitGrid();
end;
end;
finally
frmSGInput.Free;
end;
end;
procedure TfrmSGManage.TBRafreshClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmSGManage.TBEditClick(Sender: TObject);
begin
if CDS_HZ.IsEmpty=False then
begin
Application.MessageBox('<27><><EFBFBD>л<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ',0);
Exit;
end;
try
frmSGInput:=TfrmSGInput.Create(Application);
with frmSGInput do
begin
FMainId:=Trim(Self.CDS_Main.fieldbyname('MainID').AsString);
if ShowModal=1 then
begin
Self.InitGrid();
Self.CDS_Main.Locate('MainID',FMainId,[]);
end;
end;
finally
frmSGInput.Free;
end;
end;
procedure TfrmSGManage.ToolButton2Click(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 TfrmSGManage.YCLNameChange(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmSGManage.ToolButton1Click(Sender: TObject);
begin
if CDS_Main.IsEmpty then Exit;
TcxGridToExcel('<27><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>',cxGrid1);
end;
procedure TfrmSGManage.ToolButton4Click(Sender: TObject);
var
fPrintFile:string;
begin
if CDS_Main.IsEmpty then Exit;
fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\<5C><>Ʒ<EFBFBD><C6B7>ǩ.rmf' ;
if FileExists(fPrintFile) then
begin
RM1.LoadFromFile(fPrintFile);
RM1.ShowReport;
end else
begin
Application.MessageBox(PChar(<><C3BB><EFBFBD><EFBFBD>'+ExtractFilePath(Application.ExeName)+'Report\<5C><>Ʒ<EFBFBD><C6B7>ǩ.rmf'),'<27><>ʾ',0);
end;
end;
procedure TfrmSGManage.Tv1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
InitGridHZ();
end;
procedure TfrmSGManage.Button1Click(Sender: TObject);
begin
if CDS_Main.IsEmpty then Exit;
CDS_HZ.Append;
CDS_HZ.FieldByName('JBDate').Value:=SGetServerDate(ADOQueryTemp);
CDS_HZ.FieldByName('CGPerson').Value:=Trim(DName);
CDS_HZ.FieldByName('YCLName').Value:=Trim(CDS_Main.fieldbyname('YCLName').AsString);
CDS_HZ.FieldByName('YCLCode').Value:=Trim(CDS_Main.fieldbyname('YCLCode').AsString);
CDS_HZ.FieldByName('SGUnit').Value:=Trim(CDS_Main.fieldbyname('SGUnit').AsString);
CDS_HZ.FieldByName('YCLSpec').Value:=Trim(CDS_Main.fieldbyname('YCLSpec').AsString);
CDS_HZ.FieldByName('YCLTypeCode').Value:=Trim(CDS_Main.fieldbyname('YCLTypeCode').AsString);
CDS_HZ.Post;
SaveData();
end;
procedure TfrmSGManage.Button2Click(Sender: TObject);
begin
if CDS_HZ.IsEmpty then Exit;
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>ʾ',32+4)<>IDYES then Exit;
if Trim(CDS_HZ.fieldbyname('SubID').AsString)<>'' then
begin
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('delete YCL_SG_HZ where SubID='''+Trim(CDS_HZ.fieldbyname('SubID').AsString)+'''');
ExecSQL;
end;
end;
CDS_HZ.Delete;
if CDS_HZ.IsEmpty then
begin
with CDS_Main do
begin
Edit;
FieldByName('YXD').Value:=false;
FieldByName('YJH').Value:=false;
FieldByName('XDQty').Value:=0;
FieldByName('JHQty').Value:=0;
Post;
end;
end else
begin
with CDS_Main do
begin
Edit;
FieldByName('XDQty').Value:=Tv2.DataController.Summary.FooterSummaryValues[0];
FieldByName('JHQty').Value:=Tv2.DataController.Summary.FooterSummaryValues[1];
if Tv2.DataController.Summary.FooterSummaryValues[1]>0 then
begin
FieldByName('YJH').Value:=True;
end else
begin
FieldByName('YJH').Value:=False;
end;
Post;
end;
end;
end;
procedure TfrmSGManage.cxGridDBColumn2PropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp:=TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag:='GYS';
flagname:='<27><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
if ShowModal=1 then
begin
Self.CDS_HZ.Edit;
Self.CDS_HZ.FieldByName('GYSCode').Value:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
Self.CDS_HZ.FieldByName('GYS').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('UPdate YCL_SG_HZ ');
sql.Add(' Set GYS='''+Trim(ClientDataSet1.fieldbyname('ZDYName').AsString)+'''');
sql.Add(' ,GYSCode='''+Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString)+'''');
SQL.Add(',Editer='''+Trim(DName)+'''');
SQL.Add(',Edittime=getdate() ');
SQL.Add(' where SubId='''+Trim(CDS_HZ.fieldbyname('SubId').AsString)+'''');
ExecSQL;
end;
end;
end;
finally
frmZDYHelp.Free;
end;
end;
function TfrmSGManage.SaveData():Boolean;
var
maxId:String;
begin
try
ADOQueryCmd.Connection.BeginTrans;
if GetLSNo(ADOQueryCmd,maxId,'HZ','YCL_SG_HZ',4,1)=False then
begin
Result:=False;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ',0);
Exit;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('select * from YCL_SG_HZ where 1<>1');
Open;
end;
with ADOQueryCmd do
begin
Append;
FieldByName('MainId').Value:=Trim(CDS_Main.fieldbyname('MainId').AsString);
FieldByName('SubId').Value:=Trim(maxId);
SSetSaveDataCDSNew(ADOQueryCmd,Tv2,CDS_HZ,'YCL_SG_HZ',3);
FieldByName('Filler').Value:=Trim(DName);
FieldByName('YCLTypeCode').Value:=Trim(CDS_HZ.fieldbyname('YCLTypeCode').AsString);
FieldByName('YCLCode').Value:=Trim(CDS_HZ.fieldbyname('YCLCode').AsString);
Post;
end;
with CDS_HZ do
begin
Edit;
FieldByName('SubId').Value:=Trim(maxId);
end;
ADOQueryCmd.Connection.CommitTrans;
Result:=True;
except
Result:=True;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!','<27><>ʾ',0);
end;
end;
procedure TfrmSGManage.cxGridDBColumn8PropertiesEditValueChanged(
Sender: TObject);
var
mvalue,FFieldName:String;
begin
mvalue:=TcxTextEdit(Sender).EditingText;
FFieldName:=Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_HZ do
begin
Edit;
FieldByName(FFieldName).Value:=Trim(mvalue);
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('UPdate YCL_SG_HZ ');
if Trim(mvalue)<>'' then
begin
sql.Add(' Set '+FFieldName+'='''+Trim(mvalue)+'''');
end else
begin
sql.Add(' Set '+FFieldName+'=NULL');
end;
SQL.Add(',Editer='''+Trim(DName)+'''');
SQL.Add(',Edittime=getdate() ');
SQL.Add(' where SubId='''+Trim(CDS_HZ.fieldbyname('SubId').AsString)+'''');
ExecSQL;
end;
end;
procedure TfrmSGManage.cxGridDBColumn5PropertiesEditValueChanged(
Sender: TObject);
var
mvalue,FFieldName:String;
begin
mvalue:=TcxTextEdit(Sender).EditingText;
if Trim(mvalue)='' then
begin
mvalue:='0';
end;
FFieldName:=Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_HZ do
begin
Edit;
FieldByName(FFieldName).Value:=Trim(mvalue);
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('UPdate YCL_SG_HZ ');
sql.Add(' Set '+FFieldName+'='+Trim(mvalue));
SQL.Add(',Editer='''+Trim(DName)+'''');
SQL.Add(',Edittime=getdate() ');
SQL.Add(' where SubId='''+Trim(CDS_HZ.fieldbyname('SubId').AsString)+'''');
ExecSQL;
end;
with CDS_Main do
begin
Edit;
FieldByName('XDQty').Value:=Tv2.DataController.Summary.FooterSummaryValues[0];
FieldByName('JHQty').Value:=Tv2.DataController.Summary.FooterSummaryValues[1];
if Tv2.DataController.Summary.FooterSummaryValues[1]>0 then
begin
FieldByName('YJH').Value:=True;
end else
begin
FieldByName('YJH').Value:=False;
end;
if Tv2.DataController.Summary.FooterSummaryValues[0]>0 then
begin
FieldByName('YXD').Value:=True;
end else
begin
FieldByName('YXD').Value:=False;
end;
Post;
end;
end;
end.