unit U_CPKWList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,ComObj, 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, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator; type FdDy=record inc: integer; //客户端套接字句柄 FDdys:string[32]; //客户端套接字 FdDysName:string[32]; //客户端套接字 end; TfrmCPKWList = 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; defstr1: TEdit; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; ToolButton3: TToolButton; v2Column6: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; Label1: TLabel; ZdyCode: TEdit; ToolButton4: TToolButton; v2Column8: TcxGridDBColumn; Label2: TLabel; DEFstr3: TComboBox; v2Column10: TcxGridDBColumn; v2Column11: TcxGridDBColumn; v2Column12: TcxGridDBColumn; v2Column13: TcxGridDBColumn; defstr2: TEdit; Label4: TLabel; v2Column2: TcxGridDBColumn; v2Column4: TcxGridDBColumn; ToolButton5: TToolButton; v2Column5: TcxGridDBColumn; ToolButton6: TToolButton; ADOQueryPrint: TADOQuery; CheckBox1: TCheckBox; ToolButton7: TToolButton; OpenDialog1: TOpenDialog; 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 defstr1Change(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure ToolButton7Click(Sender: TObject); private { Private declarations } procedure InitGrid(); public fType:string; dFdDy: array[0..20] of FdDy; //客户端连接数组 end; var frmCPKWList: TfrmCPKWList; implementation uses U_DataLink,U_Fun,U_ZDYHelp,U_CPKWEdit, U_CPKWKCList; {$R *.dfm} procedure TfrmCPKWList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; SQL.Clear; sql.Add(' select A.* '); // sql.Add(' cpRollNum=(select count(MJID) from CK_BanCP_KC X where X.KCKW=A.zdyCode and X.kcQty>0),'); // sql.Add(' cpQty=(select sum(kcQty) from CK_BanCP_KC X where X.KCKW=A.zdyCode and X.kcQty>0)'); sql.Add(' from KH_Zdy_Attachment A '); sql.Add(' where Type='''+trim(fType)+''' '); Open; end; SCreateCDS20(ADOQueryMain,CDS_HZ); SInitCDSData20(ADOQueryMain,CDS_HZ); finally ADOQueryMain.EnableControls; end; ToolButton2.Click; end; procedure TfrmCPKWList.FormDestroy(Sender: TObject); begin frmCPKWList:=nil; end; procedure TfrmCPKWList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmCPKWList.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption,Tv2,'客户自定义'); Close; end; procedure TfrmCPKWList.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 TfrmCPKWList.FormShow(Sender: TObject); begin cxGrid2.Align:=alclient; ReadCxGrid(self.Caption,Tv2,'客户自定义'); InitGrid(); end; procedure TfrmCPKWList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmCPKWList.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 TfrmCPKWList.defstr1Change(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmCPKWList.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption,cxgrid2); // SelExportData(Tv2,ADOQueryMain,'供应商资料列表'); end; procedure TfrmCPKWList.ToolButton4Click(Sender: TObject); begin try frmCPKWEdit:=TfrmCPKWEdit.Create(Application); with frmCPKWEdit do begin FCYID:=Trim(Self.CDS_HZ.fieldbyname('ATID').AsString); fType:=self.fType; if ShowModal=1 then begin TBRafresh.Click; end; end; finally frmCPKWEdit.Free; end; end; procedure TfrmCPKWList.ToolButton3Click(Sender: TObject); begin try frmCPKWEdit:=TfrmCPKWEdit.Create(Application); with frmCPKWEdit do begin FCYID:=''; fType:=self.fType; if ShowModal=1 then begin TBRafresh.Click; end; end; finally frmCPKWEdit.Free; end; end; procedure TfrmCPKWList.ToolButton5Click(Sender: TObject); begin frmCPKWKCList:=TfrmCPKWKCList.create(self); with frmCPKWKCList do begin fkeyNO:=CDS_HZ.fieldbyname('zdyCode').AsString; showmodal; free; end; end; procedure TfrmCPKWList.ToolButton6Click(Sender: TObject); var fPrintFile:string; Txt,fImagePath:string; Moudle: THandle; Makebar:TMakebar; Mixtext:TMixtext; begin if CDS_HZ.IsEmpty then Exit; if CDS_HZ.Locate('SSel',True,[])=False then begin Application.MessageBox('没有选择数据!','提示',0); Exit; end; CDS_HZ.DisableControls; with CDS_HZ do begin First; while not Eof do begin if CDS_HZ.FieldByName('SSel').AsBoolean then begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add('select A.* '); sql.Add(' from KH_Zdy_Attachment A') ; SQL.Add(' where ATID='''+Trim(CDS_HZ.fieldbyname('ATID').AsString)+''''); sql.Add(' and Type='''+trim(fType)+''' '); Open; end; try Moudle:=LoadLibrary('MakeQRBarcode.dll'); @Makebar:=GetProcAddress(Moudle,'Make'); @Mixtext:=GetProcAddress(Moudle,'MixText'); Txt:=Trim(ADOQueryPrint.fieldbyname('ATID').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); CDS_HZ.EnableControls; exit; end; fPrintFile:=ExtractFilePath(Application.ExeName)+'Report\成品库位标签.rmf' ; if FileExists(fPrintFile) then begin RMVariables['QRBARCODE']:=fImagePath; RM1.LoadFromFile(fPrintFile); // RM1.ShowReport; RM1.PrintReport; sleep(200); end else begin CDS_HZ.EnableControls; Application.MessageBox(PChar('没有找'+trim(fPrintFile)),'提示',0); Exit; end; end; Next; end; end; CDS_HZ.EnableControls; end; procedure TfrmCPKWList.CheckBox1Click(Sender: TObject); begin SelOKNo(CDS_HZ,checkbox1.Checked); end; procedure TfrmCPKWList.ToolButton7Click(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:='DEFStr3'; 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,'KW','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('ZdyName').Value:=Trim(ADOQueryCmd.FieldByName('ZdyCode').asstring); ADOQueryCmd.FieldByName('Type').Value:=fType; 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; end.