unit U_JYOrderCDListCL; 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, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, MovePanel, cxTextEdit, cxContainer, cxCurrencyEdit, BtnEdit, RM_e_main, RM_e_htm, RM_e_Graphic, RM_e_Jpeg, RM_e_txt, RM_e_csv, RM_E_llPDF, Math, Clipbrd, cxPC, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinsDefaultPainters, dxSkinValentine, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue, dxSkinscxPCPainter, cxNavigator, ShellAPI, ShlObj, cxGridExportLink; type TfrmJYOrderCDListCL = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; Panel1: TPanel; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; Label3: TLabel; CustomerNoName: TEdit; TBExport: TToolButton; Order_Main: TClientDataSet; conNO: TEdit; Label7: TLabel; Label9: TLabel; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column13: TcxGridDBColumn; Label5: TLabel; MPRTCodeName: TEdit; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; RM2: TRMGridReport; RMDB_Main: TRMDBDataSet; v1Column24: TcxGridDBColumn; MovePanel2: TMovePanel; v1Column14: TcxGridDBColumn; v1Column15: TcxGridDBColumn; JYXH: TEdit; JYCOLOR: TEdit; v1Column31: TcxGridDBColumn; v1Column32: TcxGridDBColumn; v1Column36: TcxGridDBColumn; RMXLSExport1: TRMXLSExport; v1Column16: TcxGridDBColumn; N3: TMenuItem; X1: TMenuItem; cv1Column1: TcxGridDBColumn; btn1: TToolButton; btn2: TToolButton; ADOQueryPrint: TADOQuery; BegDate: TDateTimePicker; EndDate: TDateTimePicker; IsJYTime: TCheckBox; cv1Column2: TcxGridDBColumn; lbl1: TLabel; filler: TEdit; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; Tv1Column8: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; Tv1Column10: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Label17: TLabel; mjtype: TComboBox; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure CustomerNoNameKeyPress(Sender: TObject; var Key: Char); procedure v1Column15PropertiesEditValueChanged(Sender: TObject); procedure MJIDKeyPress(Sender: TObject; var Key: Char); procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure conNOKeyPress(Sender: TObject; var Key: Char); procedure MJStr2Change(Sender: TObject); procedure MJTypeChange(Sender: TObject); procedure KHConNOKeyPress(Sender: TObject; var Key: Char); procedure RKOrdIDKeyPress(Sender: TObject; var Key: Char); procedure N3Click(Sender: TObject); procedure X1Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure btn1Click(Sender: TObject); procedure CustomerNoNameChange(Sender: TObject); procedure conNOChange(Sender: TObject); procedure MPRTCodeNameChange(Sender: TObject); procedure JYCOLORChange(Sender: TObject); procedure JYXHChange(Sender: TObject); procedure btn2Click(Sender: TObject); private DQdate: TDateTime; FLeft, FTop: Integer; CurrentPage, RecordsNumber: Integer; procedure InitGrid(); procedure InitForm(); function Savedata(): Boolean; procedure GetCDSData(); procedure SetStatus(); procedure PrintCKMDG(MRKOrdID: string); { Private declarations } public FFInt: Integer; canshu1: string; { Public declarations } end; implementation uses U_DataLink, U_OrderInPut, U_Fun, U_MJEdit, U_ZDYHelp, U_ProductOrderListSel, U_SysLogHelp; {$R *.dfm} procedure ExportGridToExcelAndOpen(Grid: TcxGrid); var SaveDialog: TSaveDialog; FileName: string; begin // 创建保存对话框 SaveDialog := TSaveDialog.Create(nil); try SaveDialog.Filter := 'Excel Files (*.xlsx)|*.xlsx|All Files (*.*)|*.*'; SaveDialog.DefaultExt := 'xlsx'; SaveDialog.Title := '打卷产量统计'; if SaveDialog.Execute then begin FileName := SaveDialog.FileName; // 确保文件扩展名正确 if ExtractFileExt(FileName) = '' then FileName := FileName + '.xlsx'; // 导出网格数据到 Excel ExportGridToXLSX(FileName, Grid, True, True, True); // 检查文件是否成功创建 if FileExists(FileName) then begin // 使用默认程序打开 Excel 文件 ShellExecute(0, 'open', PChar(FileName), nil, nil, SW_SHOWNORMAL); end else ShowMessage('Error: Excel file not created'); end; finally SaveDialog.Free; end; end; procedure TfrmJYOrderCDListCL.SetStatus(); begin // TBManage.Visible := False; // TBZF.Visible := False; // v1Column15.Options.Focusing := False; // ToolButton1.Visible := False; // TBSH.Visible := False; // TBHH.Visible := False; // if Trim(canshu1) = '管理' then // begin // TBManage.Visible := True; // TBZF.Visible := True; // v1Column15.Options.Focusing := True; // ToolButton1.Visible := true; // end; // if Trim(canshu1) = '次品管理' then // begin // TBSH.Visible := True; // TBHH.Visible := True; // end; // case cxTabControl1.TabIndex of // 0: // begin // ToolButton8.Visible := true; // ToolButton4.Visible := false; // end; // 1: // begin // ToolButton8.Visible := false; // ToolButton4.Visible := true; // end; // 2: // begin // ToolButton8.Visible := false; // ToolButton4.Visible := true; // end; // end; end; procedure TfrmJYOrderCDListCL.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmJYOrderCDListCL.FormCreate(Sender: TObject); begin cxgrid1.Align := alClient; DQdate := SGetServerDate(ADOQueryTemp); end; procedure TfrmJYOrderCDListCL.TBCloseClick(Sender: TObject); begin WriteCxGrid('检验报告JF', Tv1, '检验管理'); Close; end; procedure TfrmJYOrderCDListCL.PrintCKMDG(MRKOrdID: string); begin end; procedure TfrmJYOrderCDListCL.InitGrid(); var fwhere: string; begin if IsJYTime.Checked then begin fwhere := ' where convert(varchar(10),C.filltime,120)>=' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)); fwhere := fwhere + ' and convert(varchar(10),C.filltime,120)<' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)); end; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; //isnull(zkoumi,0) sql.Add('select mjtype,gongyi,sum(ZKOUMI)ZKOUMI,JTType,filltime=convert(varchar(10),C.filltime ,120),A.MPRTCodeName,A.ConNo,A.CustomerNoName,JYColor,JYXH,c.filler,apid '); sql.Add(',PS=COUNT(c.SubId),MJQty4=sum( c.MJQty4 ),MJQty3=sum( c.MJQty3 ),mjmaoz=sum(mjmaoz),sum(MJLen )mjlen,round(SUM(MJLen/0.9144),2)yardage '); SQL.ADD(',KMCD=( SUM(CASE WHEN MJTYPE=''次品'' then 0 else MJLen end ) ) '); SQL.Add(',koufenqty=(case when MJType=''次品'' then 0 else SUM(ZKOUMI) end ) '); SQL.Add(',koufenyardage=round(SUM(ZKOUMI)/0.9144,2)'); SQL.ADD(',MJLEN1= SUM( MJLEN+ISNULL(C.ZKOUMI,0))'); sql.Add('from JYOrder_Main A inner join JYOrder_Sub B on A.MainId=B.MAINID inner join WFB_MJJY c '); SQL.Add('on b.SubId=c.SubId' + fwhere); sql.Add(' GROUP BY MJTYPE,gongyi,JTType,apid,MPRTCodeName,ConNo,CustomerNoName,JYColor,JYXH,c.filler,convert(varchar(10),C.filltime,120)'); // SQL.ADD('GROUP BY ISPRINT,gongyi,A.FILLER,conno,APID,OrderNo,RKOrdID,MPRTCodeName,JYCOLOR,KKMF,KKKZ,CustomerNoName,MJType,JYXH,MJTypeOther,mjstr2'); SQL.ADD('ORDER BY convert(varchar(10),C.filltime,120) '); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); // LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(Order_Main.FieldByName('TotalCount').AsInteger / RecordsNumber)); MovePanel2.Visible := false; finally ADOQueryMain.EnableControls; MovePanel2.Visible := false; end; end; procedure TfrmJYOrderCDListCL.InitForm(); var fsj: string; begin ReadCxGrid('检验报告JF', Tv1, '检验汇总管理'); fsj := 'select distinct(Filler) name from WFB_MJJY '; // SInitComBoxBySql(ADOQueryCmd, Filler, False, fsj); // Filler.ItemIndex := Filler.Items.IndexOf(trim(DName)); EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime - 14; //InitGrid(); end; procedure TfrmJYOrderCDListCL.TBFindClick(Sender: TObject); var fsj, fwhere: string; begin end; procedure TfrmJYOrderCDListCL.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; // TcxGridToExcel('打卷产量统计', CXGRID1); //// ShellExecute(0, 'open', '打卷产量统计.xls', nil, nil, SW_SHOWNORMAL); // ShellExecute(0, 'open', 'C:\Reports\GridData.xlsx', nil, nil, SW_SHOWNORMAL); ExportGridToExcelAndOpen(cxGrid1) end; procedure TfrmJYOrderCDListCL.TBRafreshClick(Sender: TObject); begin // OrderNo.SetFocus; InitGrid(); end; procedure TfrmJYOrderCDListCL.FormShow(Sender: TObject); begin CurrentPage := 1; RecordsNumber := 500; InitForm(); SetStatus(); end; procedure TfrmJYOrderCDListCL.Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FLeft := X; FTop := Y; end; procedure TfrmJYOrderCDListCL.N1Click(Sender: TObject); begin SelOKNo(Order_Main, True); end; procedure TfrmJYOrderCDListCL.N2Click(Sender: TObject); begin SelOKNo(Order_Main, False); end; function TfrmJYOrderCDListCL.Savedata(): Boolean; var maxno, LLID: string; HXPS: Integer; HXQty, HXMQty: Double; begin HXPS := 0; HXQty := 0; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select Top 1 * from Contract_Cloth_LL where OrdSubId=''' + Trim(Order_Main.fieldbyname('SubId').AsString) + ''''); sql.Add(' and FirstName=''' + Trim(Order_Main.fieldbyname('AOrddefstr4').AsString) + ''''); Open; end; LLID := Trim(ADOQueryTemp.fieldbyname('LLID').AsString); if Trim(LLID) = '' then begin Result := False; Application.MessageBox('没有相对应的加工厂!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; if GetLSNo(ADOQueryCmd, maxno, 'HX', 'Contract_Cloth_BefChkHX', 2, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取回修最大号失败!', '提示', 0); Exit; end; with Order_Main do begin First; while not Eof do begin if Order_Main.FieldByName('SSel').AsBoolean = True then begin HXPS := HXPS + 1; HXQty := HXQty + Order_Main.FieldByName('MJLen').Value; end; Next; end; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add(''); Open; end; except end; end; procedure TfrmJYOrderCDListCL.CustomerNoNameKeyPress(Sender: TObject; var Key: Char); begin // if Key = #13 then // begin // if Length(OrderNo.Text) < 4 then // Exit; // CurrentPage := 1; // InitGrid(); // end; end; procedure TfrmJYOrderCDListCL.GetCDSData(); begin end; procedure TfrmJYOrderCDListCL.v1Column15PropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin mvalue := TcxTextEdit(Sender).EditingText; with Order_Main do begin Edit; FieldByName('PanDing').Value := Trim(mvalue); Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate WFB_MJJY Set PanDing=''' + Trim(mvalue) + ''''); SQL.Add(' where MJID=''' + Trim(Order_Main.fieldbyname('MJID').AsString) + ''''); ExecSQL; end; end; procedure TfrmJYOrderCDListCL.MJIDKeyPress(Sender: TObject; var Key: Char); begin // if Key = #13 then // begin // if Length(MJID.Text) < 4 then // Exit; // CurrentPage := 1; // InitGrid(); // end; end; procedure TfrmJYOrderCDListCL.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin Clipboard.SetTextBuf(PChar(Trim(Order_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmJYOrderCDListCL.conNOKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmJYOrderCDListCL.MJStr2Change(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmJYOrderCDListCL.MJTypeChange(Sender: TObject); begin btn1.Click; end; procedure TfrmJYOrderCDListCL.KHConNOKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmJYOrderCDListCL.RKOrdIDKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmJYOrderCDListCL.N3Click(Sender: TObject); var SSubId, SGangNo: string; begin with Order_Main do begin SSubId := trim(FieldByName('SubId').AsString); SGangNo := trim(FieldByName('Mjstr4').AsString); Order_Main.DisableControls; first; while not eof do begin if ((SSubId = trim(FieldByName('SubId').AsString)) and (SGangNo = trim(FieldByName('Mjstr4').AsString))) then begin edit; FieldByName('SSel').value := true; end else begin edit; FieldByName('SSel').value := false; end; Next; end; Order_Main.Locate('SubId;Mjstr4', VarArrayOf([SSubId, SGangNo]), []); Order_Main.EnableControls; end; end; procedure TfrmJYOrderCDListCL.X1Click(Sender: TObject); var str, SSubId, SGangNo: string; ZChiShu, DQChiShu: integer; ISSel: boolean; begin ISSel := true; SSubId := trim(Order_Main.FieldByName('SubId').AsString); SGangNo := trim(Order_Main.FieldByName('Mjstr4').AsString); str := ''; if InputQuery('选择', '请输入数字', str) then begin ZChiShu := strtointdef(str, 0); if ZChiShu <= 0 then exit; with Order_Main do begin Order_Main.DisableControls; first; DQChiShu := 0; while not eof do begin if ((SSubId = trim(FieldByName('SubId').AsString)) and (SGangNo = trim(FieldByName('Mjstr4').AsString))) then begin edit; FieldByName('SSel').value := ISSel; DQChiShu := DQChiShu + 1; end else begin edit; FieldByName('SSel').value := false; end; if DQChiShu = ZChiShu then ISSel := false; Next; end; Order_Main.Locate('SubId;Mjstr4', VarArrayOf([SSubId, SGangNo]), []); Order_Main.EnableControls; end; end; end; procedure TfrmJYOrderCDListCL.cxTabControl1Change(Sender: TObject); begin CurrentPage := 1; InitGrid(); SetStatus(); end; procedure TfrmJYOrderCDListCL.btn1Click(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 TfrmJYOrderCDListCL.CustomerNoNameChange(Sender: TObject); begin btn1.Click; end; procedure TfrmJYOrderCDListCL.conNOChange(Sender: TObject); begin btn1.Click; end; procedure TfrmJYOrderCDListCL.MPRTCodeNameChange(Sender: TObject); begin btn1.Click; end; procedure TfrmJYOrderCDListCL.JYCOLORChange(Sender: TObject); begin btn1.Click; end; procedure TfrmJYOrderCDListCL.JYXHChange(Sender: TObject); begin btn1.Click; end; procedure TfrmJYOrderCDListCL.btn2Click(Sender: TObject); var filepath, lbname: string; mBegdate, mEnddate: string; begin // mBegdate := FormatDateTime('yyyy-MM-dd', begdate.Date); // mEnddate := FormatDateTime('yyyy-MM-dd', enddate.Date); if Order_Main.IsEmpty then exit; lbname := '检验信息汇总表'; ExportFtErpFile(Trim(lbname) + '.rmf', ADOQueryTemp); with ADOQueryPrint do begin Close; SQL.Clear; with ADOQueryPrint do begin Close; SQL.Clear; Filtered := False; sql.Add('select A.MPRTCodeName,A.ConNo,A.CustomerNoName,C.MJStr4, '); sql.Add('b.PRTColor,PS=COUNT(c.SubId),MJQty4=sum( c.MJQty4 ) '); sql.Add('from JYOrder_Main A inner join JYOrder_Sub B on A.MainId=B.MAINID inner join '); sql.Add('WFB_MJJY c on b.SubId=c.SubId GROUP BY MPRTCodeName,ConNo,CustomerNoName,PRTColor,MJStr4'); Open; end; Open; end; try filepath := ExtractFilePath(Application.ExeName) + 'report\检验信息汇总表.rmf'; if not FileExists(Pchar(filepath)) then begin application.MessageBox(pchar('文件[' + filepath + ']不存在!'), '提示信息', MB_IConError); exit; end; // RmVariables['begDate'] := FormatDateTime('yyyy-mm-dd', begDate.Date); // RmVariables['enddate'] := FormatDateTime('yyyy-mm-dd', enddate.Date); RMVariables['ZDR'] := trim(DName); RM2.LoadFromFile(filepath); RM2.ShowReport; finally end; end; end.