unit U_ZdyAttachCPcbfz; 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, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator; type FdDy = record inc: integer; //客户端套接字句柄 FDdys: string[32]; //客户端套接字 FdDysName: string[32]; //客户端套接字 end; TfrmZdyAttachCPcbfz = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ToolButton2: TToolButton; ADOQueryMain: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; Label3: TLabel; ZdyName: TEdit; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; v2Column6: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column9: TcxGridDBColumn; Label1: TLabel; ZdyCode: TEdit; Label2: TLabel; DEFstr5: TComboBox; v2Column7: TcxGridDBColumn; v2Column11: TcxGridDBColumn; v2Column13: TcxGridDBColumn; OpenDialog1: TOpenDialog; v2Column14: TcxGridDBColumn; v2Column15: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Column8: TcxGridDBColumn; v2Column10: TcxGridDBColumn; v2Column12: TcxGridDBColumn; v2Column16: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; Tv2Column2: TcxGridDBColumn; Tv2Column3: TcxGridDBColumn; Tv2Column4: TcxGridDBColumn; Tv2Column5: TcxGridDBColumn; ToolButton10: TToolButton; ADOQuery1: TADOQuery; 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 TBeditClick(Sender: TObject); procedure TBADDClick(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure TBCBClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton7Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject); procedure ToolButton9Click(Sender: TObject); procedure ToolButton10Click(Sender: TObject); private canshu1: string; { Private declarations } procedure InitGrid(); public dFdDy: array[0..20] of FdDy; //客户端连接数组 fType:string; end; var frmZdyAttachCPcbfz: TfrmZdyAttachCPcbfz; implementation uses U_DataLink, U_Fun, U_ZDYHelp, U_ZdyAttInputCP, U_ZdyAttInputCP10, U_ZdyAttInputCP_CB, U_FjList_RZ, U_ZdyCMZ_help, U_ZdyYS_help; {$R *.dfm} procedure TfrmZdyAttachCPcbfz.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from KH_Zdy_Attachment where Type=''CP'' '); Open; end; SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); finally ADOQueryMain.EnableControls; end; end; procedure TfrmZdyAttachCPcbfz.FormDestroy(Sender: TObject); begin frmZdyAttachCPcbfz := nil; end; procedure TfrmZdyAttachCPcbfz.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmZdyAttachCPcbfz.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption, Tv2, '客户自定义'); Close; end; procedure TfrmZdyAttachCPcbfz.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 TfrmZdyAttachCPcbfz.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption, Tv2, '客户自定义'); // if trim(canshu1) = '高权限' then // begin // TBCB.Visible := false; // ToolButton7.Visible := true; // TBADD.Visible := true; // TBedit.Visible := true; // Tbdel.Visible := true; // end // else if trim(canshu1) = '成本' then // begin // TBCB.Visible := true; // ToolButton7.Visible := true; // TBADD.Visible := false; // TBedit.Visible := false; // Tbdel.Visible := false; // end // else // begin // TBCB.Visible := false; // ToolButton7.Visible := false; // TBADD.Visible := true; // TBedit.Visible := false; // Tbdel.Visible := false; // end; InitGrid(); end; procedure TfrmZdyAttachCPcbfz.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmZdyAttachCPcbfz.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 TfrmZdyAttachCPcbfz.ZdyNameChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmZdyAttachCPcbfz.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); // SelExportData(Tv2,ADOQueryMain,'产品资料列表'); end; procedure TfrmZdyAttachCPcbfz.TBeditClick(Sender: TObject); begin try frmZdyAttInputCP10 := TfrmZdyAttInputCP10.Create(Application); with frmZdyAttInputCP10 do begin PState := 1; FATID := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP10.Free; end; end; procedure TfrmZdyAttachCPcbfz.TBADDClick(Sender: TObject); begin try frmZdyAttInputCP10 := TfrmZdyAttInputCP10.Create(Application); with frmZdyAttInputCP10 do begin PState := 0; FATID := ''; if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP10.Free; end; end; procedure TfrmZdyAttachCPcbfz.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; procedure TfrmZdyAttachCPcbfz.ToolButton6Click(Sender: TObject); begin try frmZdyAttInputCP10 := TfrmZdyAttInputCP10.Create(Application); with frmZdyAttInputCP10 do begin FATID := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); Tsave.Visible := false; PState := 1; if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmZdyAttInputCP10.Free; end; end; procedure TfrmZdyAttachCPcbfz.TBCBClick(Sender: TObject); begin if cds_hz.IsEmpty then exit; try frmZdyAttInputCP_CB := TfrmZdyAttInputCP_CB.Create(Application); with frmZdyAttInputCP_CB do begin PState := 0; FATID := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); // Tsave.Visible:=false; if ShowModal = 1 then begin // TBRafresh.Click; end; end; finally frmZdyAttInputCP_CB.Free; end; end; procedure TfrmZdyAttachCPcbfz.FormCreate(Sender: TObject); begin canshu1 := trim(DParameters1); end; procedure TfrmZdyAttachCPcbfz.ToolButton3Click(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; try frmFjList_RZ := TfrmFjList_RZ.Create(Application); with frmFjList_RZ do begin // if Trim(DParameters1)<>'高权限' then cxButton1.Visible:=false; fkeyNO := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); fType := '产品附件'; if ShowModal = 1 then begin end; end; finally frmFjList_RZ.Free; end; end; procedure TfrmZdyAttachCPcbfz.ToolButton4Click(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; try frmZdyAttInputCP10 := TfrmZdyAttInputCP10.Create(Application); with frmZdyAttInputCP10 do begin PState := 1; CopyInt := 99; FATID := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); if ShowModal = 1 then begin end; end; finally frmZdyAttInputCP10.Free; end; end; procedure TfrmZdyAttachCPcbfz.ToolButton7Click(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; try frmZdyAttInputCP_CB := TfrmZdyAttInputCP_CB.Create(Application); with frmZdyAttInputCP_CB do begin PState := 1; CopyInt := 99; FATID := Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); if ShowModal = 1 then begin end; end; finally frmZdyAttInputCP_CB.Free; end; end; procedure TfrmZdyAttachCPcbfz.ToolButton8Click(Sender: TObject); begin frmZdyCMZ_help := TfrmZdyCMZ_help.create(self); with frmZdyCMZ_help do begin if showmodal = 1 then begin end; free; end; end; procedure TfrmZdyAttachCPcbfz.ToolButton9Click(Sender: TObject); begin frmZdyYS_help := TfrmZdyYS_help.create(self); with frmZdyYS_help do begin if showmodal = 1 then begin end; free; end; end; procedure TfrmZdyAttachCPcbfz.ToolButton10Click(Sender: TObject); begin if fType='10' then frmZdyAttachCPcbfz.ModalResult:=1; // if CDS_HZ.IsEmpty then // exit; // if not CDS_HZ.Locate('ssel', true, []) then // begin // application.MessageBox('没有选择数据!', '提示信息', 0); // exit; // end; // ADOQueryCmd.Connection.BeginTrans; // try // with CDS_HZ do // begin // DisableControls; // first; // while not eof do // begin // if fieldbyname('ssel').AsBoolean then // begin //// if not CBFZData() then // begin // ADOQueryCmd.Connection.RollbackTrans; // application.MessageBox('成本复制失败!', '提示信息', 0); // end; // end; // next; // end; // EnableControls; // end; // ADOQueryCmd.Connection.CommitTrans; // // application.MessageBox('成本复制成功!', '提示信息'); // initGrid(); // except // ADOQueryCmd.Connection.RollbackTrans; // application.MessageBox('成本复制失败!', '提示信息', 0); // end; end; end.