unit U_CPAddPN; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, DBClient, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, ComCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit, cxButtonEdit, StdCtrls, ExtCtrls, cxCurrencyEdit, BtnEdit; type TfrmCPAddPN = class(TForm) ToolBar1: TToolBar; ToolButton1: TToolButton; TBClose: TToolButton; CDS_Sub: TClientDataSet; ADOQueryMain: TADOQuery; DataSource2: TDataSource; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; ScrollBox1: TScrollBox; Label1: TLabel; Label7: TLabel; CYNo: TEdit; CYNote: TMemo; Label5: TLabel; CYName: TEdit; Label11: TLabel; CYCF: TEdit; Label15: TLabel; CYMF: TEdit; Label22: TLabel; CYKZ: TEdit; Label23: TLabel; Label2: TLabel; CYColor: TEdit; Label4: TLabel; CYHX: TEdit; Label10: TLabel; CYPrice: TEdit; CYID: TEdit; Label3: TLabel; CYSpec: TMemo; Label6: TLabel; Label8: TLabel; CYYTJS: TEdit; CYMD: TEdit; Label9: TLabel; CYSXJS: TEdit; Label12: TLabel; CYYTWS: TEdit; Label13: TLabel; CYSXWS: TEdit; Label14: TLabel; CYZCNote: TMemo; Label16: TLabel; CYRCNote: TMemo; CYSFZR: TComboBox; Label17: TLabel; Label18: TLabel; CYSMLD: TEdit; Label19: TLabel; CYGMLD: TEdit; Label20: TLabel; CYZZCD: TEdit; Label21: TLabel; CYQMQQ: TEdit; Label24: TLabel; CYRCCD: TEdit; Label25: TLabel; CYLEIBIE: TBtnEditA; Label26: TLabel; CYYT: TEdit; Label27: TLabel; CYYXMF: TEdit; Label28: TLabel; CYSZ: TEdit; CYRFCB: TEdit; Label29: TLabel; CYPBCB: TEdit; Label30: TLabel; Label31: TLabel; CYSHCB: TEdit; Label32: TLabel; CYCPTZ: TMemo; Label33: TLabel; CYJFQL: TEdit; Label34: TLabel; CYDHMF: TEdit; Label35: TLabel; CYDHKZ: TEdit; Label36: TLabel; Label37: TLabel; Label38: TLabel; Label39: TLabel; Label40: TLabel; cpname: TComboBox; cpid: TEdit; procedure FormShow(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure CYColorKeyPress(Sender: TObject; var Key: Char); procedure CYKZExit(Sender: TObject); procedure CYMFExit(Sender: TObject); procedure CYLEIBIEBtnClick(Sender: TObject); procedure CYNoKeyPress(Sender: TObject; var Key: Char); procedure cpnameChange(Sender: TObject); private canshu1: string; Fint: Integer; procedure InitSubGrid(); function SaveData(): Boolean; { Private declarations } public FCYID, FCYCode, FCPID, FCPNO, FCPName: string; CopyInt: Integer; { Public declarations } end; var frmCPAddPN: TfrmCPAddPN; implementation uses U_DataLink, U_Fun, U_iniParam, U_ZDYHelp, U_ZdyAttachGYS, U_FileUp; {$R *.dfm} procedure TfrmCPAddPN.InitSubGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; SQL.Add('select a.*,b.cpname,b.cpid from CP_YDang a inner join cp_type b on a.cytype=b.cpid where CYID=''' + Trim(FCYID) + ''''); Open; end; SCSHDataNew(ADOQueryMain, ScrollBox1, 2); SCSHDataNew(ADOQueryMain, ScrollBox1, 3); SCSHDataNew(ADOQueryMain, ScrollBox1, 0); finally ADOQueryMain.EnableControls; end; end; procedure TfrmCPAddPN.FormShow(Sender: TObject); var fsj: string; begin fsj := 'select distinct name=CPNAME from CP_Type order by CPNAME '; SInitComBoxBySql(ADOQueryCmd, cpname, False, fsj); InitSubGrid(); if CopyInt = 1 then begin FCYID := ''; CYID.text := ''; end; if FCYID <> '' then begin with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('SELECT FILLER FROM CP_YDANG where CYID=''' + Trim(FCYID) + ''''); Open; end; if ADOQueryTemp.FieldByName('FILLER').AsString <> Trim(DName) then begin CYNo.Enabled := False; CYNAME.Enabled := False; end; end; end; procedure TfrmCPAddPN.TBCloseClick(Sender: TObject); begin Close; end; function TfrmCPAddPN.SaveData(): Boolean; var maxId, FCYNo: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(FCYID) = '' then begin if GetLSNo(ADOQueryCmd, maxId, 'Y', 'CP_YDang', 4, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; CYID.Text := trim(maxId); end else begin maxId := Trim(FCYID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from CP_YDang where CYID=''' + Trim(FCYID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FCYID) = '' then begin Append; if cpid.Text <> '' then begin FieldByName('CYType').Value := Trim(cpid.Text); end else begin FieldByName('CYType').Value := Trim(FCPID); end; FieldByName('Filler').Value := Trim(DName); end else begin Edit; if cpid.Text <> '' then begin FieldByName('CYType').Value := Trim(cpid.Text); end; FieldByName('Editer').Value := Trim(DName); FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('CYID').Value := Trim(maxId); if trim(CYNo.Text) = '' then CYNo.Text := Trim(maxId); SSetsaveSqlNew(ADOQueryCmd, 'CP_YDang', ScrollBox1, 2); FieldByName('CYLEIBIE').Value := Trim(CYLEIBIE.TEXT); Post; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select count(*) as AA from CP_YDang where CYNo=''' + Trim(CYNo.Text) + ''''); Open; if FieldByName('AA').AsInteger > 1 then begin ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('编号重复!', '提示', 0); Exit; end; end; ADOQueryCmd.Connection.CommitTrans; FCYID := maxId; Result := True; except Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmCPAddPN.ToolButton1Click(Sender: TObject); var i: Integer; begin if CYNo.Text = '' then begin Application.MessageBox('产品编号不能为空!', '提示', 0); Exit; end; if CYName.Text = '' then begin CYName.Text := CYNo.Text; end; if FCYID = '' then begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('select STUFF(( SELECT '', '' +convert(VARCHAR, CYNO) FROM CP_YDang '); sql.Add('WHERE dbo.getNum(CYNO)= dbo.getnum(' + quotedstr(cyno.Text)); sql.Add(') FOR XML PATH('''')), 1, 1, '''') AS UserName '); sql.Add(' from CP_YDang where dbo.getnum(' + quotedstr(cyno.Text)); sql.Add(')=dbo.getnum(cyno)'); // ShowMessage(sql.Text); Open; end; if ADOQueryTemp.IsEmpty = False then begin if Application.MessageBox(PAnsiChar('已存在编号为' + ADOQueryTemp.fieldbyname('UserName').asstring + ',继续保存?'), '提示', 32 + 4) <> IDYES then Exit; // Application.MessageBox('已存在编号为' + ADOQueryTemp.fieldbyname('UserName').asstring, '提示', 0); end; end; if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); FCYID := ''; CYID.Text := ''; CYNo.Text := ''; CYName.Text := ''; CYLEIBIE.Text := '梭织'; CYYT.Text := ''; CYSFZR.Text := '不准入'; CYYXMF.Text := ''; CYMF.Text := ''; CYKZ.Text := ''; CYDHMF.Text := ''; CYDHKZ.Text := ''; CYSZ.Text := ''; CYMD.Text := ''; CYCF.Text := ''; CYPBCB.Text := ''; CYSHCB.Text := ''; CYRFCB.Text := ''; CYSXJS.Text := ''; CYYTJS.Text := ''; CYSXWS.Text := ''; CYYTWS.Text := ''; CYGMLD.Text := ''; CYSMLD.Text := ''; CYQMQQ.Text := ''; CYJFQL.Text := ''; CYNote.Text := ''; CYCPTZ.Text := ''; CYZCNote.Text := ''; CYRCNote.Text := ''; CYPBCB.Text := ''; CYSHCB.Text := ''; CYRFCB.Text := ''; // with ScrollBox1 do // begin // for i := 0 to ControlCount - 1 do // begin // if Controls[i].Tag = 2 then // begin // if Controls[i] is TLabel then // continue; // if Controls[i].Tag <> 2 then // continue; // Controls[i]. := ''; // end; // end; // end; // ModalResult := 1; end; end; procedure TfrmCPAddPN.CYColorKeyPress(Sender: TObject; var Key: Char); var c: Integer; begin if Key = '.' then begin for c := 1 to length(TEdit(Sender).text) do begin if Tedit(Sender).text[c] = '.' then Key := #0; end; end else if Key = #13 then PerForm(WM_NEXTDLGCTL, 0, 0) else if Key = #8 then Key := #8 else if (Key < '0') or (Key > '9') then Key := #0; end; procedure TfrmCPAddPN.CYKZExit(Sender: TObject); begin // if pos('GSM', trim(CYKZ.Text)) = 0 then // CYKZ.Text := trim(CYKZ.Text) + 'GSM'; end; procedure TfrmCPAddPN.CYMFExit(Sender: TObject); begin // if pos('CM', trim(CYMF.Text)) = 0 then // CYMF.Text := trim(CYMF.Text) + 'CM'; end; procedure TfrmCPAddPN.CYLEIBIEBtnClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'CPTYPE'; flagname := '类别'; if ShowModal = 1 then begin cyleibie.Text := Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmCPAddPN.CYNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmCPAddPN.cpnameChange(Sender: TObject); begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add('SELECT * FROM CP_Type where cpname=''' + Trim(cpname.Text) + ''''); Open; end; cpid.Text := Trim(ADOQueryTemp.fieldbyname('cpid').AsString); end; end.