unit U_JYSQlist; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Common, RM_Class, RM_e_Xls, RM_GridReport, RM_System, RM_Dataset, cxPC, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, cxTextEdit, cxCalendar, cxCheckBox; type TfrmJYSQLIST = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; Label3: TLabel; Label4: TLabel; P_CodeName: TEdit; P_Code: TEdit; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; ckName: TComboBox; Label6: TLabel; ADOPrint: TADOQuery; RMDB_MD: TRMDBDataSet; RM1: TRMGridReport; RMXLSExport1: TRMXLSExport; kuwei: TEdit; Label8: TLabel; cxTabControl1: TcxTabControl; P_Color: TEdit; Label9: TLabel; custName: TEdit; Label2: TLabel; btnDelData: TToolButton; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1P_Code: TcxGridDBColumn; v1P_CodeName: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1P_SPEC: TcxGridDBColumn; v1P_Color: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Note: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1P_MF: TcxGridDBColumn; v1P_KZ: TcxGridDBColumn; v1Column10: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column11: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; ToolButton1: TToolButton; ToolButton2: TToolButton; Tv1Column8: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; ToolButton3: TToolButton; CDS_PRT: TClientDataSet; Tv1Column10: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Tv1Column13: TcxGridDBColumn; Label5: TLabel; FILLER: TEdit; ComboBox1: TComboBox; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure P_CodeNameChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TbPrint1Click(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure TchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure btnDelDataClick(Sender: TObject); procedure btnDelCXClick(Sender: TObject); procedure Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure Tv1Column12PropertiesEditValueChanged(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure P_ColorKeyPress(Sender: TObject; var Key: Char); private procedure InitGrid(); procedure SetStatus(); { Private declarations } public fCKName: string; canshu1: string; { Public declarations } end; var frmJYSQLIST: TfrmJYSQLIST; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_JYSQINPUT, U_FUN; {$R *.dfm} procedure TfrmJYSQLIST.SetStatus(); begin TBedit.Visible := false; btnDelData.Visible := false; ToolButton1.Visible := False; ToolButton2.Visible := False; case cxTabControl1.TabIndex of 0: begin TBedit.Visible := true; btnDelData.Visible := True; if canshu1 = '管理' then begin ToolButton1.Visible := true; end; end; 1: begin if canshu1 = '管理' then begin ToolButton2.Visible := true; end; end; 2: begin end; 3: begin btnDelData.Visible := true; end; end; end; procedure TfrmJYSQLIST.InitGrid(); var Pwhere: string; begin if SGetFilters(Panel1, 1, 2) <> '' then Pwhere := ' and ' + SGetFilters(Panel1, 1, 2); try with adoqueryTmp do begin close; sql.Clear; sql.Add('select A.* '); SQL.Add(',CKDATE=ISNULL(ChkTime,(SELECT TOP 1 CRTIME FROM CK_Sample_CR B WHERE B.JYSQD=A.CRID ORDER BY CRTIME DESC))'); SQL.Add(',BZFLAG=(CASE WHEN STATUS=''1'' AND ( select COUNT(*) from CK_Sample_CR c where c.JYSQD=A.CRID and valid=''Y'' )=0 THEN 1 ELSE 0 END)'); SQL.Add(' from YP_InOut2 A'); if ComboBox1.Text = '申请日期' then begin sql.Add('where CRTime>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' '); sql.Add('and CRTime<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' '); end else if ComboBox1.Text = '出库日期' then begin sql.Add('where ISNULL(ChkTime,(SELECT TOP 1 CRTIME FROM CK_Sample_CR B WHERE B.JYSQD=A.CRID ORDER BY CRTIME DESC))>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' '); sql.Add('and ISNULL(ChkTime,(SELECT TOP 1 CRTIME FROM CK_Sample_CR B WHERE B.JYSQD=A.CRID ORDER BY CRTIME DESC))<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' '); end; sql.Add('and CRFlag=''出库'' '); sql.Add('and ckname=''申请单'''); SQL.Add('and valid=''Y'''); case cxTabControl1.TabIndex of 0: begin sql.Add(' and A.status=''0'' '); end; 1: begin sql.Add('and A.status=''1'' '); end; end; sql.Add(Pwhere); if canshu1 = '录入' then begin sql.Add('and (filler in (select UserName from SY_User where Udept=(select Udept from SY_User where SY_User.UserName=' + QuotedStr(Trim(DName))); sql.Add('))'); SQL.Add('OR FILLER=' + QuotedStr(Trim(DName))); sql.Add(')'); end; sql.add('order by filltime desc'); // ShowMessage(SQL.Text); open; end; SCreateCDS20(adoqueryTmp, CDS_Main); SInitCDSData20(adoqueryTmp, CDS_Main); finally end; end; procedure TfrmJYSQLIST.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := cafree; end; procedure TfrmJYSQLIST.FormDestroy(Sender: TObject); begin frmJYSQLIST := nil; end; procedure TfrmJYSQLIST.TBAddClick(Sender: TObject); begin frmJYSQinput := TfrmJYSQinput.create(self); with frmJYSQinput do begin fkeyNo := ''; fType := 0; fckName := self.fckName; if showmodal = 1 then begin TBRafresh.Click; self.CDS_Main.Locate('crNo', trim(fkeyNo), []); end; free; end; end; procedure TfrmJYSQLIST.P_CodeNameChange(Sender: TObject); begin if ADOQueryTmp.Active = False then Exit; SDofilter(ADOQueryTmp, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryTmp, CDS_Main); SInitCDSData20(ADOQueryTmp, CDS_Main); end; procedure TfrmJYSQLIST.FormShow(Sender: TObject); var fsj: string; begin readCxGrid(self.Caption, Tv1, '样品仓库'); SetStatus(); InitGrid(); end; procedure TfrmJYSQLIST.FormCreate(Sender: TObject); begin BegDate.Date := SGetServerDate10(ADOQueryTmp) - 7; EndDate.Date := SGetServerDate10(ADOQueryTmp); cxGrid1.Align := alclient; end; procedure TfrmJYSQLIST.TBCloseClick(Sender: TObject); begin writeCxGrid(self.Caption, Tv1, '样品仓库'); close; end; procedure TfrmJYSQLIST.TBEditClick(Sender: TObject); begin if cds_main.IsEmpty then exit; frmJYSQinput := TfrmJYSQinput.create(self); with frmJYSQinput do begin fkeyNo := self.cds_main.fieldbyname('CRNO').AsString; fType := 1; fckName := self.fckName; if showmodal = 1 then begin TBRafresh.Click; self.CDS_Main.Locate('crNo', trim(fkeyNo), []); end; free; end; end; procedure TfrmJYSQLIST.TBDelClick(Sender: TObject); var YFID, CRID: string; begin if CDS_Main.IsEmpty then Exit; if Application.MessageBox('是否要整单删除?', '提示', 32 + 4) <> IDYES then Exit; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update YP_InOut2 SET valid=''N'' '); sql.Add(',editer=' + quotedstr(trim(DName))); sql.Add(',edittime=getdate()'); SQL.Add('where CRNO=''' + Trim(CDS_Main.fieldbyname('CRNO').AsString) + ''' '); // // sql.Add('delete from YF_money_CR '); // SQL.Add('where mainID=''' + Trim(CDS_Main.fieldbyname('CRNO').AsString) + ''' '); // SQL.Add('and subID=''' + Trim(CDS_Main.fieldbyname('CRID').AsString) + ''' '); execsql; end; TBRafresh.Click; except Application.MessageBox('数据删除失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.TBRafreshClick(Sender: TObject); begin initGrid(); end; procedure TfrmJYSQLIST.TBPrintClick(Sender: TObject); var filepath: string; begin if CDS_Main.IsEmpty then exit; with AdoPrint do begin close; sql.Clear; sql.Add('exec P_Print_cpCkMd '); sql.Add('@inoutNo=' + quotedstr(trim(CDS_Main.fieldbyname('inoutNO').AsString))); sql.Add(',@flag=' + quotedstr(trim(''))); 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['dtxz'] := FormatDateTime('yyyy-mm-dd', date()); RMVariables['zdr'] := trim(DName); RMVariables['Filler'] := trim(CDS_Main.fieldbyname('Filler').AsString); RM1.LoadFromFile(filepath); RM1.ShowReport; finally end; end; procedure TfrmJYSQLIST.TBExportClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmJYSQLIST.TbPrint1Click(Sender: TObject); var filepath: string; begin if CDS_Main.IsEmpty then exit; with AdoPrint do begin close; sql.Clear; sql.Add(' select A.*,B.CYMF,B.CYKZ,A.SHAZHI defnote5, '); sql.Add(' FilesOther=(select top 1 X1.FilesOther from TP_File X1,CP_YDang X2 where X1.WBID=X2.CYID and X2.CYNo=A.P_Code and X1.TFType=''样品'') '); sql.Add(' from YP_INout2 A '); sql.Add(' left join CP_YDang B on B.CYNO=A.P_Code'); sql.Add(' where A.CRNo=' + quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString))); 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['dtxz'] := FormatDateTime('yyyy-mm-dd', date()); RMVariables['zdr'] := trim(DName); RMVariables['Filler'] := trim(CDS_Main.fieldbyname('Filler').AsString); RM1.LoadFromFile(filepath); RM1.ShowReport; finally end; end; procedure TfrmJYSQLIST.cxTabControl1Change(Sender: TObject); begin SetStatus(); initGrid(); end; procedure TfrmJYSQLIST.TchkClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YP_InOut2 SET status=''1'' '); sql.Add('where CRNO=' + quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString))); execsql; end; application.MessageBox('审核成功!', '提示信息'); TBRafresh.Click; except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.TnochkClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YP_InOut2 SET status=''0'' '); sql.Add('where CRNO=' + quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString))); execsql; end; application.MessageBox('撤销审核成功!', '提示信息'); TBRafresh.Click; except application.MessageBox('撤销审核失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.btnDelDataClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; if Application.MessageBox('是否要删除数据?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete YP_InOut2 where CRID=' + quotedstr(CDS_Main.fieldbyname('CRID').AsString)); execsql; end; ADOQueryCmd.Connection.CommitTrans; CDS_Main.Delete; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('数据删除失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.btnDelCXClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; if Application.MessageBox('是否撤销删除?', '提示', 32 + 4) <> IDYES then Exit; try with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update YP_InOut2 SET valid=''Y'' '); sql.Add(',editer=' + quotedstr(trim(DName))); sql.Add(',edittime=getdate()'); SQL.Add('where CRNO=''' + Trim(CDS_Main.fieldbyname('CRNO').AsString) + ''' '); execsql; end; TBRafresh.Click; except Application.MessageBox('数据撤销删除失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); var FValue: string; FBounds: TRect; begin FBounds := AViewInfo.Bounds; if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then begin ACanvas.FillRect(FBounds); ACanvas.DrawComplexFrame(FBounds, clBtnHighlight, clBtnShadow, [bBottom, bLeft, bRight], 1); FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1); InflateRect(FBounds, -1, -1); //Platform specific. May not work on Linux. ACanvas.Font.Color := clBlack; ACanvas.Brush.Style := bsClear; ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop); ADone := True; end; end; procedure TfrmJYSQLIST.ToolButton1Click(Sender: TObject); begin if CDS_Main.IsEmpty then exit; if CDS_Main.Locate('ssel', true, []) = false then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; with CDS_Main do begin DisableControls; First; while not eof do begin if Fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YP_InOut2 SET status=''1'',ChkTime=GETDATE()'); sql.Add('where CRID=' + quotedstr(trim(CDS_Main.fieldbyname('CRID').AsString))); execsql; end; end; next; end; First; EnableControls; end; ADOQueryCmd.Connection.CommitTrans; application.MessageBox('标记成功!', '提示信息'); TBRafresh.Click; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('标记失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.ToolButton2Click(Sender: TObject); begin if CDS_Main.IsEmpty then exit; if CDS_Main.Locate('ssel', true, []) = false then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; with CDS_Main do begin DisableControls; First; while not eof do begin if Fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update YP_InOut2 SET status=''0'',ChkTime=NULL'); sql.Add('where CRID=' + quotedstr(trim(CDS_Main.fieldbyname('CRID').AsString))); execsql; end; end; next; end; First; EnableControls; end; ADOQueryCmd.Connection.CommitTrans; application.MessageBox('撤销成功!', '提示信息'); TBRafresh.Click; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('撤销失败!', '提示信息', 0); end; end; procedure TfrmJYSQLIST.ToolButton3Click(Sender: TObject); var fPrintFile: string; begin if CDS_Main.IsEmpty then Exit; //if Trim(CDS_Main.fieldbyname('CRType').AsString)<>'检验出库' then Exit; if CDS_Main.Locate('SSel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; ExportFtErpFile('寄样申请单.rmf', ADOQueryTmp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\寄样申请单.rmf'; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete TBSubID where DName=''' + Trim(DCode) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('SELECT * FROM TBSubID where 1=2 '); open; end; with cds_main do begin CDS_Main.DisableControls; try ADOQueryCmd.Connection.BeginTrans; with CDS_Main do begin First; while not Eof do begin if Fieldbyname('Ssel').AsBoolean then begin ADOQueryCmd.append; ADOQueryCmd.fieldbyname('SubId').Value := Trim(CDS_Main.fieldbyname('crid').AsString); ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode); ADOQueryCmd.post; end; Next; end; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; end; CDS_Main.EnableControls; with ADOPrint do begin Close; sql.Clear; sql.add('exec P_Print_JYSQD '); sql.add('@DCODE=' + quotedstr(Trim(DCode))); // ShowMessage(SQL.Text); Open; end; SCreateCDS20(ADOPrint, CDS_PRT); SInitCDSData20(ADOPrint, CDS_PRT); RMXLSExport1 := TRMXLSExport.Create(RMXLSExport1); if FileExists(fPrintFile) then begin // RMVariables['QRBARCODE'] := fImagePath; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; // RM1.PrintReport; end else begin CDS_Main.EnableControls; Application.MessageBox(PChar('没有找到' + fPrintFile), '提示', 0); Exit; end; Edit; FieldByName('SSel').Value := False; Post; end; CDS_Main.EnableControls; end; procedure TfrmJYSQLIST.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if (AViewInfo.GridRecord.Values[Tv1Column11.Index] = 1) then begin ACanvas.font.Color := clRed; end; end; procedure TfrmJYSQLIST.Tv1Column12PropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_Main do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update YP_INOUT2 set ' + FFieldName + '=' + QUOTEDSTR(Trim(mvalue))); sql.Add('where CRID=' + quotedstr(Trim(CDS_Main.fieldbyname('CRID').AsString))); // ShowMessage(SQL.Text); ExecSQL; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmJYSQLIST.ComboBox1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmJYSQLIST.P_ColorKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin initgrid(); end; end; end.