unit U_ElevatorRklist; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxContainer, cxTextEdit, cxCurrencyEdit, cxCheckBox, RM_System, RM_Dataset, RM_Common, RM_Class, RM_GridReport, cxPC, Menus,U_SLT,jpeg,ComObj; type FdDy=record inc: integer; //客户端套接字句柄 FDdys:string[32]; //客户端套接字 FdDysName:string[32]; //客户端套接字 end; TfrmElevatorRklist = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1P_CodeName: TcxGridDBColumn; v1P_SPEC: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1CRType: TcxGridDBColumn; v1CRTime: TcxGridDBColumn; v1Filler: TcxGridDBColumn; v1FillTime: TcxGridDBColumn; Label2: TLabel; Label3: TLabel; P_CodeName: TEdit; CRType: TComboBox; Label5: TLabel; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; ckName: TComboBox; Label6: TLabel; v1P_Code: TcxGridDBColumn; v1INoutNo: TcxGridDBColumn; Label7: TLabel; inoutNo: TEdit; v1Price: TcxGridDBColumn; v1money: TcxGridDBColumn; kuwei: TEdit; Label9: TLabel; gangNo: TEdit; Label10: TLabel; v1Column3: TcxGridDBColumn; RMDB_Main: TRMDBDataSet; v1Column4: TcxGridDBColumn; ADOQueryPrint: TADOQuery; RM1: TRMGridReport; OrderNo: TEdit; Label14: TLabel; P_Code: TEdit; Label15: TLabel; v1Column10: TcxGridDBColumn; Label17: TLabel; FactoryName: TEdit; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; ToolButton1: TToolButton; GroupBox1: TGroupBox; ScrollBox1: TScrollBox; adoqueryPicture: TADOQuery; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; ToolButton2: TToolButton; OpenDialog1: TOpenDialog; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure P_CodeNameChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure ToolButton2Click(Sender: TObject); private procedure InitGrid(); procedure SetStatus(); procedure InitImage(); { Private declarations } public dFdDy: array[0..20] of FdDy; //客户端连接数组 fCKName,canshu1:string; fCRType:string; { Public declarations } end; //var // frmPieceSampleRklist: TfrmPieceSampleRklist; var Mach: array of TfrmSlt; implementation uses U_DataLink,U_Fun10,U_ZDYHelp,U_FileUp, U_ElevatorRk; {$R *.dfm} procedure TfrmElevatorRklist.InitImage(); var i,j:integer; jpg:TJpegImage; myStream: TADOBlobStream; begin j:=length(Mach); if j>0 then begin for i:=0 to j-1 do begin Mach[i].free; end; end; SetLength(Mach, 0); IF CDS_Main.IsEmpty then exit; try with adoqueryPicture do begin close; sql.Clear; sql.Add(' select A.TFID,A.WBID,A.FilesOther,B.FileName from TP_File A,XD_File B where A.TFID =B.XFID '); if CDS_Main.IsEmpty=False then begin sql.Add('and A.WBID='+quotedstr(trim(CDS_Main.fieldbyname('MJID').AsString))); end else begin sql.add(' and 1=2'); end; open; end; j:=adoqueryPicture.RecordCount; if j<1 then exit; adoqueryPicture.DisableControls; adoqueryPicture.First; SetLength(Mach, j); jpg:=TJpegImage.Create(); for i:=0 to j-1 do begin if triM(adoqueryPicture.fieldbyname('FilesOther').AsString)<>'' then begin myStream:=tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')),bmread); jpg.LoadFromStream(myStream); Mach[i] := TfrmSlt.Create(Self); Mach[i].Name:=trim(adoqueryPicture.fieldbyname('TFID').AsString); Mach[i].Parent := ScrollBox1; Mach[I].Left:=0+i*165; Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString,adoqueryPicture.fieldbyname('FileName').AsString,jpg); end; adoqueryPicture.Next; end; adoqueryPicture.EnableControls; finally jpg.free; application.ProcessMessages; end; end; procedure TfrmElevatorRklist.SetStatus(); begin TBEdit.Visible:=False; TBDel.Visible:=False; if Trim(canshu1)='高权限' then begin TBEdit.Visible:=true; TBDel.Visible:=true; end else begin end; end; procedure TfrmElevatorRklist.InitGrid(); begin try with adoqueryTmp do begin close; sql.Clear; sql.Add('select A.* from CK_Sample_CR A'); sql.Add(' where A.CRTime>='''+formatdateTime('yyyy-MM-dd',begdate.Date)+''' '); sql.Add(' and A.CRTime<'''+formatdateTime('yyyy-MM-dd',enddate.Date+1)+''' '); sql.Add(' and A.CRFlag=''入库'' and A.Valid=''Y'' and CKName='+quotedstr(trim(fCKName))); open; end; SCreateCDS20(adoqueryTmp,CDS_Main); SInitCDSData20(adoqueryTmp,CDS_Main); TBFind.Click; finally end; end; procedure TfrmElevatorRklist.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=cafree; end; procedure TfrmElevatorRklist.FormDestroy(Sender: TObject); begin // frmPieceSampleRklist:=nil; end; procedure TfrmElevatorRklist.TBAddClick(Sender: TObject); begin frmElevatorRk:=TfrmElevatorRk.create(self); with frmElevatorRk do begin fkeyNo:=''; fType:=0; fCKName:=trim(self.fCKName); if showmodal=1 then begin TBRafresh.Click; self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ; end; free; end; end; procedure TfrmElevatorRklist.P_CodeNameChange(Sender: TObject); begin if ADOQueryTmp.Active=False then Exit; SDofilter(ADOQueryTmp,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryTmp,CDS_Main); SInitCDSData20(ADOQueryTmp,CDS_Main); end; procedure TfrmElevatorRklist.FormShow(Sender: TObject); begin readCxGrid(trim(self.Caption),Tv1,'样品仓库'); SetStatus(); InitGrid(); end; procedure TfrmElevatorRklist.FormCreate(Sender: TObject); begin EndDate.Date:=SGetServerDate10(ADOQueryTmp); BegDate.Date:=EndDate.Date-7; canshu1:=trim(DParameters1); end; procedure TfrmElevatorRklist.TBCloseClick(Sender: TObject); begin writeCxGrid(trim(self.Caption),Tv1,'样品仓库'); close; end; procedure TfrmElevatorRklist.TBEditClick(Sender: TObject); begin if cds_main.IsEmpty then exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select A.* from CK_Sample_CR A'); SQL.Add('where A.MJID='''+trim(cds_main.fieldbyname('MJID').AsString)+''' '); SQL.Add('and A.CRFlag=''出库'' and A.valid=''Y'' '); Open; end; if not ADOQueryCmd.IsEmpty then begin Application.MessageBox('此单已经产生出库,不能修改!','提示',0); Exit; end; frmElevatorRk:=TfrmElevatorRk.create(self); with frmElevatorRk do begin fkeyNo:=self.cds_main.fieldbyname('CRNO').AsString; fType:=1; fCKName:=trim(self.fCKName); if showmodal=1 then begin TBRafresh.Click; self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ; end; free; end; end; procedure TfrmElevatorRklist.TBDelClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; if CDS_Main.IsEmpty then Exit; if Trim(CDS_Main.fieldbyname('Filler').AsString)<>Trim(DName) then begin Application.MessageBox('不能操作他人数据!','提示',0); Exit; end; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; try if Trim(CDS_Main.FieldByName('CRNO').AsString)<>'' then begin ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update CK_ML_CR set Valid=''N'' where CRNO='+quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString))); ExecSQL; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('exec P_Up_MlKc '+quotedstr(Trim(CDS_Main.FieldByName('MJID').AsString))); Open; end; if Trim(ADOQueryCmd.FieldByName('Msg').AsString)='操作失败' then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('出库数量超出入库数量!','提示',0); Exit; end; ADOQueryCmd.Connection.CommitTrans; CDS_Main.Delete; end; except Application.MessageBox('数据删除失败!','提示信息',0); end; end; procedure TfrmElevatorRklist.TBRafreshClick(Sender: TObject); begin initGrid(); end; procedure TfrmElevatorRklist.TBExportClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel(self.Caption,cxgrid1); end; procedure TfrmElevatorRklist.TBFindClick(Sender: TObject); begin if ADOQueryTmp.Active=False then Exit; SDofilter(ADOQueryTmp,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryTmp,CDS_Main); SInitCDSData20(ADOQueryTmp,CDS_Main); end; procedure TfrmElevatorRklist.N1Click(Sender: TObject); begin SelOKNo(CDS_Main,True); end; procedure TfrmElevatorRklist.N2Click(Sender: TObject); begin SelOKNo(CDS_Main,False); end; procedure TfrmElevatorRklist.ToolButton1Click(Sender: TObject); begin try frmFileUp:=TfrmFileUp.Create(Application); with frmFileUp do begin Code.Text:=Trim(Self.CDS_Main.fieldbyname('MJID').AsString); CYID:=Trim(Self.CDS_Main.fieldbyname('MJID').AsString); if ShowModal=1 then begin //Self.InitGrid(); //Self.CDS_Main.Locate('SPID',CYID,[]); end; end; finally frmFileUp.Free; end; end; procedure TfrmElevatorRklist.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin InitImage(); end; procedure TfrmElevatorRklist.ToolButton2Click(Sender: TObject); var excelApp,WorkBook:Variant; i,j,k,ExcelRowCount:integer; maxId:string; begin if GetLSNo(ADOQueryCmd,maxId,'SP','CK_Sample_CR',4,1)=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 20 do begin if trim(excelapp.Cells[1,i].value)='' then break; //遍历界面绑定界面中显示的字段和名称 for j:=0 to Tv1.ColumnCount-1 do begin if trim(excelapp.Cells[1,i].value)=trim(Tv1.Columns[j].Caption) then begin dFdDy[k].inc:=i; dFdDy[k].FDdys:=trim(Tv1.Columns[j].DataBinding.FieldName); dFdDy[k].FdDysName:=trim(Tv1.Columns[j].Caption); end; end; k:=k+1; end; except application.MessageBox('加载数组错误!','错误信息',MB_ICONERROR); exit; end; ADOQueryCmd.Connection.BeginTrans; try for i := 2 to excelrowcount do begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_Sample_CR where 1=2'); open; end; ADOQueryCmd.Append; //添加第i条数据 for j:=1 to k-1 do begin //dFdDy[j].FDdys; 字段名称 //inttostr(dFdDy[j].inc); //当前列 //excelapp.Cells[i,dFdDy[j].inc].Value; //当前单元格内容 ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value:=excelapp.Cells[i,dFdDy[j].inc].Value; end; ADOQueryCmd.FieldByName('Filler').Value:=Trim(DName); ADOQueryCmd.FieldByName('CRNO').Value:=Trim(maxId)+inttostr(i); ADOQueryCmd.FieldByName('INoutNo').Value:=Trim(maxId)+inttostr(i); ADOQueryCmd.FieldByName('MJID').Value:=Trim(maxId)+inttostr(i); ADOQueryCmd.FieldByName('CKName').Value:=trim(fCKName); ADOQueryCmd.FieldByName('CRTime').Value:=formatdateTime('yyyy-MM-dd',now); ADOQueryCmd.FieldByName('CRType').Value:='期初入库'; ADOQueryCmd.FieldByName('CRFlag').Value:='入库'; ADOQueryCmd.FieldByName('CRQtyFlag').Value:=1; ADOQueryCmd.Post; end; WorkBook.Close; ExcelApp.Quit; ExcelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.CommitTrans; with ADOQueryCmd do begin close; sql.Clear; sql.Add('exec P_Up_SampleKcAll'); execsql; end; InitGrid(); except WorkBook.Close; ExcelApp.Quit; ExcelApp := Unassigned; WorkBook := Unassigned; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存数据错误!','错误信息',MB_ICONERROR); exit; end; end; end.