unit U_JWLChkIn; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, ADODB, DBClient, cxButtonEdit, cxDropDownEdit, cxCalendar, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit, cxCheckBox; type TfrmJWLChkIn = class(TForm) ToolBar1: TToolBar; BtnSave: TToolButton; BtnExit: TToolButton; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; v1P_ChnName: TcxGridDBColumn; v1ShortName: TcxGridDBColumn; v1Note: TcxGridDBColumn; v1Quantity: TcxGridDBColumn; v1UnitName: TcxGridDBColumn; ToolButton2: TToolButton; ToolButton3: TToolButton; DataSource1: TDataSource; CDS_Sub: TClientDataSet; ADOQueryMain: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; cxGridPopupMenu1: TcxGridPopupMenu; v1Column3: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column5: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; v1YCLMoney: TcxGridDBColumn; procedure FormCreate(Sender: TObject); procedure BtnExitClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure BtnSaveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure v1P_ChnNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1ShortNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1UnitNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private procedure InitGrid(); function SaveData():Boolean; { Private declarations } public FMainID,Canshu1:string; { Public declarations } end; var frmJWLChkIn: TfrmJWLChkIn; implementation uses U_DataLink,U_RTFun,U_ZDYHelp; {$R *.dfm} procedure TfrmJWLChkIn.FormCreate(Sender: TObject); begin cxGrid1.Align:=alClient; end; procedure TfrmJWLChkIn.BtnExitClick(Sender: TObject); begin Close; WriteCxGrid('X原材料入库',Tv1,'原材料仓库'); end; procedure TfrmJWLChkIn.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; SQL.Add('select * from CK_YCLONE_CR '); SQL.Add(' where MSId='''+Trim(FMainID)+''''); Open; end; SCreateCDS20(ADOQueryMain,CDS_Sub); SInitCDSData20(ADOQueryMain,CDS_Sub); finally ADOQueryMain.EnableControls; end; end; procedure TfrmJWLChkIn.ToolButton2Click(Sender: TObject); var FDate:TDateTime; begin FDate:=SGetServerDate(ADOQueryTemp); with CDS_Sub do begin Append; FieldByName('CRTime').Value:=FDate; FieldByName('CRType').Value:='正常入库'; Post; end; end; procedure TfrmJWLChkIn.ToolButton3Click(Sender: TObject); begin if CDS_Sub.IsEmpty then Exit; if Trim(CDS_Sub.fieldbyname('MSID').AsString)<>'' then begin with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from CK_YCLONE_CR where RKID='''+Trim(CDS_Sub.fieldbyname('MSID').AsString)+''''); Open; end; if ADOQueryTemp.IsEmpty then begin Application.MessageBox('已有出库数据不能删除!','提示',0); Exit; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from CK_YCLONE_CR where MSID='''+Trim(CDS_Sub.fieldbyname('MSID').AsString)+''''); Open; end; if ADOQueryTemp.FieldByName('Chker').AsString<>'' then begin Application.MessageBox('已审核不能删除数据!','提示',0); Exit; end; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' delete from CK_YCLONE_CR where MSID='''+Trim(CDS_Sub.fieldbyname('MSID').AsString)+''''); ExecSQL; end; CDS_Sub.Delete; end else begin CDS_Sub.Delete; end; end; function TfrmJWLChkIn.SaveData():Boolean; var MaxNo,CRID:string; begin try Result:=False; ADOQueryCmd.Connection.BeginTrans; CDS_Sub.DisableControls; CDS_Sub.First; while not CDS_Sub.Eof do begin if Trim(CDS_Sub.fieldbyname('MSID').AsString)<>'' then begin MaxNo:=Trim(CDS_Sub.fieldbyname('MSID').AsString); end else begin if GetLSNo(ADOQueryCmd,MaxNo,'MR','CK_YCLONE_CR',4,1)=False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!','提示',0); Exit; end; end; //保存出入表 with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('select * from CK_YCLONE_CR where MSId='''+Trim(MaxNo)+''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_Sub.fieldbyname('MSId').AsString)<>'' then begin Edit; FieldByName('Editer').Value:=Trim(DName); FieldByName('EditerCode').Value:=Trim(DCode); FieldByName('EditTime').Value:=SGetServerDateTime(ADOQueryTemp); end else begin Append; FieldByName('Filler').Value:=Trim(DName); FieldByName('FillerCode').Value:=Trim(DCode); end; FieldByName('MSId').Value:=Trim(MaxNo); FieldByName('RKId').Value:=Trim(MaxNo); FieldByName('CRFlag').Value:='入库'; FieldByName('JSFlag').Value:=1; FieldByName('CRTime').Value:=Trim(CDS_Sub.fieldbyname('CRTime').AsString); FieldByName('CRType').Value:=Trim(CDS_Sub.fieldbyname('CRType').AsString); FieldByName('GYS').Value:=Trim(CDS_Sub.fieldbyname('GYS').AsString); FieldByName('GYSName').Value:=Trim(CDS_Sub.fieldbyname('GYSName').AsString); FieldByName('CKName').Value:=Trim(Canshu1); FieldByName('YCLCode').Value:=Trim(CDS_Sub.fieldbyname('YCLCode').AsString); FieldByName('YCLName').Value:=Trim(CDS_Sub.fieldbyname('YCLName').AsString); FieldByName('YCLSpec').Value:=Trim(CDS_Sub.fieldbyname('YCLSpec').AsString); FieldByName('KCPLace').Value:=Trim(CDS_Sub.fieldbyname('KCPLace').AsString); FieldByName('CRUnit').Value:=Trim(CDS_Sub.fieldbyname('CRUnit').AsString); FieldByName('LYPerson').Value:=Trim(CDS_Sub.fieldbyname('LYPerson').AsString); FieldByName('LYDept').Value:=Trim(CDS_Sub.fieldbyname('LYDept').AsString); FieldByName('MoneyUserName').Value:=Trim(CDS_Sub.fieldbyname('MoneyUserName').AsString); FieldByName('Note').Value:=Trim(CDS_Sub.fieldbyname('Note').AsString); FieldByName('YCLMoney').Value:=CDS_Sub.fieldbyname('YCLMoney').AsFloat; if Trim(CDS_Sub.fieldbyname('YCLPrice').AsString)<>'' then begin FieldByName('YCLPrice').Value:=CDS_Sub.fieldbyname('YCLPrice').Value; end else begin FieldByName('YCLPrice').Value:=0; end; if Trim(CDS_Sub.fieldbyname('CRQty').AsString)='' then begin FieldByName('CRQty').Value:=0; end else begin FieldByName('CRQty').Value:=Trim(CDS_Sub.fieldbyname('CRQty').AsString); end; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update CK_YCLONE_CR Set KCQty='); sql.Add('(select Sum(CRQty*JSFlag) from CK_YCLONE_CR A where A.RKID=CK_YCLONE_CR.MSID)'); //sql.Add(',YCLMoney=YCLPrice*CRQty'); sql.Add(' where MSID='''+Trim(MaxNo)+''''); ExecSQL; end; with CDS_Sub do begin Edit; FieldByName('MSID').Value:=Trim(MaxNo); end; CDS_Sub.Next; end; CDS_Sub.EnableControls; ADOQueryCmd.Connection.CommitTrans; FMainID:=Trim(MaxNo); Result:=True; ModalResult:=1; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; procedure TfrmJWLChkIn.BtnSaveClick(Sender: TObject); begin if CDS_Sub.IsEmpty then Exit; if CDS_Sub.Locate('CRTime',Null,[]) then begin Application.MessageBox('入库时间不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('CRType',Null,[]) then begin Application.MessageBox('入类型不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('CRType','',[]) then begin Application.MessageBox('入类型不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('YCLName',Null,[]) then begin Application.MessageBox('物料名称不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('CRQty',Null,[]) then begin Application.MessageBox('数量不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('CRUnit',Null,[]) then begin Application.MessageBox('单位不能为空!','提示',0); Exit; end; if CDS_Sub.Locate('LYPerson',Null,[]) then begin Application.MessageBox('采购人不能为空!','提示',0); Exit; end; {if CDS_Sub.Locate('LYDept',Null,[]) then begin Application.MessageBox('部门不能为空!','提示',0); Exit; end; } if CDS_Sub.Locate('CRUnit',Null,[]) then begin Application.MessageBox('单位不能为空!','提示',0); Exit; end; if (CDS_Sub.Locate('GYSName',null,[]) or CDS_Sub.Locate('GYSName','',[])) then begin Application.MessageBox('供应商不能为空!','提示',0); Exit; end; if (CDS_Sub.Locate('YCLSpec',null,[]) or CDS_Sub.Locate('YCLSpec','',[])) then begin Application.MessageBox('规格不能为空!','提示',0); Exit; end; if SaveData() then begin Application.MessageBox('保存成功!','提示',0); end; end; procedure TfrmJWLChkIn.FormShow(Sender: TObject); var FDate:TDateTime; begin readCxGrid('X原材料入库',Tv1,'原材料仓库'); InitGrid(); FDate:=SGetServerDate(ADOQueryTemp); if Trim(FMainID)='' then begin with CDS_Sub do begin Append; FieldByName('CRTime').Value:=FDate; FieldByName('CRType').Value:='正常入库'; Post; end; end; end; procedure TfrmJWLChkIn.v1P_ChnNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='YCL'; flagname:='原材料名称'; MainType:=Trim(Canshu1); if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('YCLCode').Value:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); Self.CDS_Sub.FieldByName('YCLName').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkIn.v1ShortNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='GYSBG'; flagname:='供应商名称'; MainType:=Trim(Canshu1); if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('GYS').Value:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); Self.CDS_Sub.FieldByName('GYSName').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkIn.v1UnitNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='DW'; flagname:='单位'; if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('CRUnit').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkIn.v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='YCLSpec'; flagname:='原材料类型'; if ShowModal=1 then begin Self.CDS_Sub.Edit; Self.CDS_Sub.FieldByName('YCLSpec').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmJWLChkIn.v1Column6PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='KCPlace'; flagname:='库位'; if ShowModal=1 then begin with CDS_Sub do begin Edit; FieldByName('KCPlace').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end; end; end.