unit U_ZdyAttachCP; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ComObj, 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, Menus, cxLookAndFeelPainters, cxButtons, cxLookAndFeels, cxNavigator, 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; type FdDy = record inc: integer; //客户端套接字句柄 FDdys: string[32]; //客户端套接字 FdDysName: string[32]; //客户端套接字 end; TfrmZdyAttachCP = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ToolButton2: TToolButton; ADOQueryMain: TADOQuery; ToolButton1: TToolButton; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; Label3: TLabel; ZdyName: TEdit; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; ToolButton3: TToolButton; v2Column6: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Column9: TcxGridDBColumn; Label1: TLabel; ZdyCode: TEdit; ToolButton4: TToolButton; Label2: TLabel; DEFstr5: TComboBox; v2Column7: TcxGridDBColumn; v2Column11: TcxGridDBColumn; v2Column13: TcxGridDBColumn; OpenDialog1: TOpenDialog; ToolButton5: TToolButton; v2Mrate: TcxGridDBColumn; v2Column14: TcxGridDBColumn; v2Column15: TcxGridDBColumn; ToolButton6: TToolButton; Panel2: TPanel; RadioGroup1: TRadioGroup; Label4: TLabel; cxButton1: TcxButton; cxButton2: TcxButton; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGridLevel2: TcxGridLevel; ADOQueryGC: TADOQuery; CDS_GC: TClientDataSet; DS_GC: TDataSource; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv2Column2: TcxGridDBColumn; Tv2Column3: TcxGridDBColumn; Tv2Column4: TcxGridDBColumn; Tv2Column5: TcxGridDBColumn; Tv2Column6: TcxGridDBColumn; ToolButton7: TToolButton; CDS_LM: TClientDataSet; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ZdyNameChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure cxButton2Click(Sender: TObject); procedure cxButton1Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure ToolButton7Click(Sender: TObject); private { Private declarations } procedure InitGrid(); public fkhType: string; dFdDy: array[0..20] of FdDy; //客户端连接数组 end; var frmZdyAttachCP: TfrmZdyAttachCP; implementation uses U_DataLink, U_Fun, U_ZDYHelp, U_ZdyAttInputCP; {$R *.dfm} procedure TfrmZdyAttachCP.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' select ATID,ZdyName,ZdyCode,DEFstr1,DEFstr2,defNote1,Mrate,defNote2,defNote3,DEFstr3,DEFstr5,DEFstr4,DEFstr10,'); sql.Add(' DEFstr6,DEFstr7,DEFstr8,Note,DEFstr4,DEFstr5,defflt1,Filler,FillTime,CPFile '); sql.Add(' from KH_Zdy_Attachment where Type=''CP'' and isnull(DEFstr5,'''')<>''坯布'' '); // sql.Add(' and isnull(khType,'''')=' + quotedstr(trim(fkhType))); sql.Add(' order by zdyName,dbo.getNum_copy1(Defstr3) '); // sql.Add(' order by zdyName '); // ShowMessage(sql.text); Open; end; SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); finally ADOQueryMain.EnableControls; end; end; procedure TfrmZdyAttachCP.FormDestroy(Sender: TObject); begin frmZdyAttachCP := nil; end; procedure TfrmZdyAttachCP.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmZdyAttachCP.TBCloseClick(Sender: TObject); begin WriteCxGrid('成品资料13', Tv2, '成品自定义'); Close; end; procedure TfrmZdyAttachCP.TBDelClick(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; if Trim(CDS_HZ.fieldbyname('ATID').AsString) <> '' then begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('delete KH_Zdy_Attachment where ATID=''' + Trim(CDS_HZ.fieldbyname('ATID').AsString) + ''''); sql.Add('delete KH_Zdy where ZdyNo=''' + Trim(CDS_HZ.fieldbyname('ATID').AsString) + ''''); sql.Add('delete KH_CP_JGC where ATID=''' + Trim(CDS_HZ.fieldbyname('ATID').AsString) + ''''); ExecSQL; end; end; CDS_HZ.Delete; end; procedure TfrmZdyAttachCP.FormShow(Sender: TObject); begin ReadCxGrid('成品资料13', Tv2, '成品自定义'); InitGrid(); end; procedure TfrmZdyAttachCP.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmZdyAttachCP.ToolButton2Click(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); end; end; procedure TfrmZdyAttachCP.ZdyNameChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmZdyAttachCP.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); // SelExportData(Tv2,ADOQueryMain,'产品资料列表'); end; procedure TfrmZdyAttachCP.ToolButton4Click(Sender: TObject); begin try frmZdyAttInputCP := TfrmZdyAttInputCP.Create(Application); with frmZdyAttInputCP do begin FCYID := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); fkhType := self.fkhType; if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP.Free; end; end; procedure TfrmZdyAttachCP.ToolButton3Click(Sender: TObject); begin try frmZdyAttInputCP := TfrmZdyAttInputCP.Create(Application); with frmZdyAttInputCP do begin FCYID := ''; fkhType := self.fkhType; if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP.Free; end; end; procedure TfrmZdyAttachCP.ToolButton5Click(Sender: TObject); var excelApp, WorkBook: Variant; i, j, k, ExcelRowCount: integer; maxId: 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; try k := 0; for i := 1 to 20 do begin if trim(excelApp.Cells[1, i].value) = '' then break; if trim(excelApp.Cells[1, i].value) = '产品编号' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'ZdyCode'; dFdDy[k].FdDysName := '产品编号'; end; if trim(excelApp.Cells[1, i].value) = '产品名称' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'ZdyName'; dFdDy[k].FdDysName := '产品名称'; end; if trim(excelApp.Cells[1, i].value) = '中文名称' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'defNote3'; dFdDy[k].FdDysName := '中文名称'; end; if trim(excelApp.Cells[1, i].value) = '颜色' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'DEFstr3'; dFdDy[k].FdDysName := '颜色'; end; if trim(excelApp.Cells[1, i].value) = '中文颜色' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'DEFstr6'; dFdDy[k].FdDysName := '中文颜色'; end; if trim(excelApp.Cells[1, i].value) = '类型' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'DEFstr5'; dFdDy[k].FdDysName := '类型'; end; if trim(excelApp.Cells[1, i].value) = '规格' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'DEFstr1'; dFdDy[k].FdDysName := '规格'; end; if trim(excelApp.Cells[1, i].value) = '成份' then begin dFdDy[k].inc := i; dFdDy[k].FDdys := 'DEFstr2'; dFdDy[k].FdDysName := '成份'; end; k := k + 1; end; except end; ADOQueryCmd.Connection.BeginTrans; try for i := 2 to ExcelRowCount do begin if GetLSNo(ADOQueryCmd, maxId, 'AT', 'KH_Zdy_Attachment', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from KH_Zdy_Attachment where 1=2'); open; end; ADOQueryCmd.Append; for j := 0 to k - 1 do begin ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value := excelApp.Cells[i, dFdDy[j].inc].Value; end; ADOQueryCmd.FieldByName('ATID').Value := Trim(maxId); ADOQueryCmd.FieldByName('zdyCode').Value := Trim(maxId); ADOQueryCmd.FieldByName('khType').Value := Trim(fkhType); ADOQueryCmd.FieldByName('Type').Value := 'CP'; ADOQueryCmd.FieldByName('Filler').Value := Trim(DName); ADOQueryCmd.Post; end; WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.CommitTrans; InitGrid(); except WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.RollbackTrans; end; end; procedure TfrmZdyAttachCP.cxButton2Click(Sender: TObject); begin Panel2.Visible := false; end; procedure TfrmZdyAttachCP.cxButton1Click(Sender: TObject); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if CDS_HZ.IsEmpty then exit; try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(CDS_HZ.fieldbyname('ZDYCODE').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; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + trim(RadioGroup1.Items[RadioGroup1.ItemIndex]) + '.rmf'; if FileExists(fPrintFile) then begin RMVariables['QRBARCODE'] := fImagePath; RM1.LoadFromFile(fPrintFile); // Rm2.DefaultCopies:=strtointdef(trim(ComboBox1.Text),1); // RM1.ShowReport; RM1.PrintReport; end else Application.MessageBox(PChar('没有找到文件' + fPrintFile), '提示', 0); end; procedure TfrmZdyAttachCP.ToolButton6Click(Sender: TObject); begin Panel2.Left := (self.Width - Panel2.Width) div 2; Panel2.Top := (self.Height - Panel2.Height) div 2 - 100; Panel2.Visible := true; end; procedure TfrmZdyAttachCP.Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin try ADOQueryGC.DisableControls; with ADOQueryGC do begin Filtered := False; Close; SQL.Clear; sql.Add(' select *'); sql.Add(' from KH_CP_JGC where CPname=''' + Trim(CDS_HZ.fieldbyname('ZDYname').AsString) + ''' '); // sql.Add(' order by zdyName,dbo.getNum(Defstr3) '); // sql.Add(' order by zdyName '); // ATID=''' + Trim(CDS_HZ.fieldbyname('ATID').AsString) + ''' Open; end; SCreateCDS20(ADOQueryGC, CDS_GC); SInitCDSData20(ADOQueryGC, CDS_GC); finally ADOQueryGC.EnableControls; end; end; procedure TfrmZdyAttachCP.ToolButton7Click(Sender: TObject); var excelApp, WorkBook: Variant; i, j, k, LX, ExcelRowCount: integer; maxId, FCPID, FCPName, t1, t2, t3, FFID: string; begin 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; 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 Tv2.ColumnCount - 1 do begin with CDS_LM do begin Append; FieldByName('LCode').Value := trim(Tv2.Columns[j].DataBinding.FieldName); FieldByName('LName').Value := trim(Tv2.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; ADOQueryCmd.Connection.BeginTrans; try for i := 2 to ExcelRowCount do begin if GetLSNo(ADOQueryCmd, maxId, 'AT', 'KH_Zdy_Attachment', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from KH_Zdy_Attachment where 1=2'); open; end; ADOQueryCmd.Append; with CDS_HZ do begin Append; CDS_LM.First; while not CDS_LM.Eof do begin if CDS_LM.FieldByName('LXH').AsInteger > 0 then ADOQueryCmd.fieldbyname(CDS_LM.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_LM.FieldByName('LXH').AsInteger].Value; ADOQueryCmd.FieldByName('ATID').Value := Trim(maxId); ADOQueryCmd.FieldByName('Filler').Value := Trim(DName); ADOQueryCmd.FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp); ADOQueryCmd.FieldByName('Type').Value := 'CP'; CDS_LM.Next; end; ADOQueryCmd.Post; end; // for j := 0 to k - 1 do // begin // ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value := excelApp.Cells[i, dFdDy[j].inc].Value; // end; // ADOQueryCmd.FieldByName('ATID').Value := Trim(maxId); // ADOQueryCmd.FieldByName('zdyCode').Value := Trim(maxId); // ADOQueryCmd.FieldByName('khType').Value := Trim(fkhType); // ADOQueryCmd.FieldByName('Type').Value := 'CP'; // ADOQueryCmd.FieldByName('Filler').Value := Trim(DName); // ADOQueryCmd.Post; end; WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.CommitTrans; InitGrid(); except WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.RollbackTrans; end; // try // for i := 2 to ExcelRowCount do // begin // with CDS_HZ do // begin // Append; // CDS_LM.First; // while not CDS_LM.Eof do // begin // if CDS_LM.FieldByName('LXH').AsInteger > 0 then // CDS_HZ.fieldbyname(CDS_LM.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_LM.FieldByName('LXH').AsInteger].Value; // CDS_LM.Next; // end; //// CDS_Import.fieldbyname('OurCoNo').Value := '91330602MA2JTEXX4B'; //// CDS_Import.fieldbyname('OurCoName').Value := '圆中圆'; // Post; // // end; // end; // WorkBook.Close; // excelApp.Quit; // excelApp := Unassigned; // WorkBook := Unassigned; // except // WorkBook.Close; // excelApp.Quit; // excelApp := Unassigned; // WorkBook := Unassigned; // exit; // end; end; end.