unit U_ZdyAttachCP10; 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; type FdDy=record inc: integer; //客户端套接字句柄 FDdys:string[32]; //客户端套接字 FdDysName:string[32]; //客户端套接字 end; TfrmZdyAttachCP10 = 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; v2Column2: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Column9: TcxGridDBColumn; Label1: TLabel; ZdyCode: TEdit; ToolButton4: TToolButton; Label2: TLabel; DEFstr5: TComboBox; v2Column7: TcxGridDBColumn; v2Column8: TcxGridDBColumn; v2Column10: TcxGridDBColumn; v2Column11: TcxGridDBColumn; v2Column12: TcxGridDBColumn; v2Column13: TcxGridDBColumn; OpenDialog1: TOpenDialog; ToolButton5: TToolButton; v2Mrate: TcxGridDBColumn; v2Column14: TcxGridDBColumn; v2Column15: TcxGridDBColumn; v2Column16: TcxGridDBColumn; v2Column17: TcxGridDBColumn; 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); private { Private declarations } procedure InitGrid(); public dFdDy: array[0..20] of FdDy; //客户端连接数组 end; var frmZdyAttachCP10: TfrmZdyAttachCP10; implementation uses U_DataLink,U_Fun,U_ZDYHelp,U_ZdyAttInputCP, U_ZdyAttInputCP10; {$R *.dfm} procedure TfrmZdyAttachCP10.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; SQL.Clear; sql.Add(' select ATID,ZdyName,ZdyCode,DEFstr3,DEFNote1,Type,Filler,Filltime,DEFstr4,DEFstr5,editer,editTime,valid,mrate from KH_Zdy_Attachment where Type=''CP'' order by zdyName,dbo.getNum(Defstr3) '); Open; end; SCreateCDS20(ADOQueryMain,CDS_HZ); SInitCDSData20(ADOQueryMain,CDS_HZ); finally ADOQueryMain.EnableControls; end; end; procedure TfrmZdyAttachCP10.FormDestroy(Sender: TObject); begin frmZdyAttachCP10:=nil; end; procedure TfrmZdyAttachCP10.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmZdyAttachCP10.TBCloseClick(Sender: TObject); begin WriteCxGrid('产品资料',Tv2,'客户自定义'); Close; end; procedure TfrmZdyAttachCP10.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)+''''); ExecSQL; end; end; CDS_HZ.Delete; end; procedure TfrmZdyAttachCP10.FormShow(Sender: TObject); begin ReadCxGrid('产品资料',Tv2,'客户自定义'); InitGrid(); end; procedure TfrmZdyAttachCP10.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmZdyAttachCP10.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 TfrmZdyAttachCP10.ZdyNameChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmZdyAttachCP10.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption,cxgrid2); // SelExportData(Tv2,ADOQueryMain,'产品资料列表'); end; procedure TfrmZdyAttachCP10.ToolButton4Click(Sender: TObject); begin try frmZdyAttInputCP10:=TfrmZdyAttInputCP10.Create(Application); with frmZdyAttInputCP10 do begin FATID:=Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); if ShowModal=1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP10.Free; end; end; procedure TfrmZdyAttachCP10.ToolButton3Click(Sender: TObject); begin try frmZdyAttInputCP10:=TfrmZdyAttInputCP10.Create(Application); with frmZdyAttInputCP10 do begin FATID:=''; if ShowModal=1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP10.Free; end; end; procedure TfrmZdyAttachCP10.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:='defNote1'; 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:='defNote2'; 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('Type').Value:='CP'; ADOQueryCmd.FieldByName('Filler').Value:=Trim(DName); ADOQueryCmd.Post; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from KH_Zdy_Attachment where ATID='''+trim(maxId)+''' '); open; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from KH_Zdy where ZdyNo='''+Trim(maxId)+''''); Open; end; with ADOQueryCmd do begin if ADOQueryCmd.IsEmpty then begin Append; end else begin Edit; end; FieldByName('ZdyNo').Value:=Trim(maxId); FieldByName('ZdyName').Value:=Trim(ADOQueryTemp.fieldbyname('ZdyName').AsString); FieldByName('Type').Value:='CP'; FieldByName('MainType').Value:=Trim(ADOQueryTemp.fieldbyname('DEFstr5').AsString); Post; end; 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; end.