unit U_TatClothInspHZList; 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, MovePanel, Math, Clipbrd, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxTextEdit, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, U_BaseList, cxPC, System.StrUtils, dxScrollbarAnnotations, cxCurrencyEdit; type TfrmTatClothInspHZList = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DS_1: TDataSource; GPM_1: TcxGridPopupMenu; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; CDS_1: TClientDataSet; begtime: TDateTimePicker; endTime: TDateTimePicker; IsJYTime: TCheckBox; ToolButton4: TToolButton; Label5: TLabel; C_Name: TEdit; PM_1: TPopupMenu; PM11: TMenuItem; N1: TMenuItem; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column22: TcxGridDBColumn; Tv1C_Name: TcxGridDBColumn; Tv1DXMF: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1PCID: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; Tv1Column8: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; Tv1Column10: TcxGridDBColumn; Tv1Column13: TcxGridDBColumn; Tv1Column14: TcxGridDBColumn; Tv1Column17: TcxGridDBColumn; Tv1Column18: TcxGridDBColumn; Tv1Column19: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; Tv1dxmeter: TcxGridDBColumn; Tv1Carno: TcxGridDBColumn; Tv1qgSL: TcxGridDBColumn; Tv1qgMeter: TcxGridDBColumn; Tv1Column20: TcxGridDBColumn; Tv1Column21: TcxGridDBColumn; Tv1Column22: TcxGridDBColumn; Tv1fbJS: TcxGridDBColumn; Tv1fbqty: TcxGridDBColumn; Tv1CIMachNo: TcxGridDBColumn; Tv1BCIOID: TcxGridDBColumn; Label1: TLabel; C_width: TEdit; Label3: TLabel; pcid: TEdit; Label4: TLabel; C_GramWeight: TEdit; Tv1Column15: TcxGridDBColumn; Tv1Column23: TcxGridDBColumn; Tv1YDpf: TcxGridDBColumn; Tv1edpf: TcxGridDBColumn; Tv1xjPF: TcxGridDBColumn; Tv1cspf: TcxGridDBColumn; Tv1fqPF: TcxGridDBColumn; Tv1FBPF: TcxGridDBColumn; 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 orderNoKeyPress(Sender: TObject; var Key: Char); procedure BTNPClick(Sender: TObject); procedure BTLPClick(Sender: TObject); procedure TCBNORChange(Sender: TObject); procedure JYTypeChange(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure CDS_1BeforeOpen(DataSet: TDataSet); procedure Tv1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string); procedure Tv1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems6GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string); procedure ToolButton4Click(Sender: TObject); procedure PM11Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure IsJYTimeClick(Sender: TObject); procedure C_NameKeyPress(Sender: TObject; var Key: Char); procedure Tv1PCIDCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1C_NameCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1DXMFCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1dxmeterCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1CarnoCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1CIMachNoCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1BCIOIDCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1qgSLCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure Tv1qgMeterCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); private CurrentPage, RecordsNumber: Integer; lstCust: TStringList; procedure InitGrid(); procedure SetStatus(); { Private declarations } public canshu1: string; { Public declarations } end; implementation uses U_DataLink, U_RTFun, U_LabelPrint; {$R *.dfm} procedure TfrmTatClothInspHZList.SetStatus(); begin end; procedure TfrmTatClothInspHZList.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; FreeAndNil(lstCust); Action := caFree; end; procedure TfrmTatClothInspHZList.FormCreate(Sender: TObject); begin inherited; lstCust := TStringList.Create; EndDate.DateTime := SGetServerDateTime(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime - 20; end; procedure TfrmTatClothInspHZList.InitGrid(); var WSql, WSql1: string; begin WSql := SGetFilters(Panel1, 1, 2); if Trim(WSql) <> '' then WSql := ' and ' + WSql; if IsJYTime.Checked then begin WSql1 := ' and A.FillTime>=' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)); WSql1 := WSql1 + ' and A.FillTime<' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)); end; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; sql.Add('select * from ( '); sql.Add('select A.C_NAME, A.C_width,A.C_GramWeight,A.pcid,A.Carno,A.dxmeter '); sql.Add(' ,maX(B.C_Width) AS DXMF,A.CIMachNo,A.BCIOID '); // sql.Add(' ,CAST(isNull(A.dxmeter,''1'') AS DECIMAL(18,2)) '); // SQL.Add(' ,qgMeter=sum(meter+SHMeter)/ISNULL(NULLIF(MAX(ISNULL(B.C_WidthNum, 1)), 0), 1) '); sql.Add(' ,meterall=(select sum(meter+SHMeter) FROM Tat_Cloth_Inspect X WHERE X.pcid = A.pcid and X.BCIOID = A.BCIOID and X.GRADE<>''循环布'' and X.CIMachNo=A.CIMachNo )'); sql.Add(' ,C_Widthall= ISNULL(NULLIF(MAX(ISNULL(B.C_WidthNum, 1)), 0), 1) '); SQL.Add(' ,qgMeter=(select sum(meter+SHMeter) FROM Tat_Cloth_Inspect X WHERE X.pcid = A.pcid and X.BCIOID = A.BCIOID and X.GRADE<>''循环布'' and X.CIMachNo=A.CIMachNo )/ISNULL(NULLIF(MAX(ISNULL(B.C_WidthNum, 1)), 0), 1) '); // SQL.Add(' ,qgSL = ROUND((select sum(meter+SHMeter) FROM Tat_Cloth_Inspect X WHERE X.pcid = A.pcid and X.BCIOID = A.BCIOID and X.GRADE<>''循环布'' and X.CIMachNo=A.CIMachNo )*100 '); // sql.Add(' / ISNULL(NULLIF(MAX(ISNULL(B.C_WidthNum, 1)), 0), 1)/CAST(ISNULL(NULLIF(A.dxmeter, ''''), 1) AS DECIMAL(18,2)) , 2) '); SQL.Add(' ,qgSL = ROUND((CAST(ISNULL(NULLIF(A.dxmeter, ''''), 1) AS DECIMAL(18,2)) - (select sum(meter+SHMeter) FROM Tat_Cloth_Inspect X WHERE X.pcid = A.pcid and X.GRADE<>''循环布'' and X.CIMachNo=A.CIMachNo )'); SQL.Add(' /ISNULL(NULLIF(MAX(ISNULL(B.C_WidthNum, 1)), 0), 1) )*100 '); sql.Add(' /CAST(ISNULL(NULLIF(A.dxmeter, ''''), 1) AS DECIMAL(18,2)) , 3) '); SQL.Add(',SHpf=SUM(CASE WHEN ISNUMERIC(A.SHMETER) = 1 AND ISNUMERIC(A.C_WIDTH) = 1 '); SQL.Add(' THEN CAST(A.SHMETER AS DECIMAL(18,2))/100 * CAST(A.C_WIDTH AS DECIMAL(18,2)) '); SQL.Add(' ELSE 0 END)'); SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END )AS YDJS'); SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN A.meter ELSE 0 END )AS Ydqty'); SQL.Add(',YDpf=SUM(CASE WHEN A.GRADE=''优等品'' THEN A.meter ELSE 0 END )*A.C_Width/100 '); SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END )AS edJS'); SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN A.meter ELSE 0 END )AS edqty'); SQL.Add(',edpf=SUM(CASE WHEN A.GRADE=''二等品'' THEN A.meter ELSE 0 END )*A.C_Width/100 '); SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END )AS xjJS'); SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN A.meter ELSE 0 END )AS xjqty'); SQL.Add(',xjpf=SUM(CASE WHEN A.GRADE=''小卷'' THEN A.meter ELSE 0 END )*A.C_Width/100 '); SQL.Add(',SUM(CASE WHEN (A.GRADE=''废布'' and A.meter>0) THEN 1 ELSE 0 END )AS fbJS'); SQL.Add(',SUM(CASE WHEN A.GRADE=''废布'' THEN A.meter ELSE 0 END )AS fbqty'); SQL.Add(',fbpf=SUM(CASE WHEN A.GRADE=''废布'' THEN A.meter ELSE 0 END )*A.C_Width/100 '); SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END )AS fqJS'); SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN A.meter ELSE 0 END )AS fqqty'); SQL.Add(',fqpf=SUM(CASE WHEN A.GRADE=''分切'' THEN A.meter ELSE 0 END )*A.C_Width/100 '); // SQL.Add(',SUM(CASE WHEN A.GRADE=''循环布'' THEN 1 ELSE 0 END )AS xhJS'); // SQL.Add(',SUM(CASE WHEN A.GRADE=''循环布'' THEN A.meter ELSE 0 END )AS xhqty'); SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END )AS csJS'); SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN A.meter ELSE 0 END )AS csqty'); SQL.Add(',cspf=SUM(CASE WHEN A.GRADE=''测试'' THEN A.meter ELSE 0 END )*A.C_Width/100 '); // 添加优等率字段 - 优等卷数/(优等卷数+小卷卷数+二等卷数+测试卷数+分切卷数+废布卷数(排除米数为0的)) SQL.Add(',YDRate=CAST('); SQL.Add(' CASE '); SQL.Add(' WHEN (SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END) + '); // YDJS SQL.Add(' SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END) + '); // xjJS SQL.Add(' SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END) + '); // edJS SQL.Add(' SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END) + '); // csJS SQL.Add(' SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END) + '); // fqJS SQL.Add(' SUM(CASE WHEN (A.GRADE=''废布'' and A.meter>0) THEN 1 ELSE 0 END)) = 0 '); // fbJS(排除米数为0) SQL.Add(' THEN 0 '); SQL.Add(' ELSE '); SQL.Add(' CAST(SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END)*100 AS DECIMAL(18,4)) / '); // 分子:YDJS SQL.Add(' CAST((SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END) + '); // YDJS SQL.Add(' SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END) + '); // xjJS SQL.Add(' SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END) + '); // edJS SQL.Add(' SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END) + '); // csJS SQL.Add(' SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END) + '); // fqJS SQL.Add(' SUM(CASE WHEN (A.GRADE=''废布'' and A.meter>0) THEN 1 ELSE 0 END)) AS DECIMAL(18,4)) '); // fbJS SQL.Add(' END '); SQL.Add('AS DECIMAL(18,4)) '); // 添加优等率字段 - 优等卷数/(优等卷数+小卷卷数+二等卷数+测试卷数+分切卷数+废布卷数(排除米数为0的)) SQL.Add(',FBRate=CAST('); SQL.Add(' CASE '); SQL.Add(' WHEN (SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END) + '); // YDJS SQL.Add(' SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END) + '); // xjJS SQL.Add(' SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END) + '); // edJS SQL.Add(' SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END) + '); // csJS SQL.Add(' SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END) + '); // fqJS SQL.Add(' SUM(CASE WHEN (A.GRADE=''废布'' and A.meter>0) THEN 1 ELSE 0 END)) = 0 '); // fbJS(排除米数为0) SQL.Add(' THEN 0 '); SQL.Add(' ELSE '); SQL.Add(' CAST(SUM(CASE WHEN (A.GRADE=''废布'' and A.meter>0) THEN 1 ELSE 0 END)*100 AS DECIMAL(18,4)) / '); // 分子:YDJS SQL.Add(' CAST((SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END) + '); // YDJS SQL.Add(' SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END) + '); // xjJS SQL.Add(' SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END) + '); // edJS SQL.Add(' SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END) + '); // csJS SQL.Add(' SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END) + '); // fqJS SQL.Add(' SUM(CASE WHEN (A.GRADE=''废布'' and A.meter>0) THEN 1 ELSE 0 END)) AS DECIMAL(18,4)) '); // fbJS SQL.Add(' END '); SQL.Add('AS DECIMAL(18,4)) '); SQL.Add('from Tat_Cloth_Inspect A '); SQL.Add(' left join BS_Cloth_IO B on A.BCIOID = B.BCIOID '); SQL.Add(' where (A.BEFOREC_WIDTH='''' OR A.BEFOREC_WIDTH is null) '); SQL.Add(' and (NOT EXISTS (select * from BS_Cloth_IO_mx X WHERE X.BCIOID = A.BCIOID and X.C_MXSHWidth is not NULL)) '); SQL.Add(' and A.GRADE<>''循环布'' '); SQL.Add(' and A.Carno<>'''' and A.Carno is not NULL '); SQL.Add(WSql1); sql.Add(' group by A.C_NAME, A.C_width,A.C_GramWeight,A.pcid,A.Carno,A.dxmeter'); sql.Add(' ,A.CIMachNo,A.BCIOID'); sql.add(' ) T where 1=1 '); SQL.Add(WSql); sql.Add(' Order By T.Carno,T.pcid,BCIOID'); // showmessage(sql.text); Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; TV1.DataController.Filter.Clear; end; end; procedure TfrmTatClothInspHZList.IsJYTimeClick(Sender: TObject); begin inherited; InitGrid(); end; procedure TfrmTatClothInspHZList.TBRafreshClick(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmTatClothInspHZList.CDS_1BeforeOpen(DataSet: TDataSet); begin lstCust.Clear; end; procedure TfrmTatClothInspHZList.ConNoMChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); end; end; procedure TfrmTatClothInspHZList.cxPageControl1Change(Sender: TObject); begin CurrentPage := 1; SetStatus(); InitGrid(); end; procedure TfrmTatClothInspHZList.C_NameKeyPress(Sender: TObject; var Key: Char); begin inherited; if Key = #13 then begin InitGrid(); end; end; procedure TfrmTatClothInspHZList.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmTatClothInspHZList.FormShow(Sender: TObject); begin inherited; // ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '检验信息汇总'); CurrentPage := 1; RecordsNumber := 500; canshu1 := Trim(Self.fParameters1); SetStatus(); BegDate.DateTime := SGetServerDate(ADOQueryCmd); EndDate.DateTime := BegDate.DateTime; InitGrid(); end; procedure TfrmTatClothInspHZList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then exit; TcxGridToExcel(Self.Caption, cxGrid1); end; procedure TfrmTatClothInspHZList.orderNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmTatClothInspHZList.PM11Click(Sender: TObject); begin SelOKNo(CDS_1, false); end; procedure TfrmTatClothInspHZList.Tv1PCIDCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] = ARow2.Values[Tv1PCID.Index]) and (ARow1.Values[Tv1PCID.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1qgMeterCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; if (ARow1.Values[Tv1qgMeter.Index] = ARow2.Values[Tv1qgMeter.Index]) and (ARow1.Values[Tv1qgMeter.Index] <> NULL) and (ARow2.Values[Tv1qgMeter.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1qgSLCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; if (ARow1.Values[Tv1qgSL.Index] = ARow2.Values[Tv1qgSL.Index]) and (ARow1.Values[Tv1qgSL.Index] <> NULL) and (ARow2.Values[Tv1qgSL.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1DXMFCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; // if (ARow1.Values[Tv1C_Name.Index] <> ARow2.Values[Tv1C_Name.Index]) or (ARow1.Values[Tv1C_Name.Index] = NULL) or (ARow2.Values[Tv1C_Name.Index] = NULL) then // begin // AAreEqual := False; // exit; // end; if (ARow1.Values[Tv1DXMF.Index] = ARow2.Values[Tv1DXMF.Index]) and (ARow1.Values[Tv1DXMF.Index] <> NULL) and (ARow2.Values[Tv1DXMF.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1BCIOIDCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; if (ARow1.Values[Tv1BCIOID.Index] = ARow2.Values[Tv1BCIOID.Index]) and (ARow1.Values[Tv1BCIOID.Index] <> NULL) and (ARow2.Values[Tv1BCIOID.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1CarnoCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; // if (ARow1.Values[Tv1C_Name.Index] <> ARow2.Values[Tv1C_Name.Index]) or (ARow1.Values[Tv1C_Name.Index] = NULL) or (ARow2.Values[Tv1C_Name.Index] = NULL) then // begin // AAreEqual := False; // exit; // end; if (ARow1.Values[Tv1Carno.Index] = ARow2.Values[Tv1Carno.Index]) and (ARow1.Values[Tv1Carno.Index] <> NULL) and (ARow2.Values[Tv1Carno.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1CIMachNoCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; if (ARow1.Values[Tv1CIMachNo.Index] = ARow2.Values[Tv1CIMachNo.Index]) and (ARow1.Values[Tv1CIMachNo.Index] <> NULL) and (ARow2.Values[Tv1CIMachNo.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1C_NameCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; if (ARow1.Values[Tv1C_Name.Index] = ARow2.Values[Tv1C_Name.Index]) and (ARow1.Values[Tv1C_Name.Index] <> NULL) and (ARow2.Values[Tv1C_Name.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string); begin lstCust.Clear; end; procedure TfrmTatClothInspHZList.Tv1dxmeterCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[Tv1PCID.Index] <> ARow2.Values[Tv1PCID.Index]) or (ARow1.Values[Tv1PCID.Index] = NULL) or (ARow2.Values[Tv1PCID.Index] = NULL) then begin AAreEqual := False; exit; end; // if (ARow1.Values[Tv1C_Name.Index] <> ARow2.Values[Tv1C_Name.Index]) or (ARow1.Values[Tv1C_Name.Index] = NULL) or (ARow2.Values[Tv1C_Name.Index] = NULL) then // begin // AAreEqual := False; // exit; // end; if (ARow1.Values[Tv1dxmeter.Index] = ARow2.Values[Tv1dxmeter.Index]) and (ARow1.Values[Tv1dxmeter.Index] <> NULL) and (ARow2.Values[Tv1dxmeter.Index] <> NULL) then AAreEqual := True else AAreEqual := False; end; procedure TfrmTatClothInspHZList.Tv1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems6GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string); begin if lstCust <> nil then AText := IntToStr(lstCust.Count); end; procedure TfrmTatClothInspHZList.BTNPClick(Sender: TObject); begin if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(); end; procedure TfrmTatClothInspHZList.BTLPClick(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(); end; procedure TfrmTatClothInspHZList.TCBNORChange(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmTatClothInspHZList.JYTypeChange(Sender: TObject); begin CurrentPage := 1; InitGrid(); end; procedure TfrmTatClothInspHZList.N1Click(Sender: TObject); begin SelOKNo(CDS_1, true); end; procedure TfrmTatClothInspHZList.ToolButton2Click(Sender: TObject); var WSql: string; begin if CDS_1.IsEmpty then Exit; if not CDS_1.Locate('SSel', True, []) then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; WSql := ''; CDS_1.DisableControls; with CDS_1 do begin First; while not Eof do begin if CDS_1.fieldbyname('SSel').AsBoolean then begin if WSql <> '' then begin WSql := WSql + ',' + QuotedStr(Trim(CDS_1.fieldbyname('CIID').AsString)); end else begin WSql := QuotedStr(Trim(CDS_1.fieldbyname('CIID').AsString)); end; end; Next; end; end; CDS_1.Locate('SSel', True, []); CDS_1.EnableControls; try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FLMType := 'TradeClothStk'; FFiltration1 := WSql; if ShowModal = 1 then begin end; end; finally frmLabelPrint.Free; end; end; procedure TfrmTatClothInspHZList.ToolButton4Click(Sender: TObject); begin WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '检验信息汇总'); end; end.