unit U_MJEdit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, DBClient, ADODB, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxButtonEdit; type TfrmMJEdit = class(TForm) ToolBar1: TToolBar; ToolButton2: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; MJID: TEdit; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; tv2CDType: TcxGridDBColumn; tv2CDWZ: TcxGridDBColumn; v2Column2: TcxGridDBColumn; Tv2CDQty: TcxGridDBColumn; Tv2CDReason: TcxGridDBColumn; v2Column1: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ADOTmp: TADOQuery; ADOQueryMain: TADOQuery; ADOCmd: TADOQuery; DataSource1: TDataSource; Order_MJ: TClientDataSet; ToolButton1: TToolButton; ToolButton3: TToolButton; Label2: TLabel; MJMaoZ: TEdit; Label4: TLabel; M: TLabel; Label6: TLabel; MJLen: TEdit; RadioGroup1: TRadioGroup; Ma: TLabel; Label7: TLabel; MJQty3: TEdit; Label5: TLabel; Label8: TLabel; MJFK: TEdit; Label9: TLabel; Label10: TLabel; Label3: TLabel; Label11: TLabel; MJSJKZ: TEdit; ToolButton4: TToolButton; Label13: TLabel; MJQty2: TEdit; Label12: TLabel; Label14: TLabel; MJQty4: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure MJIDKeyPress(Sender: TObject; var Key: Char); procedure tv2CDTypePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure tv2CDWZPropertiesEditValueChanged(Sender: TObject); procedure v2Column2PropertiesEditValueChanged(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure MJMaoZChange(Sender: TObject); procedure MJQty4Change(Sender: TObject); procedure MJMaoZExit(Sender: TObject); procedure MJQty4Exit(Sender: TObject); private { Private declarations } function SaveData():Boolean; public KgZMiXS:String; { Public declarations } end; var frmMJEdit: TfrmMJEdit; implementation uses U_RTFun,U_ZDYHelp,U_DataLink; {$R *.dfm} procedure TfrmMJEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmMJEdit.FormDestroy(Sender: TObject); begin frmMJEdit:=nil; end; procedure TfrmMJEdit.MJIDKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin with ADOTmp do begin Close; sql.Clear; SQL.Add('select A.*,AOrddefstr3=(select AOrddefstr3 from JYOrder_Sub_AnPai B where B.APID=A.APID), '); sql.Add('AOrddefstr2=(select AOrddefstr2 from JYOrder_Sub_AnPai B where B.APID=A.APID) from WFB_MJJY A'); sql.Add(' where A.MJID='''+Trim(MJID.Text)+''''); Open; end; if ADOTmp.IsEmpty then begin MJID.Text:=''; Label2.Caption:=''; Label2.Visible:=False; Application.MessageBox('�������!','��ʾ',0); Exit; end; MJMaoZ.Text:=Trim(ADOTmp.fieldbyname('MJMaoZ').AsString); MJLen.Text:=Trim(ADOTmp.fieldbyname('MJLen').AsString); MJQty3.Text:=Trim(ADOTmp.fieldbyname('MJQty3').AsString); MJQty2.Text:=Trim(ADOTmp.fieldbyname('MJQty2').AsString); MJQty4.Text:=Trim(ADOTmp.fieldbyname('MJQty4').AsString); MJFK.Text:=Trim(ADOTmp.fieldbyname('MJFK').AsString); MJSJKZ.Text:=Trim(ADOTmp.fieldbyname('MJSJKZ').AsString); M.Caption:=Trim(Trim(ADOTmp.fieldbyname('MJTypeOther').AsString)); Ma.Caption:=Trim(Trim(ADOTmp.fieldbyname('MJStr1').AsString)); if Trim(m.Caption)='' then begin m.Caption:=Trim(ADOTmp.fieldbyname('AOrddefstr3').AsString); end; if Trim(Ma.Caption)='' then begin Ma.Caption:=Trim(ADOTmp.fieldbyname('AOrddefstr2').AsString); end; if Trim(Trim(ADOTmp.fieldbyname('MJType').AsString))='��Ʒ' then begin RadioGroup1.ItemIndex:=0 end else if Trim(Trim(ADOTmp.fieldbyname('MJType').AsString))='��Ʒ' then begin RadioGroup1.ItemIndex:=1; end else if Trim(Trim(ADOTmp.fieldbyname('MJType').AsString))='����' then begin RadioGroup1.ItemIndex:=2; end; with ADOTmp do begin Close; sql.Clear; SQL.Add('select * from WFB_MJJY_CD A where A.MJID='''+Trim(MJID.Text)+''''); Open; end; Label2.Caption:=Trim(MJID.Text); Label2.Visible:=True; MJID.Text:=''; SCreateCDS20(ADOTmp,Order_MJ); SInitCDSData20(ADOTmp,Order_MJ); end; end; procedure TfrmMJEdit.tv2CDTypePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='WFBCD'; flagname:='�õ�'; if ShowModal=1 then begin Self.Order_MJ.Edit; Self.Order_MJ.FieldByName('CDName').value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmMJEdit.tv2CDWZPropertiesEditValueChanged(Sender: TObject); var mvalue,CDBeg,CDEnd:string; FFReal:Double; begin mvalue:=TcxTextEdit(Sender).EditingText; with Order_MJ do begin Edit; FieldByName('CDBeg').Value:=mvalue; Post; end; CDBeg:=Trim(Order_MJ.fieldbyname('CDBeg').AsString); CDEnd:=Trim(Order_MJ.fieldbyname('CDEnd').AsString); if (Trim(CDBeg)<>'') and (Trim(CDEnd)<>'') then begin if TryStrToFloat(CDBeg,FFReal) and TryStrToFloat(CDBeg,FFReal) then begin if StrToFloat(CDEnd)<StrToFloat(CDBeg) then begin Application.MessageBox('��ֹλ��С����ʼλ��!','��ʾ',0); Exit; end; with Order_MJ do begin Edit; FieldByName('CDQty').Value:=StrToFloat(CDEnd)-StrToFloat(CDBeg); Post; end; end else begin Application.MessageBox('�Ƿ�����!','��ʾ',0); Exit; end; end; end; procedure TfrmMJEdit.v2Column2PropertiesEditValueChanged(Sender: TObject); var mvalue,CDBeg,CDEnd:string; FFReal:Double; begin mvalue:=TcxTextEdit(Sender).EditingText; with Order_MJ do begin Edit; FieldByName('CDEnd').Value:=mvalue; Post; end; CDBeg:=Trim(Order_MJ.fieldbyname('CDBeg').AsString); CDEnd:=Trim(Order_MJ.fieldbyname('CDEnd').AsString); if (Trim(CDBeg)<>'') and (Trim(CDEnd)<>'') then begin if TryStrToFloat(CDBeg,FFReal) and TryStrToFloat(CDBeg,FFReal) then begin if StrToFloat(CDEnd)<StrToFloat(CDBeg) then begin Application.MessageBox('��ֹλ��С����ʼλ��!','��ʾ',0); Exit; end; with Order_MJ do begin Edit; FieldByName('CDQty').Value:=StrToFloat(CDEnd)-StrToFloat(CDBeg); Post; end; end else begin Application.MessageBox('�Ƿ�����!','��ʾ',0); Exit; end; end; end; procedure TfrmMJEdit.ToolButton1Click(Sender: TObject); begin if Trim(Label2.Caption)='' then Exit; Order_MJ.Append; Order_MJ.Post; end; procedure TfrmMJEdit.ToolButton3Click(Sender: TObject); begin if Trim(Label2.Caption)='' then Exit; if Order_MJ.IsEmpty then Exit; if Trim(Order_MJ.fieldbyname('MCID').AsString)<>'' then begin if Application.MessageBox('ȷ��Ҫɾ��������','��ʾ',32+4)<>IDYES then Exit; with ADOCmd do begin Close; sql.Clear; sql.Add('delete WFB_MJJY_CD where MCID='''+Trim(Order_MJ.fieldbyname('MCID').AsString)+''''); ExecSQL; end; end; Order_MJ.Delete; end; function TfrmMJEdit.SaveData():Boolean; var maxno,KgZMiXs,KgZMaXs:String; FFreal:Double; begin try ADOCmd.Connection.BeginTrans; ///����õ�� with Order_MJ do begin First; while not Eof do begin if Trim(Order_MJ.fieldbyname('MCID').AsString)='' then begin if GetLSNo(ADOTmp,maxno,'MC','WFB_MJJY_CD',5,1)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('ȡ����ˮ��ʧ�ܣ�','��ʾ',0); Exit; end; end else begin maxno:=Trim(Order_MJ.fieldbyname('MCID').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from WFB_MJJY_CD '); sql.Add(' where MCID='''+Trim(maxno)+''''); Open; end; with ADOCmd do begin if Trim(Order_MJ.fieldbyname('MCID').AsString)='' then Append else Edit; FieldByName('MJId').Value:=Trim(Label2.Caption); FieldByName('MCID').Value:=Trim(maxno); SSetSaveDataCDSNew(ADOCmd,Tv2,Order_MJ,'WFB_MJJY_CD',0); Post; end; Order_MJ.Edit; Order_MJ.FieldByName('MCID').Value:=Trim(maxno); Order_MJ.FieldByName('MJID').Value:=Trim(Label2.Caption); Next; end; end; if Trim(MJMaoZ.Text)<>'' then begin if TryStrToFloat(MJMaoZ.Text,FFreal)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('�����Ƿ�����!','��ʾ',0); Exit; end; end; if Trim(MJLen.Text)<>'' then begin if TryStrToFloat(MJLen.Text,FFreal)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('���ȷǷ�����!','��ʾ',0); Exit; end; end; if Trim(MJSJKZ.Text)<>'' then begin if TryStrToFloat(MJSJKZ.Text,FFreal)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('���طǷ�����!','��ʾ',0); Exit; end; end; if Trim(MJQty2.Text)<>'' then begin if TryStrToFloat(MJQty2.Text,FFreal)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('���������Ƿ�����!','��ʾ',0); Exit; end; end; if Trim(MJQty4.Text)<>'' then begin if TryStrToFloat(MJQty4.Text,FFreal)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('���طǷ�����!','��ʾ',0); Exit; end; end; with ADOCmd do begin Close; sql.Clear; sql.Add('UPdate WFB_MJJY Set MJTypeOther='''+Trim(M.Caption)+''''); sql.Add(',MJStr1='''+Trim(Ma.Caption)+''''); if Trim(MJLen.Text)<>'' then begin sql.Add(',MJLen='+Trim(MJLen.Text)); end else begin sql.Add(',MJLen=0'); end; if Trim(MJQty3.Text)<>'' then begin sql.Add(',MJQty3='+Trim(MJQty3.Text)); end else begin sql.Add(',MJQty3=0'); end; if Trim(MJQty2.Text)<>'' then begin sql.Add(',MJQty2='+Trim(MJQty2.Text)); end else begin sql.Add(',MJQty2=0'); end; if Trim(MJFK.Text)<>'' then begin sql.Add(',MJFK='+Trim(MJFK.Text)); end else begin sql.Add(',MJFK=0'); end; if Trim(MJMaoZ.Text)<>'' then begin sql.Add(',MJMaoZ='+Trim(MJMaoZ.Text)); end else begin sql.Add(',MJMaoZ=0'); end; if Trim(MJSJKZ.Text)<>'' then begin sql.Add(',MJSJKZ='+Trim(MJSJKZ.Text)); end else begin sql.Add(',MJSJKZ=0'); end; if Trim(MJQty4.Text)<>'' then begin sql.Add(',MJQty4='+Trim(MJQty4.Text)); end else begin sql.Add(',MJQty4=0'); end; if RadioGroup1.ItemIndex=0 then begin sql.Add(',MJType=''��Ʒ'' '); end else if RadioGroup1.ItemIndex=1 then begin sql.Add(',MJType=''��Ʒ'' '); end else if RadioGroup1.ItemIndex=2 then begin sql.Add(',MJType=''��ƴ'' '); end; sql.Add(' where MJID='''+Trim(Label2.Caption)+''''); ExecSQL; end; with ADOCmd do begin Close; sql.Clear; sql.Add('Update WFB_MJJY Set '); SQL.Add(' MJLenMa=MJLen*1.0936'); sql.Add(' where MJID='''+Trim(Label2.Caption)+''''); ExecSQL; end; with ADOTmp do begin Close; sql.Clear; sql.Add('select * from JYOrder_main where Mainid=('); sql.Add('select Mainid from WFB_MJJY where MJID='''+Trim(Label2.Caption)+''')'); Open; end; KgZMiXs:=Trim(ADOTmp.fieldbyname('KgZMiXs').AsString); KgZMaXs:=Trim(ADOTmp.fieldbyname('KgZMiXs').AsString); if Trim(KgZMiXs)='' then begin KgZMiXs:='0'; end; if Trim(KgZMaXs)='' then begin KgZMaXs:='0'; end; with ADOCmd do begin if Trim(KgZMiXs)<>'0' then begin Close; sql.Clear; sql.Add('Update WFB_MJJY Set '); SQL.Add(' MJLen=MJQty4*'+KgZMiXs); if Trim(KgZMaXs)='0' then begin SQL.Add(' ,MJLenMa=MJQty4*1.0936*'+KgZMiXs); end; sql.Add(' where MJID='''+Trim(Label2.Caption)+''''); ExecSQL; end; end; with ADOCmd do begin if Trim(KgZMaXs)<>'0' then begin Close; sql.Clear; sql.Add('Update WFB_MJJY Set '); SQL.Add(' MJLenMa=MJQty4*'+KgZMaXs); if Trim(KgZMiXs)='0' then begin SQL.Add(',MJLen=MJQty4*0.9144*'+KgZMaXs); end; sql.Add(' where MJID='''+Trim(Label2.Caption)+''''); ExecSQL; end; end; ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('����ʧ�ܣ�','��ʾ',0); end; end; procedure TfrmMJEdit.ToolButton2Click(Sender: TObject); begin if Trim(Label2.Caption)='' then Exit; if SaveData() then begin Application.MessageBox('����ɹ�!','��ʾ',0); Exit; end; end; procedure TfrmMJEdit.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('��ƥ����',Tv2,'Ⱦ���������'); end; procedure TfrmMJEdit.FormShow(Sender: TObject); begin ReadCxGrid('��ƥ����',Tv2,'Ⱦ���������'); end; procedure TfrmMJEdit.ToolButton4Click(Sender: TObject); begin with ADOTmp do begin Close; sql.Clear; sql.Add('select * from CK_BanCP_CR where MJID='''+Trim(Label2.Caption)+''''); Open; end; if ADOTmp.IsEmpty=False then begin Application.MessageBox('�Ѳ���������ݲ���ɾ��!','��ʾ',0); Exit; end else begin if Application.MessageBox('ȷ��Ҫ�������������Ϻ����ݲ��ָܻ���','��ʾ',32+4)=IDYES then begin with ADOCmd do begin Close; sql.Clear; sql.Add('delete WFB_MJJY where MJID='''+Trim(Label2.Caption)+''''); sql.Add('delete WFB_MJJY_CD where MJID='''+Trim(Label2.Caption)+''''); ExecSQL; end; Label2.Caption:=''; end; end; end; procedure TfrmMJEdit.MJMaoZChange(Sender: TObject); var FReal:Double; begin // if StrToFloat(MJSJKZ.Text)*StrToFloat(MJFK.Text)=0 then Exit; if Trim(MJMaoZ.Text)='' then begin MJLen.Text:=''; MJQty4.Text:=''; Exit; end; if TryStrToFloat(MJMaoZ.Text,FReal)=False then Exit; if Trim(MJQty3.Text)<>'' then begin if TryStrToFloat(MJQty3.Text,FReal)=False then Exit; MJQty4.Text:=FloatToStr(StrToFloat(MJMaoZ.Text)-StrToFloat(MJQty3.Text)); end else begin MJQty4.Text:=MJMaoZ.Text; end; if Trim(MJSJKZ.Text)='' then Exit; if TryStrToFloat(MJSJKZ.Text,FReal)=False then begin Application.MessageBox('����¼�����!','��ʾ',0); Exit; end; if Trim(MJFK.Text)='' then Exit; if TryStrToFloat(MJFK.Text,FReal)=False then begin Application.MessageBox('����¼�����!','��ʾ',0); Exit; end; { if StrToFloat(MJSJKZ.Text)*StrToFloat(MJFK.Text)=0 then Exit; MJLen.Text:=FormatFloat('0.0',StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)); } if Trim(KgZMiXS)='' then MJLen.Text:=FormatFloat('0.0',StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)) else begin if StrToFloat(MJSJKZ.Text)*StrToFloat(MJFK.Text)=0 then Exit; MJLen.Text:=FormatFloat('0.0',StrToFloat(MJQty4.Text)*StrToFloat(KgZMiXS)); end; end; procedure TfrmMJEdit.MJQty4Change(Sender: TObject); var FReal:Double; begin if Trim(MJQty4.Text)='' then begin MJLen.Text:=''; MJMaoZ.Text:=''; Exit; end; if TryStrToFloat(MJQty4.Text,FReal)=False then Exit; if Trim(MJQty3.Text)<>'' then begin if TryStrToFloat(MJQty3.Text,FReal)=True then MJMaoZ.Text:=FloatToStr(StrToFloat(MJQty4.Text)+StrToFloat(MJQty3.Text)); end else begin MJMaoZ.Text:=MJQty4.Text; end; if Trim(MJSJKZ.Text)='' then Exit; if TryStrToFloat(MJSJKZ.Text,FReal)=False then begin Application.MessageBox('����¼�����!','��ʾ',0); Exit; end; if Trim(MJFK.Text)='' then Exit; if TryStrToFloat(MJFK.Text,FReal)=False then begin Application.MessageBox('����¼�����!','��ʾ',0); Exit; end; if Trim(KgZMiXS)='' then MJLen.Text:=FormatFloat('0.0',StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)) else begin if StrToFloat(MJSJKZ.Text)*StrToFloat(MJFK.Text)=0 then Exit; MJLen.Text:=FormatFloat('0.0',StrToFloat(MJQty4.Text)*StrToFloat(KgZMiXS)); end; end; procedure TfrmMJEdit.MJMaoZExit(Sender: TObject); begin if (trim(MJMaoZ.Text)='') and (trim(MJQty4.Text)='') then exit; if (trim(MJMaoZ.Text)='') and (trim(MJQty3.Text)='') then exit; if (trim(MJQty4.Text)='') and (trim(MJQty3.Text)='') then exit; if (trim(MJQty3.Text)='') then exit; if (trim(MJMaoZ.Text)<>'') then begin MJQty4.Text:=floattostr(strtofloatdef(trim(MJMaoZ.Text),0)-strtofloatdef(trim(MJQty3.Text),0) ); exit; end; end; procedure TfrmMJEdit.MJQty4Exit(Sender: TObject); begin if (trim(MJMaoZ.Text)='') and (trim(MJQty4.Text)='') then exit; if (trim(MJMaoZ.Text)='') and (trim(MJQty3.Text)='') then exit; if (trim(MJQty4.Text)='') and (trim(MJQty3.Text)='') then exit; if (trim(MJQty3.Text)='') then exit; if (trim(MJQty4.Text)<>'') then begin MJMaoZ.Text:=floattostr(strtofloatdef(trim(MJQty3.Text),0)+strtofloatdef(trim(MJQty4.Text),0) ); exit; end; end; end.