unit U_KHInPutMain; 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, cxDropDownEdit, cxPC, BtnEdit; type TfrmKHInPutMain = class(TForm) ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; Panel2: TPanel; KHNo: TEdit; Label15: TLabel; Label16: TLabel; Label13: TLabel; Label17: TLabel; Label18: TLabel; LabKHName: TLabel; Label20: TLabel; Label22: TLabel; KHAdd: TMemo; KHSJAdd: TMemo; KHLXR: TEdit; KHTel: TEdit; KHName: TEdit; KHNameJC: TEdit; KHSH: TEdit; Note: TEdit; Label1: TLabel; KHWX: TEdit; Label2: TLabel; KHEmail: TEdit; Label3: TLabel; ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; DS_HZ3: TDataSource; CDS_HZ3: TClientDataSet; LabKHType: TLabel; KHType: TComboBox; LabKHNameEng: TLabel; KHNameEng: TEdit; KHSHAdd: TMemo; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure KHTypeChange(Sender: TObject); private { Private declarations } procedure InitGrid(); function SaveData():Boolean; procedure initBtnColor(panel12:TPanel); public { Public declarations } FKHMainid,FTSFlag,FKHFlag,FYWY,FLiDan:String; end; var frmKHInPutMain: TfrmKHInPutMain; implementation uses U_DataLink,U_Fun,U_ZDYHelp,U_FjList_RZ,U_SCPerson; {$R *.dfm} procedure TfrmKHInPutMain.InitGrid(); begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select * from KH_Main where KHMainID='''+Trim(FKHMainid)+''''); Open; end; //主表 if ADOQueryTemp.IsEmpty=false then SCSHDataNew(ADOQueryTemp,Panel2,2); end; procedure TfrmKHInPutMain.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmKHInPutMain.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmKHInPutMain.FormShow(Sender: TObject); begin KHName.SetFocus; InitGrid(); if TBSave.Visible=False then begin initBtnColor(Panel2); end; if KHType.ItemIndex=1 then begin LabKHNameEng.Visible:=False; KHNameEng.Visible:=False; end; end; procedure TfrmKHInPutMain.initBtnColor(panel12:TPanel); var i:Integer; begin with panel12 do begin for i:=0 to panel12.ControlCount-1 do begin if Controls[i] is TEdit then begin TEdit(Controls[i]).Color:=clMenu; TEdit(Controls[i]).ReadOnly:=True; end else if Controls[i] is TMemo then begin TMemo(Controls[i]).Color:=clMenu; TMemo(Controls[i]).ReadOnly:=True; end else if Controls[i] is TComboBox then begin TComboBox(Controls[i]).Color:=clMenu; TComboBox(Controls[i]).Enabled:=False; end; end; end; end; function TfrmKHInPutMain.SaveData():Boolean; var maxno,FGYSNO,maxnoYWY:String; begin result:=false; try ADOQueryCmd.Connection.BeginTrans; if Trim(FKHMainid)='' then begin if GetLSNo(ADOQueryCmd,maxno,'KH','KH_Main',4,1)=False then begin Result:=False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大ID失败GYSKH!','提示',0); Exit; end; if GetLSNo(ADOQueryCmd,FGYSNO,'KH','KH_Main',4,0)=False then begin Result:=False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取供应商最大号失败!','提示',0); Exit; end; KHNo.Text:=Trim(FGYSNO); end else begin maxno:=Trim(FKHMainid); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from KH_Main where KHMainID='''+Trim(FKHMainid)+''''); Open; end; with ADOQueryCmd do begin If IsEmpty then begin Append; FieldByName('Filler').Value:=Trim(DName); FieldByName('Fillercode').Value:=Trim(DCode); FieldByName('FillTime').Value:=SGetServerDateTime(ADOQueryTemp); FieldByName('YWY').Value:=Trim(FYWY); FieldByName('LIDan').Value:=Trim(FLiDan); end else begin Edit; FieldByName('Editer').Value:=Trim(DName); FieldByName('EditerCode').Value:=Trim(DCode); FieldByName('Edittime').Value:=SGetServerDateTime(ADOQueryTemp); end; FieldByName('KHMainID').Value:=Trim(maxno); FieldByName('KHFlag').Value:=FKHFlag; RTSetsavedata(ADOQueryCmd,'KH_Main',Panel2,2); FieldByName('Valid').Value:='Y'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_Main where KHName='''+Trim(KHName.Text)+''''); sql.Add(' and KHFlag='''+Trim(FKHFlag)+''' and Valid=''Y'' '); Open; end; if ADOQueryCmd.RecordCount>1 then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('全称重复!','提示',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_Main where KHNameJC='''+Trim(KHNameJC.Text)+''''); sql.Add(' and KHFlag='''+Trim(FKHFlag)+''' and Valid=''Y'' '); Open; end; if ADOQueryCmd.RecordCount>1 then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('简称重复!','提示',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_Main where KHNameEng='''+Trim(KHNameEng.Text)+''''); sql.Add(' and KHFlag='''+Trim(FKHFlag)+''' and Valid=''Y'' '); Open; end; if ADOQueryCmd.RecordCount>1 then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('英文名称重复!','提示',0); Exit; end; if Trim(FKHMainid)='' then begin if GetLSNo(ADOQueryCmd,maxnoYWY,'ZD','KH_Owner',3,1)=False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取指定最大号失败!','提示',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_Owner where 1=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('KHMainId').Value:=Trim(maxno); FieldByName('KOID').Value:=Trim(maxnoYWY); FieldByName('UserName').Value:=Trim(FYWY); FieldByName('KOType').Value:='业务员'; FieldByName('FillerCode').Value:=Trim(DCode); FieldByName('Filler').Value:=Trim(DName); FieldByName('Valid').Value:='Y'; Post; end; with ADOQueryCmd do begin Append; FieldByName('KHMainId').Value:=Trim(maxno); FieldByName('KOID').Value:=Trim(maxnoYWY)+'-1'; FieldByName('UserName').Value:=Trim(FLiDan); FieldByName('KOType').Value:='理单员'; FieldByName('FillerCode').Value:=Trim(DCode); FieldByName('Filler').Value:=Trim(DName); FieldByName('Valid').Value:='Y'; Post; end; with ADOQueryCmd do begin Append; FieldByName('KHMainId').Value:=Trim(maxno); FieldByName('KOID').Value:=Trim(maxnoYWY)+'-2'; FieldByName('UserName').Value:=Trim(FLiDan); FieldByName('KOType').Value:='负责人'; FieldByName('FillerCode').Value:=Trim(DCode); FieldByName('Filler').Value:=Trim(DName); FieldByName('Valid').Value:='Y'; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update KH_Owner Set UserId=(select USERID from SY_User A where A.USERName=KH_Owner.UserName)'); sql.Add(' where KOID='''+Trim(maxnoYWY)+''''); sql.Add('Update KH_Owner Set UserId=(select USERID from SY_User A where A.USERName=KH_Owner.UserName)'); sql.Add(' where KOID='''+Trim(Trim(maxnoYWY)+'-1')+''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update KH_Main Set FZR=dbo.F_Get_HZStr(KH_Main.KHMainId,''FZR'')'); sql.Add(' where KHMainId='''+Trim(maxno)+''''); ExecSQL; end; end; ADOQueryCmd.Connection.CommitTrans; FKHMainid:=maxno; result:=true; except ADOQueryCmd.Connection.RollbackTrans; Result:=false; Application.MessageBox('数据保存失败!','提示',0); Exit; end; end; procedure TfrmKHInPutMain.TBSaveClick(Sender: TObject); begin Panel2.SetFocus; IF trim(KHName.Text)='' then begin application.MessageBox('全称不能为空!','提示信息',MB_ICONERROR); exit; end; if Trim(KHNameJC.Text)='' then begin application.MessageBox('简称不能为空!','提示信息',MB_ICONERROR); exit; end; if Trim(KHType.Text)='' then begin application.MessageBox('类型不能为空!','提示信息',MB_ICONERROR); exit; end; if Trim(KHType.Text)='外销' then begin if Trim(KHNameEng.Text)='' then begin application.MessageBox('外销客户英文名称不能为空!','提示信息',MB_ICONERROR); exit; end; end; if Application.MessageBox('确定要保存数据吗?','提示',32+4)<>IDYES then Exit; if SaveData() then begin Application.MessageBox('保存成功!','提示',0); ModalResult:=1; end; end; procedure TfrmKHInPutMain.KHTypeChange(Sender: TObject); begin if KHType.ItemIndex=1 then begin LabKHNameEng.Visible:=False; KHNameEng.Visible:=False; end else begin LabKHNameEng.Visible:=True; KHNameEng.Visible:=True; end; end; end.