unit U_Factory; 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, cxDBLookupComboBox, ComObj, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, U_BaseList; type FdDy = record inc: integer; //客户端套接字句柄 FDdys: string[32]; //客户端套接字 FdDysName: string[32]; //客户端套接字 end; TfrmFactory = class(TFrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ToolButton2: TToolButton; ADOQueryMain: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; Label3: TLabel; CoName: TEdit; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; ToolButton3: TToolButton; v2Column6: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column7: TcxGridDBColumn; Label1: TLabel; CoCode: TEdit; ToolButton4: TToolButton; v2DEFStr7: TcxGridDBColumn; v2Column12: TcxGridDBColumn; Coarea: TEdit; Label4: TLabel; v2Column15: TcxGridDBColumn; CDS_LXR: TClientDataSet; DSLXR: TDataSource; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v3Column3: TcxGridDBColumn; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; v3Column2: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; v2Column3: TcxGridDBColumn; FactType: TComboBox; Label5: TLabel; v2Column4: TcxGridDBColumn; ToolButton1: TToolButton; OpenDialog1: TOpenDialog; ToolButton5: TToolButton; v2Column5: 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 CoNameChange(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure TBuserClick(Sender: TObject); procedure Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure ToolButton1Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); private dFdDy: array[0..30] of FdDy; { Private declarations } procedure InitGrid(); public end; var frmFactory: TfrmFactory; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_FactoryInput, U_UserSel; {$R *.dfm} procedure TfrmFactory.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from Company where CoType=''供应商'' and Valid=''Y'' '); Open; end; SCreateCDS(ADOQueryMain, CDS_HZ); SInitCDSData(ADOQueryMain, CDS_HZ); finally ADOQueryMain.EnableControls; end; end; procedure TfrmFactory.FormDestroy(Sender: TObject); begin inherited; frmFactory := nil; end; procedure TfrmFactory.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmFactory.TBCloseClick(Sender: TObject); begin WriteCxGrid(trim(self.caption), Tv2, '供应商管理'); Close; end; procedure TfrmFactory.TBDelClick(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; while CDS_HZ.Locate('SSel', true, []) do begin if Trim(CDS_HZ.fieldbyname('COID').AsString) <> '' then begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update Company set Valid=''N'' where COID=''' + Trim(CDS_HZ.fieldbyname('COID').AsString) + ''''); ExecSQL; end; end; CDS_HZ.Delete; end; end; procedure TfrmFactory.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(self.Caption), Tv2, '供应商管理管理'); InitGrid(); end; procedure TfrmFactory.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmFactory.ToolButton2Click(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_HZ); SInitCDSData(ADOQueryMain, CDS_HZ); end; end; procedure TfrmFactory.CoNameChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmFactory.ToolButton4Click(Sender: TObject); begin if CDS_HZ.IsEmpty then exit; try frmFactoryInput := TfrmFactoryInput.Create(Application); with frmFactoryInput do begin FCOID := Trim(Self.CDS_HZ.fieldbyname('COID').AsString); // CoCode.ReadOnly:=True; if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmFactoryInput.Free; end; end; procedure TfrmFactory.ToolButton3Click(Sender: TObject); begin try frmFactoryInput := TfrmFactoryInput.Create(Application); with frmFactoryInput do begin FCOID := ''; if ShowModal = 1 then begin InitGrid(); end; end; finally frmFactoryInput.Free; end; end; procedure TfrmFactory.TBuserClick(Sender: TObject); var FuserName: string; begin end; procedure TfrmFactory.Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin with ADOQueryTemp do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from Company_contact where COID=' + quotedstr(Trim(CDS_HZ.FieldByName('COID').AsString))); Open; end; SCreateCDS(ADOQueryTemp, CDS_LXR); SInitCDSData(ADOQueryTemp, CDS_LXR); end; procedure TfrmFactory.ToolButton1Click(Sender: TObject); var excelApp, WorkBook: Variant; i, j, k, ExcelRowCount: integer; FCoCode, maxno: string; begin if GetLSNo(ADOQueryCmd, maxno, 'CO', 'Company', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; // if GetLSNo(ADOQueryCmd, FCoCode, 'K', 'KH_Zdy_Attachment', 4, 0) = False then // begin // Application.MessageBox('取最大号失败!', '提示', 0); // Exit; // 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; try k := 0; for i := 1 to 30 do begin if trim(excelApp.Cells[1, i].value) = '' then break; //遍历界面绑定界面中显示的字段和名称 for j := 0 to Tv2.ColumnCount - 1 do begin if trim(excelApp.Cells[1, i].value) = trim(Tv2.Columns[j].Caption) then begin dFdDy[k].inc := i; dFdDy[k].FDdys := trim(Tv2.Columns[j].DataBinding.FieldName); dFdDy[k].FdDysName := trim(Tv2.Columns[j].Caption); end; end; k := k + 1; end; except application.MessageBox('加载数组错误!', '错误信息', MB_ICONERROR); exit; end; try for i := 2 to ExcelRowCount do begin ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from Company where 1=2'); open; end; ADOQueryCmd.Append; //添加第i条数据 for j := 1 to k - 1 do begin if trim(dFdDy[j].FDdys) <> '' then ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value := excelApp.Cells[i, dFdDy[j].inc].Value; end; ADOQueryCmd.FieldByName('COID').Value := Trim(maxno) + inttostr(i); ADOQueryCmd.FieldByName('Filler').Value := Trim(DName); ADOQueryCmd.FieldByName('CoType').Value := '供应商'; ADOQueryCmd.Post; ADOQueryCmd.Connection.CommitTrans; end; WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; InitGrid(); except WorkBook.Close; excelApp.Quit; excelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存数据错误!', '错误信息', MB_ICONERROR); exit; end; end; procedure TfrmFactory.ToolButton5Click(Sender: TObject); var FGDY: string; begin FGDY := ''; try frmUserSel := TfrmUserSel.Create(Application); with frmUserSel do begin if ShowModal = 1 then begin while frmUserSel.CDS_User.Locate('SSel', True, []) do begin if FGDY = '' then FGDY := Trim(CDS_User.FieldByName('UserName').AsString) else FGDY := FGDY + ',' + Trim(CDS_User.FieldByName('UserName').AsString); frmUserSel.CDS_User.Delete; end; end; end; finally frmUserSel.Free; end; while CDS_HZ.Locate('SSel', True, []) do begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update Company set COGdy=' + quotedstr(Trim(FGDY))); sql.Add(' where COID=''' + Trim(CDS_HZ.fieldbyname('COID').AsString) + ''''); ExecSQL; end; with CDS_HZ do begin Edit; FieldByname('SSel').value := False; FieldByname('COGdy').value := FGDY; Post; end; end; end; end.