unit U_ClothContractList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, DBClient, cxCalendar, cxButtonEdit, cxSplitter, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport; type TfrmClothContractList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBPrint: TToolButton; TBClose: TToolButton; Panel1: TPanel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; Label1: TLabel; Label2: TLabel; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; Label3: TLabel; ConNoM: TEdit; Label5: TLabel; C_CodeNameM: TEdit; TBExport: TToolButton; Order_Main: TClientDataSet; Label4: TLabel; C_Spec: TEdit; ScrollBox1: TScrollBox; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1OrderNo: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1DeliveryDate: TcxGridDBColumn; v1FactoryNo1Name: TcxGridDBColumn; v1PRTSpec: TcxGridDBColumn; v1PRTMF: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1PRTKZ: TcxGridDBColumn; v1ClothUnit: TcxGridDBColumn; v1PRTOrderQty: TcxGridDBColumn; v1OrderUnit: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1PRTUnit: TcxGridDBColumn; v1PRTQty: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v2ComeDate: TcxGridDBColumn; v2BatchNo: TcxGridDBColumn; v2MxQty: TcxGridDBColumn; v2MxNote: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxPRTSpec: TcxGridDBColumn; cxGridDBPRTColor: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton1: TToolButton; ClientDataSet3: TClientDataSet; DataSource2: TDataSource; DataSource3: TDataSource; ClientDataSet2: TClientDataSet; v3Column1: TcxGridDBColumn; ToolButton5: TToolButton; ToolButton6: TToolButton; cxSplitter1: TcxSplitter; cxSplitter2: TcxSplitter; v1Qty1: TcxGridDBColumn; v2Qty1: TcxGridDBColumn; RM1: TRMGridReport; RMDBMain: TRMDBDataSet; RMXLSExport1: TRMXLSExport; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure ConNoMChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure Tv2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Tv3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ToolButton4Click(Sender: TObject); procedure cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure Tv2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure ToolButton5Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); private FInt:Integer; procedure InitGrid(); procedure InitForm(); function DelData():Boolean; { Private declarations } public { Public declarations } end; var frmClothContractList: TfrmClothContractList; implementation uses U_DataLink,U_ClothContractInPut,U_Fun,U_ProductOrderList; {$R *.dfm} procedure TfrmClothContractList.FormDestroy(Sender: TObject); begin frmClothContractList:=nil; end; procedure TfrmClothContractList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmClothContractList.FormCreate(Sender: TObject); begin ScrollBox1.Align:=alClient; //BegDate.DateTime:=SGetServerDateTime(ADOQueryTemp)-7; //EndDate.DateTime:=SGetServerDateTime(ADOQueryTemp); end; procedure TfrmClothContractList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('坯布合同订单列表',Tv1,'指示单管理'); end; procedure TfrmClothContractList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add('exec ClothContract_QryList :MainId,:WSql'); Parameters.ParamByName('WSql').Value:=' and FillTime>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime))+'''' +' and FillTime<'''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.DateTime+1))+''''; Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmClothContractList.InitForm(); begin ReadCxGrid('坯布合同订单列表',Tv1,'指示单管理'); if Trim(DParameters1)='1' then begin TBPrint.Visible:=False; v1Column1.Visible:=False; v1Column1.Hidden:=True; v1PRTUnit.Visible:=False; v1PRTUnit.Hidden:=True; v1PRTQty.Visible:=False; v1PRTQty.Hidden:=True; end else begin v1Column1.Visible:=True; v1Column1.Hidden:=False; v1PRTUnit.Visible:=True; v1PRTUnit.Hidden:=False; v1PRTQty.Visible:=True; v1PRTQty.Hidden:=False; TBPrint.Visible:=True; end; BegDate.DateTime:=SGetServerDate10(ADOQueryTemp)-7; EndDate.DateTime:=SGetServerDate10(ADOQueryTemp); InitGrid(); end; procedure TfrmClothContractList.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active=False then Exit; SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; procedure TfrmClothContractList.TBEditClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmClothContractInPut:=TfrmClothContractInPut.Create(Application); with frmClothContractInPut do begin PState:=1; FMainId:=Trim(Self.Order_Main.fieldbyname('MainId').AsString); if ShowModal=1 then begin end; end; finally frmClothContractInPut.Free; end; end; procedure TfrmClothContractList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; if DelData() then begin //TBRafresh.Click; //TBFind.Click; Order_Main.Delete; end; end; function TfrmClothContractList.DelData():Boolean; begin try Result:=false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Contract_Sub where SubId='''+Trim(Order_Main.fieldbyname('SubId').AsString)+''''); ExecSQL; end; if Trim(Order_Main.fieldbyname('SubId').AsString)='' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Contract_Main where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+''''); ExecSQL; end; end; ADOQueryCmd.Connection.CommitTrans; Result:=True; except ADOQueryCmd.Connection.RollbackTrans; Result:=False; Application.MessageBox('数据删除异常!','提示',0); end; end; procedure TfrmClothContractList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel('坯布合同订单列表',cxGrid1); end; procedure TfrmClothContractList.TBPrintClick(Sender: TObject); var fPrintFile,FConNoM:string; begin if Order_Main.IsEmpty then Exit; fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\坯布订购合同.rmf' ; FConNoM:=Trim(Order_Main.fieldbyname('ConNoM').AsString); SDofilter(ADOQueryMain,' ConNoM='''+Trim(Order_Main.fieldbyname('ConNoM').AsString)+''''); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); if FileExists(fPrintFile) then begin //RMVariables['begindate']:=begindate.DateTime; //RMVariables['enddate']:=enddate.DateTime; //RMVariables['printtime']:=Now; //RMVariables['printer']:=Trim(gUserName); RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\坯布订购合同.rmf'),'提示',0); end; SDofilter(ADOQueryMain,''); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); Order_Main.Locate('ConNoM',FConNoM,[]); //SelPrintData(TV4,ADOQueryMain,'合同查询报表'); end; procedure TfrmClothContractList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmClothContractList.TBAddClick(Sender: TObject); begin try frmClothContractInPut:=TfrmClothContractInPut.Create(Application); with frmClothContractInPut do begin PState:=0; FMainId:=''; if ShowModal=1 then begin end; end; finally frmClothContractInPut.Free; end; end; procedure TfrmClothContractList.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active=False then Exit; SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; procedure TfrmClothContractList.FormShow(Sender: TObject); begin InitForm(); end; procedure TfrmClothContractList.ToolButton2Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if FInt=2 then begin ClientDataSet2.Append; ClientDataSet2.Post; end else if FInt=3 then begin ClientDataSet3.Append; ClientDataSet3.Post; end; end; procedure TfrmClothContractList.Tv1FocusedRecordChanged( Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin with ADOQueryTemp do begin Close; sql.Clear; SQL.Add('select * from Contract_Sub_Mx where SubId='''+Trim(Order_Main.fieldbyname('SubId').AsString)+''''); Open; end; SCreateCDS20(ADOQueryTemp,ClientDataSet2); SInitCDSData20(ADOQueryTemp,ClientDataSet2); with ADOQueryTemp do begin Close; sql.Clear; SQL.Add('select A.*,B.PRTSpec,B.PRTColor,C.PRTCodeName,C.OrderNo from Contract_Sub_MxTo A inner join Order_Sub B on A.OrdSubId=B.SubId'); SQL.Add(' inner join Order_Main C on C.MainId=B.MainId '); sql.Add('where A.MxId='''+Trim(ClientDataSet2.fieldbyname('MxId').AsString)+''''); Open; end; SCreateCDS20(ADOQueryTemp,ClientDataSet3); SInitCDSData20(ADOQueryTemp,ClientDataSet3); end; procedure TfrmClothContractList.Tv2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FInt:=2; end; procedure TfrmClothContractList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FInt:=1; end; procedure TfrmClothContractList.Tv3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FInt:=3; end; procedure TfrmClothContractList.ToolButton4Click(Sender: TObject); var maxno:string; begin if ClientDataSet2.IsEmpty then Exit; if ClientDataSet2.Locate('ComeDate',null,[]) then begin Application.MessageBox('到货日期不能为空!','提示',0); Exit; end; if ClientDataSet2.Locate('BatchNo',null,[]) then begin Application.MessageBox('批号不能为空!','提示',0); Exit; end; if ClientDataSet2.Locate('MxQty',null,[]) then begin Application.MessageBox('到货数量不能为空!','提示',0); Exit; end; BegDate.SetFocus; try ADOQueryCmd.Connection.BeginTrans; //保存明细表 with ClientDataSet2 do begin First; while not eof do begin if Trim(ClientDataSet2.fieldbyname('MXId').AsString)='' then begin if GetLSNo(ADOQueryCmd,maxno,'MX','Contract_Sub_Mx',4,1)=False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取明细流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(ClientDataSet2.fieldbyname('MXId').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from Contract_Sub_Mx where MxId='''+Trim(ClientDataSet2.fieldbyname('MXId').AsString)+''''); Open; end; with ADOQueryCmd do begin if Trim(ClientDataSet2.fieldbyname('MXId').AsString)='' then Append else Edit; FieldByName('MxId').Value:=Trim(maxno); FieldByName('SubId').Value:=Trim(Order_Main.fieldbyname('SubId').AsString); SSetSaveDataCDSNew(ADOQueryCmd,Tv2,ClientDataSet2,'Contract_Sub_Mx',0); Post; end; with ClientDataSet2 do begin Edit; FieldByName('MxId').Value:=Trim(maxno); Post; end; Next; end; end; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('确定成功!','提示',0); except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('确定异常!','提示',0); end; end; procedure TfrmClothContractList.cxGridDBColumn1PropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin try frmProductOrderList:=TfrmProductOrderList.Create(Application); with frmProductOrderList do begin FFInt:=1; frmProductOrderList.TBAdd.Visible:=False; frmProductOrderList.TBEdit.Visible:=False; frmProductOrderList.TBDel.Visible:=False; frmProductOrderList.TBExport.Visible:=False; frmProductOrderList.TBPrint.Visible:=False; frmProductOrderList.TBTP.Visible:=False; frmProductOrderList.cxGrid2.Visible:=False; if ShowModal=1 then begin with ClientDataSet3 do begin Edit; FieldByName('OrdSubId').Value:=Trim(frmProductOrderList.Order_Main.fieldbyname('SubId').AsString); FieldByName('OrderNo').Value:=Trim(frmProductOrderList.Order_Main.fieldbyname('OrderNo').AsString); FieldByName('PRTCodeName').Value:=Trim(frmProductOrderList.Order_Main.fieldbyname('PRTCodeName').AsString); FieldByName('PRTSpec').Value:=Trim(frmProductOrderList.Order_Main.fieldbyname('PRTSpec').AsString); FieldByName('PRTColor').Value:=Trim(frmProductOrderList.Order_Main.fieldbyname('PRTColor').AsString); end; end; end; finally frmProductOrderList.Free; end; end; procedure TfrmClothContractList.Tv2CellClick( Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin with ADOQueryTemp do begin Close; sql.Clear; SQL.Add('select A.*,B.PRTSpec,B.PRTColor,C.PRTCodeName,C.OrderNo from Contract_Sub_MxTo A inner join Order_Sub B on A.OrdSubId=B.SubId'); SQL.Add(' inner join Order_Main C on C.MainId=B.MainId '); sql.Add('where A.MxId='''+Trim(ClientDataSet2.fieldbyname('MxId').AsString)+''''); Open; end; SCreateCDS20(ADOQueryTemp,ClientDataSet3); SInitCDSData20(ADOQueryTemp,ClientDataSet3); end; procedure TfrmClothContractList.ToolButton5Click(Sender: TObject); var maxno:string; begin if ClientDataSet3.IsEmpty then Exit; if ClientDataSet2.IsEmpty then Exit; if Trim(ClientDataSet2.fieldbyname('MXId').AsString)='' then begin Application.MessageBox('到货数量未确定!','提示',0); Exit; end; if ClientDataSet3.Locate('OrderNo',null,[]) then begin Application.MessageBox('指定订单编号不能为空!','提示',0); Exit; end; BegDate.SetFocus; try ADOQueryCmd.Connection.BeginTrans; //保存去向表 with ClientDataSet3 do begin First; while not eof do begin if Trim(ClientDataSet3.fieldbyname('ToId').AsString)='' then begin if GetLSNo(ADOQueryCmd,maxno,'To','Contract_Sub_MxTo',4,1)=False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取去向流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(ClientDataSet3.fieldbyname('ToId').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from Contract_Sub_MxTo where ToId='''+Trim(ClientDataSet3.fieldbyname('ToId').AsString)+''''); Open; end; with ADOQueryCmd do begin if Trim(ClientDataSet3.fieldbyname('ToId').AsString)='' then Append else Edit; FieldByName('MxId').Value:=Trim(ClientDataSet2.fieldbyname('MxId').AsString); FieldByName('ToId').Value:=Trim(maxno); FieldByName('OrdSubId').Value:=Trim(ClientDataSet3.fieldbyname('OrdSubId').AsString); Post; end; with ClientDataSet3 do begin Edit; FieldByName('ToId').Value:=Trim(maxno); Post; end; Next; end; end; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('安排成功!','提示',0); except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('安排异常!','提示',0); end; end; procedure TfrmClothContractList.ToolButton3Click(Sender: TObject); begin if FInt=2 then begin if ClientDataSet2.IsEmpty then Exit; if Trim(ClientDataSet2.fieldbyname('MxId').AsString)<>'' then begin if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Contract_Sub_Mx where MxId='''+Trim(ClientDataSet2.fieldbyname('MxId').AsString)+''''); ExecSQL; end; ClientDataSet2.Delete; end else if FInt=3 then begin if ClientDataSet3.IsEmpty then Exit; if Trim(ClientDataSet3.fieldbyname('ToId').AsString)<>'' then begin if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Contract_Sub_MxTo where ToId='''+Trim(ClientDataSet3.fieldbyname('ToId').AsString)+''''); ExecSQL; end; ClientDataSet3.Delete; end; end; end.