unit U_CJSQList; 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, cxPC, cxButtonEdit, RM_E_llPDF, cxDropDownEdit, cxTextEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu; type TfrmCJSQList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBPrint: TToolButton; TBClose: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; TBExport: TToolButton; Order_Main: TClientDataSet; RMDBDataSet1: TRMDBDataSet; RMXLSExport1: TRMXLSExport; ToolButton1: TToolButton; ADOQueryPrint: TADOQuery; CDS_Print: TClientDataSet; Panel1: TPanel; Label8: TLabel; Label12: TLabel; Label13: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; MPRTCodeName: TEdit; MPRTKZ: TEdit; MPRTMF: TEdit; cxSplitter1: TcxSplitter; ADOQuerySub: TADOQuery; DataSource2: TDataSource; Label2: TLabel; ClientDataSet2: TClientDataSet; cxGridPopupMenu2: TcxGridPopupMenu; CDS_Note: TClientDataSet; RM1: TRMGridReport; Panel5: TPanel; Label28: TLabel; Button5: TButton; Button6: TButton; DateTimePicker1: TDateTimePicker; Label11: TLabel; lblFSID: TLabel; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cv2Column10: TcxGridDBColumn; cv2Column4: TcxGridDBColumn; cv2Column7: TcxGridDBColumn; cv2Column5: TcxGridDBColumn; cv2Column6: TcxGridDBColumn; Tv2Column4: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ToolButton3: TToolButton; Label6: TLabel; Label7: TLabel; YWY: TEdit; Label10: TLabel; YWZB: TEdit; Label14: TLabel; SPID: TEdit; Label15: TLabel; HZcolor: TEdit; Label16: TLabel; HZganghao: TEdit; Tv2Column1: TcxGridDBColumn; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column21: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column14: TcxGridDBColumn; v1Column23: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v2Column6: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column19: TcxGridDBColumn; v1Column15: TcxGridDBColumn; v1Column12: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; Tv2Column2: TcxGridDBColumn; CheckBox1: TCheckBox; HZCODE: TEdit; //RMllPDFExport1: TRMllPDFExport; 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 FormShow(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure CustomerNoNameChange(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ToolButton2Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure btn1Click(Sender: TObject); procedure statusChange(Sender: TObject); procedure ToolButton3Click(Sender: TObject); private procedure InitGrid(); procedure InitSubGrid(); procedure InitForm(); function DelData(): Boolean; { Private declarations } public FFInt: Integer; canshu1, canshu2: string; { Public declarations } end; var frmCJSQList: tfrmCJSQList; implementation uses U_DataLink, U_CJSQInPut, U_Fun, U_ZDYHelp; {$R *.dfm} procedure TfrmCJSQList.FormDestroy(Sender: TObject); begin frmcjSQList := nil; end; procedure TfrmCJSQList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmCJSQList.FormCreate(Sender: TObject); begin cxgrid1.Align := alClient; end; procedure TfrmCJSQList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid(Self.Caption, Tv1, Self.Caption); WriteCxGrid(Self.Caption, Tv2, Self.Caption + '1'); end; procedure TfrmCJSQList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; sql.Add(' select A.* '); Sql.Add(' ,HZCODE=ISNULL(a.spcode,'''')+ CAST((select distinct(SPrtCodeName) + '' '' from ck_sxpb_Cr_mx X where A.spid=X.FSID for xml path('''') ) AS VARCHAR(100))'); Sql.Add(' ,HZcolor=ISNULL(a.spcolor,'''')+ CAST((select distinct(prtcolor) + '' '' from ck_sxpb_Cr_mx X where A.spid=X.FSID for xml path('''') ) AS VARCHAR(100))'); Sql.Add(' ,HZganghao=ISNULL(a.rcgangno,'''')+ CAST((select distinct(ganghao) + '' '' from ck_sxpb_Cr_mx X where A.spid=X.FSID for xml path('''') ) AS VARCHAR(100))'); sql.Add(' from CK_SXPB_CR A'); SQL.Add(' where CRFlag=''出库'' '); if CheckBox1.Checked then sql.add(' and A.CRTime>=' + quotedstr(Trim(FormatDateTime('yyyy-MM-dd', BegDate.DateTime))) + ' and A.CRTime<' + quotedstr(Trim(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)))); SQL.Add(' and isnull(CKName,'''')=''重检'' '); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmCJSQList.InitForm(); begin ReadCxGrid(Self.Caption, Tv1, Self.Caption); ReadCxGrid(Self.Caption, Tv2, Self.Caption + '1'); EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime; InitGrid(); end; procedure TfrmCJSQList.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 TfrmCJSQList.TBEditClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmCJSQInPut := TfrmCJSQInPut.Create(Application); with frmCJSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('SPID').AsString); if ShowModal = 1 then begin InitGrid(); end; end; finally frmCJSQInPut.Free; end; end; procedure TfrmCJSQList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from wfb_mjjy where apid=' + QuotedStr(Trim(Order_Main.fieldbyname('spid').AsString))); Open; end; if ADOQueryTemp.IsEmpty = false then begin Application.MessageBox('该重检单已生成数据,禁止删除!', '提示', 0); Exit; end; // with ADOQueryTemp do // begin // Close; // sql.Clear; // sql.Add('select * from CK_SXPB_CR_mx a where fsid=' + QuotedStr(Trim(Order_Main.fieldbyname('SPID').AsString))); // sql.Add('and EXISTS(select * from CK_BanCP_CR b where b.CKOrdNo=a.ssid AND B.ISNowCycle=''1'' )'); // Open; // end; // if ADOQueryTemp.IsEmpty = false then // begin // Application.MessageBox('该重检单已生成数据,禁止删除!', '提示', 0); // Exit; // end; if Order_Main.fieldbyname('CRType').AsString = '拼缸及重检出库' then begin if Application.MessageBox('删除将撤销已出库数据,继续?', '提示', 32 + 4) <> IDYES then Exit; end else begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; end; if DelData() then begin Order_Main.Delete; InitSubGrid(); end; end; function TfrmCJSQList.DelData(): Boolean; begin try Result := false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete CK_SXPB_CR where SPID=''' + Trim(Order_Main.fieldbyname('SPID').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete CK_SXPB_CR_mx where FSId=''' + Trim(Order_Main.fieldbyname('SPID').AsString) + ''''); ExecSQL; end; with ClientDataSet2 do begin First; while not Eof do begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('Update CK_BanCP_CR Set CRFlag=''待出库'',CRType='''',CRTime=NULL,CRNote='''',CKOrdNo='''' '); sql.Add(' where ISNowCycle=1 and MJID=''' + Trim(ClientDataSet2.fieldbyname('MJID').AsString) + ''''); sql.Add(' and CRFlag=''出库'''); sql.Add(' UPdate CK_BanCP_KC Set KCValid=''Y'' '); SQL.Add(' where MJID=''' + Trim(ClientDataSet2.fieldbyname('MJID').AsString) + ''''); sql.Add(' Update WFB_MJJY Set MJStr2=''已入库'' where MJID=''' + Trim(ClientDataSet2.fieldbyname('MJID').AsString) + ''' '); sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(trim('拼缸出库撤销'))); sql.Add(',' + quotedstr(trim('单号' + Order_Main.fieldbyname('SPID').AsString + ';' + '条码号' + ClientDataSet2.fieldbyname('MJID').AsString))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); ExecSQL; end; Next; end; end; ADOQueryCmd.Connection.CommitTrans; Result := True; except ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('数据删除异常!', '提示', 0); end; end; procedure TfrmCJSQList.TBExportClick(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; SelExportData(Tv1, ADOQueryMain, '发货申请列表'); end; procedure TfrmCJSQList.TBPrintClick(Sender: TObject); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if Order_Main.IsEmpty then Exit; // if cxTabControl1.TabIndex <> 1 then // Exit; ExportFtErpFile('重检拼缸发货申请.rmf', ADOQueryTemp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\重检拼缸发货申请.rmf'; with ADOQueryPrint do begin Close; sql.Clear; SQL.Add('EXEC P_Print_cjSQD @FSID=' + quotedstr(Trim(Order_Main.fieldbyname('SPID').AsString))); Open; end; if FileExists(fPrintFile) then begin try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(Order_Main.fieldbyname('SPID').AsString); fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp'; if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil); if FileExists(fImagePath) then DeleteFile(fImagePath); Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3); except application.MessageBox('条形码生成失败!', '提示信息', MB_ICONERROR); exit; end; RMVariables['QRBARCODE'] := fImagePath; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; procedure TfrmCJSQList.TBRafreshClick(Sender: TObject); begin InitGrid(); TBFind.Click; InitSubGrid(); end; procedure TfrmCJSQList.TBAddClick(Sender: TObject); var maxno: string; begin try frmCJSQInPut := TfrmCJSQInPut.Create(Application); with frmCJSQInPut do begin PState := 0; FMainId := ''; if ShowModal = 1 then begin InitGrid(); end; end; finally frmCJSQInPut.Free; end; end; procedure TfrmCJSQList.FormShow(Sender: TObject); begin InitForm(); end; procedure TfrmCJSQList.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmCJSQList.CheckBox2Click(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmCJSQList.ToolButton1Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmCJSQInPut := TfrmCJSQInPut.Create(Application); with frmCJSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('spid').AsString); ToolBar2.Visible := False; TBSave.Visible := False; ScrollBox1.Enabled := False; Tv1.OptionsSelection.CellSelect := False; if ShowModal = 1 then begin end; end; finally frmCJSQInPut.Free; end; end; procedure TfrmCJSQList.CustomerNoNameChange(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 TfrmCJSQList.InitSubGrid(); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then begin sql.Add('select A.* from CK_SXPB_CR_mx A LEFT JOIN CK_SXPB_CR B ON A.FSID=B.SPID '); sql.Add(' where B.SPID=''' + Trim(Order_Main.fieldbyname('SPID').AsString) + ''''); end else begin sql.Add('select A.* from CK_SXPB_CR_mx A LEFT JOIN CK_SXPB_CR B ON A.FSID=B.SPID '); sql.Add(' where 1=2'); end; Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmCJSQList.cxTabControl1Change(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmCJSQList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then begin sql.Add('select A.* from CK_SXPB_CR_mx A LEFT JOIN CK_SXPB_CR B ON A.FSID=B.SPID '); sql.Add(' where B.SPID=''' + Trim(Order_Main.fieldbyname('SPID').AsString) + ''''); end else begin sql.Add('select A.* from CK_SXPB_CR_mx A LEFT JOIN CK_SXPB_CR B ON A.FSID=B.SPID '); sql.Add(' where 1=2'); end; Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmCJSQList.ToolButton2Click(Sender: TObject); begin if Trim(canshu1) <> '高权限' then begin if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; end; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from FHSQ_Main'); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); Open; end; if Trim(ADOQueryTemp.fieldbyname('YSID').AsString) <> '' then begin Application.MessageBox('已生成应收账款不能修改数据!', '提示', 0); Exit; end; lblFSID.Caption := Order_Main.fieldbyname('FSID').AsString; DateTimePicker1.DateTime := SGetServerDate10(ADOQueryTemp); Panel5.Left := (self.Width - Panel5.Width) div 2; Panel5.Visible := true; end; procedure TfrmCJSQList.Button6Click(Sender: TObject); begin Panel5.Visible := false; end; procedure TfrmCJSQList.Button5Click(Sender: TObject); begin try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update FHSQ_Main SET fhDate=' + QuotedStr(Trim(FormatDateTime('yyyy-MM-dd', DateTimePicker1.Date)))); sql.Add('where FSID=' + quotedstr(trim(lblFSID.Caption))); execsql; end; InitGrid(); Order_Main.Locate('FSID', lblFSID.Caption, []); Panel5.Visible := false; application.MessageBox('修改成功!', '提示信息'); except application.MessageBox('修改失败!', '提示信息', 0); end; end; procedure TfrmCJSQList.btn1Click(Sender: TObject); begin if Order_Main.IsEmpty then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update FHSQ_Main SET status='' 已完成'' '); sql.Add('where FSID=' + quotedstr(trim(Order_Main.fieldbyname('FSID').AsString))); // ShowMessage(SQL.Text); execsql; end; Order_Main.Delete; InitSubGrid(); application.MessageBox('操作成功!', '提示信息'); except application.MessageBox('操作失败!', '提示信息', 0); end; end; procedure TfrmCJSQList.statusChange(Sender: TObject); begin InitGrid(); end; procedure TfrmCJSQList.ToolButton3Click(Sender: TObject); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if Order_Main.IsEmpty then Exit; // if cxTabControl1.TabIndex <> 1 then // Exit; ExportFtErpFile('报货单.rmf', ADOQueryTemp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\报货单.rmf'; with ADOQueryPrint do begin Close; sql.Clear; SQL.Add('EXEC P_Print_CKMD5 @FSID=' + quotedstr(Trim(Order_Main.fieldbyname('FSID').AsString))); Open; end; if FileExists(fPrintFile) then begin try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(Order_Main.fieldbyname('FSID').AsString); fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp'; if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil); if FileExists(fImagePath) then DeleteFile(fImagePath); Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3); except application.MessageBox('条形码生成失败!', '提示信息', MB_ICONERROR); exit; end; RMVariables['QRBARCODE'] := fImagePath; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; end.