unit U_KnitPlanImport; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxDropDownEdit, cxPC, U_BaseHelp, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges, dxBarBuiltInMenu, ComObj, U_BaseList, System.ImageList, Vcl.ImgList, dxScrollbarAnnotations, dxSkinsDefaultPainters, dxSkinsCore; type TfrmknitplanImport = class(TfrmBaseHelp) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; GPM_1: TcxGridPopupMenu; DS_1: TDataSource; CDS_1: TClientDataSet; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; OpenDialog1: TOpenDialog; ToolButton5: TToolButton; ToolButton1: TToolButton; ToolButton2: TToolButton; CDS_LM: TClientDataSet; ToolButton3: TToolButton; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxgrdbclmnTv1Column21: TcxGridDBColumn; v1OrderNo: TcxGridDBColumn; Tv1Column15: TcxGridDBColumn; Tv1Column16: TcxGridDBColumn; v1Column31: TcxGridDBColumn; cxgrdbclmnTv1Column15: TcxGridDBColumn; v1Column5: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; v1Column19: TcxGridDBColumn; v1Column21: TcxGridDBColumn; v1Column2: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; v1Column20: TcxGridDBColumn; v1Column3: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; v1PRTMF: TcxGridDBColumn; Tv1Column9: TcxGridDBColumn; v1PRTKZ: TcxGridDBColumn; Tv1Column10: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1PRTOrderQty: TcxGridDBColumn; cxgrdbclmnTv1Column16: TcxGridDBColumn; cxgrdbclmnTv1Column17: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); private { Private declarations } procedure InitGrid(); public { Public declarations } FCTID: string; end; var frmknitplanImport: TfrmknitplanImport; implementation uses U_DataLink, U_RTFun; {$R *.dfm} procedure TfrmknitplanImport.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; sql.Add(' select * from knit_Plan_Main A inner join knit_Plan_Sub B on A.Mainid=B.MainId inner join Trade_Cloth_Inspect_Rule C on A.Mainid=C.RuleID where 2= 1 '); Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmknitplanImport.FormDestroy(Sender: TObject); begin inherited; frmKnitPlanImport := nil; end; procedure TfrmknitplanImport.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := cafree; end; procedure TfrmknitplanImport.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmknitplanImport.FormShow(Sender: TObject); begin inherited; ReadCxGrid(self.Caption, Tv1, '样品管理'); with CDS_LM do begin FieldDefs.Clear; FieldDefs.Add('LXH', ftInteger, 0); FieldDefs.Add('lCode', ftString, 40); FieldDefs.Add('LName', ftString, 40); close; CreateDataSet; end; InitGrid(); end; procedure TfrmknitplanImport.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmknitplanImport.ToolButton1Click(Sender: TObject); begin WriteCxGrid(self.Caption, Tv1, '样品管理'); end; procedure TfrmknitplanImport.ToolButton2Click(Sender: TObject); var maxno: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(CDS_1.FieldByName('mainid').AsString) = '' then begin if CDS_1.FieldByName('OrdType').AsString = '大货单' then begin if GetLSNo(ADOQueryCmd, maxno, 'DH', 'knit_Plan_Main', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('生成流水号异常!', '提示', 0); exit; end; end; if CDS_1.FieldByName('OrdType').AsString = '试样单' then begin if GetLSNo(ADOQueryCmd, maxno, 'SY', 'knit_Plan_Main', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('生成流水号异常!', '提示', 0); exit; end; end; if CDS_1.FieldByName('OrdType').AsString = '外发单' then begin if GetLSNo(ADOQueryCmd, maxno, 'KM', 'knit_Plan_Main', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('生成流水号异常!', '提示', 0); exit; end; end; end else begin end; ////////////////////////// 保存主表 ////////////////////////// with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('select * from knit_Plan_Main where MainId=''' + Trim(maxno) + ''''); Open; end; with ADOQueryCmd do begin Append; FieldByName('MainId').Value := Trim(maxno); FieldByName('orderno').Value := Trim(maxno); FieldByName('Filler').Value := Trim(DName); RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'Trade_Plan_main', 0); Post; end; ////////////////////////// 保存主表 ////////////////////////// /// ////////////////////////// 保存子表 ////////////////////////// with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from knit_Plan_Sub where '); sql.Add(' SubId=''' + Trim(maxno) + ''''); Open; end; with ADOQueryCmd do begin Append; FieldByName('MainId').Value := Trim(maxno); FieldByName('SubId').Value := Trim(maxno); RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'Trade_Plan_sub', 1); Post; end; ////////////////////////// 保存子表 ////////////////////////// /// ////////////////////////// 保存标签表 ////////////////////////// with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Trade_Cloth_Inspect_Rule where '); sql.Add(' RuleID=''' + Trim(maxno) + ''''); Open; end; with ADOQueryCmd do begin Append; FieldByName('Filler').Value := Trim(DName); FieldByName('RuleID').Value := Trim(maxno); RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'Trade_Cloth_Inspect_Rule', 2); Post; end; ////////////////////////// 保存标签表 ////////////////////////// /// ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('保存成功!', '提示', 0); tbclose.Click(); except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmknitplanImport.ToolButton3Click(Sender: TObject); begin CDS_1.Delete; end; procedure TfrmknitplanImport.ToolButton5Click(Sender: TObject); var excelApp, WorkBook: Variant; i, j, k, LX, ExcelRowCount: integer; maxId, FCPID, FCPName, t1, t2, t3, FFID: string; begin try excelApp := CreateOleObject('Excel.Application'); openDialog1.Filter := '*.CSV;*.xls'; if opendialog1.Execute then begin WorkBook := excelApp.WorkBooks.Open(OpenDialog1.FileName); end else exit; excelApp.Visible := false; ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count; except application.MessageBox('加载EXCEL错误!', '错误信息', MB_ICONERROR); exit; end; CDS_LM.EmptyDataSet; for j := 0 to Tv1.ColumnCount - 1 do begin with CDS_LM do begin Append; FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName); FieldByName('LName').Value := trim(Tv1.Columns[j].Caption); Post; end; end; try for i := 1 to 50 do begin if trim(WorkBook.WorkSheets[1].Cells[1, i].value) = '' then continue; if CDS_LM.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[1, i].value), []) then begin with CDS_LM do begin Edit; FieldByName('LXH').Value := i; Post; end; end; end; except application.MessageBox('加载数组错误!', '错误信息', MB_ICONERROR); exit; end; try for i := 2 to ExcelRowCount do begin with CDS_1 do begin Append; CDS_LM.First; while not CDS_LM.Eof do begin if CDS_LM.FieldByName('LXH').AsInteger > 0 then CDS_1.fieldbyname(CDS_LM.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_LM.FieldByName('LXH').AsInteger].Value; CDS_LM.Next; end; Post; end; end; WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; except WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; application.MessageBox('写入数据异常,导入中断!', '错误信息', MB_ICONERROR); exit; end; end; end.