unit U_JT1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ToolWin, ComCtrls, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, ImgList, StdCtrls, ExtCtrls, cxTextEdit, cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxCheckBox, dxBarBuiltInMenu, cxPC; type TfrmJT1 = class(TForm) TV1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; V1Code: TcxGridDBColumn; V1Name: TcxGridDBColumn; ToolBar1: TToolBar; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; DataSource1: TDataSource; ClientDataSet1: TClientDataSet; TBAdd: TToolButton; TBSave: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ToolButton1: TToolButton; TBEdit: TToolButton; V1Note: TcxGridDBColumn; V1OrderNo: TcxGridDBColumn; ADOConnection1: TADOConnection; Panel1: TPanel; Label1: TLabel; ZDYName: TEdit; ThreeImgList: TImageList; cxGridPopupMenu1: TcxGridPopupMenu; V1ZdyFlag: TcxGridDBColumn; V1HelpType: TcxGridDBColumn; V1note1: TcxGridDBColumn; TV1Column1: TcxGridDBColumn; cxTabControl1: TcxTabControl; ToolButton2: TToolButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBAddClick(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure ZDYNameChange(Sender: TObject); procedure V1NamePropertiesEditValueChanged(Sender: TObject); procedure V1OrderNoPropertiesEditValueChanged(Sender: TObject); procedure V1NotePropertiesEditValueChanged(Sender: TObject); procedure V1Column1PropertiesEditValueChanged(Sender: TObject); procedure V1HelpTypePropertiesEditValueChanged(Sender: TObject); procedure V1note1PropertiesEditValueChanged(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure ToolButton2Click(Sender: TObject); private procedure InitGrid(); procedure SetStatus(); { Private declarations } public flag, flagname, snote, MainType: string; fnote, forderno, fZdyFlag, ViewFlag, fnote1, fHelpType, FZDYStr1: Boolean; PPSTE: integer; { Public declarations } end; var frmJT1: TfrmJT1; implementation uses U_DataLink, U_Fun10, U_ZDYHelp; {$R *.dfm} procedure TfrmJT1.SetStatus(); begin // TV1Column1.Visible := false; ToolButton1.Visible := false; TBAdd.Visible := false; TBDel.Visible := false; TBEdit.Visible := false; ToolButton2.Visible := false; TBClose.Visible := false; case cxTabControl1.TabIndex of 0: begin // TV1Column1.Visible := true; ToolButton1.Visible := true; TBAdd.Visible := true; TBDel.Visible := true; TBEdit.Visible := true; TBClose.Visible := true; end; 1: begin // TV1Column1.Visible := false; ToolButton2.Visible := true; TBClose.Visible := true; end; end; end; procedure TfrmJT1.FormCreate(Sender: TObject); begin try cxGrid1.Align := alClient; with ADOConnection1 do begin Connected := false; ConnectionString := DConString; //ConnectionString:=''; Connected := true; end; except {if Application.MessageBox('网络连接失败,是否要再次连接?','提示',32+4)=IDYES then begin try with ADOConnection1 do begin Connected:=false; ConnectionString:=DConString; //ConnectionString:='23242'; Connected:=true; end; except end; end; } frmJT1.Free; end; end; procedure TfrmJT1.FormClose(Sender: TObject; var Action: TCloseAction); begin ZDYName.SetFocus; Action := caFree; end; procedure TfrmJT1.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; // sql.Add('select A.*,ZJM=dbo.getPinYin(A.ZdyName) from KH_ZDY A where A.zdyzt=''0'' and A.Type=''' + flag + ''''); sql.Add('select A.*,ZJM=dbo.getPinYin(A.ZdyName) from KH_ZDY A where A.Type=''' + flag + ''''); if Trim(MainType) <> '' then begin sql.Add(' and A.MainType=''' + Trim(MainType) + ''''); end; if cxTabControl1.TabIndex = 0 then begin sql.Add(' and A.zdyzt=''0'' '); end else begin sql.Add(' and A.zdyzt=''1'' '); end; Open; end; SCreateCDS20(ADOQueryMain, ClientDataSet1); SInitCDSData20(ADOQueryMain, ClientDataSet1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmJT1.TBAddClick(Sender: TObject); var i: Integer; begin ZDYName.SetFocus; TV1.OptionsData.Editing := True; TV1.OptionsSelection.CellSelect := True; for i := 0 to 5 do begin with ClientDataSet1 do begin Append; ClientDataSet1.FieldByName('ssel').AsBoolean := FALSE; Post; end; end; end; procedure TfrmJT1.TBSaveClick(Sender: TObject); var maxno: string; begin if ClientDataSet1.IsEmpty then Exit; ZDYName.SetFocus; if ClientDataSet1.Locate('ZDYName', null, []) then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; if ClientDataSet1.Locate('ZDYName', '', []) then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from KH_ZDY where ZdyNo=''' + Trim(flag) + ''''); open; end; if ADOQueryTemp.IsEmpty then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from KH_ZDY where 1=2'); open; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(flag); ADOQueryCmd.FieldByName('ZDYName').Value := trim(flagname); ADOQueryCmd.FieldByName('Type').Value := 'Main'; ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); ADOQueryCmd.Post; { sql.Add('insert into KH_ZDY(ZDYNo,ZDYName,Type,MainType) select :ZDYNo,:ZDYName,:Type,:MainType '); Parameters.ParamByName('ZDYNo').Value:=Trim(flag); Parameters.ParamByName('ZDYName').Value:=Trim(flagname); Parameters.ParamByName('Type').Value:='Main'; Parameters.ParamByName('MainType').Value:=Trim(MainType); ExecSQL; } end; end; with ADOQueryCmd do begin ClientDataSet1.DisableControls; with ClientDataSet1 do begin First; while not eof do begin if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxno, 'SY', 'KH_ZDY', 3, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('取最大编号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; with ADOQueryTemp do begin Close; sql.Clear; sql.add('select * from KH_Zdy where Type=''' + Trim(flag) + ''''); if Trim(MainType) <> '' then SQL.Add(' and MainType=''' + Trim(MainType) + ''''); sql.Add(' and ZdyName=''' + Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) + ''''); Open; end; if ADOQueryTemp.IsEmpty = False then begin if ADOQueryTemp.RecordCount > 1 then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; if Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) = '' then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end else begin if Trim(ADOQueryTemp.fieldbyname('ZdyNo').AsString) <> Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; end; end; with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('delete KH_ZDY where ZDYNO=''' + Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_ZDY where 1<>1'); Open; end; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(maxno); ADOQueryCmd.FieldByName('ZDYName').Value := ClientDataSet1.fieldbyname('ZDYName').Value; ADOQueryCmd.FieldByName('note').Value := Trim(snote); //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString; ADOQueryCmd.FieldByName('Type').Value := flag; ADOQueryCmd.FieldByName('valid').Value := 'Y'; if Trim(MainType) <> '' then ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); //ADOQueryCmd.FieldByName('sel').Value:=0; ADOQueryCmd.Post; ClientDataSet1.Edit; ClientDataSet1.FieldByName('ZDYNo').Value := Trim(maxno); ClientDataSet1.Post; Next; end; end; ClientDataSet1.EnableControls; end; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('保存成功!', '提示', 0); // TV1.OptionsData.Editing := False; // TV1.OptionsSelection.CellSelect := False; // TV1.OptionsData.Editing := true; // TV1.OptionsSelection.CellSelect := true; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmJT1.TBDelClick(Sender: TObject); begin if ClientDataSet1.IsEmpty then Exit; if (Trim(ClientDataSet1.FieldByName('ZDYNo').AsString) <> '') or (Trim(ClientDataSet1.FieldByName('ZDYname').AsString) <> '') then begin if application.MessageBox('确定要删除吗?', '提示信息', 1) = 2 then exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete KH_ZDY where ZDYNo=''' + Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString) + ''''); SQL.Add(' and Type=''' + Trim(flag) + ''''); ExecSQL; end; end; ClientDataSet1.Delete; end; procedure TfrmJT1.TBCloseClick(Sender: TObject); begin ModalResult := 2; ZDYName.SetFocus; WriteCxGrid('自定义' + Trim(flag), TV1, '自定义数据'); Close; end; procedure TfrmJT1.FormShow(Sender: TObject); var fsj, fsj1: string; begin TV1.OptionsData.Editing := True; TV1.OptionsSelection.CellSelect := True; InitGrid(); fsj := Trim(flag) + '01'; fsj1 := Trim(flagname) + '01'; ReadCxGrid('自定义' + Trim(flag), TV1, '自定义数据'); frmJT1.Caption := Trim(flagname); V1Note.Visible := fnote; V1ZdyFlag.Visible := fZdyFlag; V1OrderNo.Visible := forderno; v1note1.Visible := fnote1; V1HelpType.Visible := fHelpType; if ViewFlag = True then begin TBAdd.Visible := False; TBSave.Visible := False; TBDel.Visible := False; TBEdit.Visible := False; // Label2.Visible := False; end; end; procedure TfrmJT1.ToolButton1Click(Sender: TObject); begin // ZDYName.SetFocus; // // WriteCxGrid('自定义'+Trim(flag),TV1,'自定义数据'); // ModalResult := 1; if ClientDataSet1.IsEmpty then exit; ModalResult := 1; end; procedure TfrmJT1.TBEditClick(Sender: TObject); begin TV1.OptionsData.Editing := True; TV1.OptionsSelection.CellSelect := True; end; procedure TfrmJT1.TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin // if TV1.OptionsData.Editing = False then // begin // ModalResult := 1; // end; end; procedure TfrmJT1.ZDYNameChange(Sender: TObject); var fsj: string; begin if Trim(ZDYName.Text) <> '' then begin fsj := ' zdyname like ''' + '%' + Trim(ZDYName.Text) + '%' + '''' + ' or Note like ''' + '%' + Trim(ZDYName.Text) + '%' + '''' + ' or ZJM like ''' + '%' + Trim(ZDYName.Text) + '%' + ''''; end; if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, fsj); SCreateCDS20(ADOQueryMain, ClientDataSet1); SInitCDSData20(ADOQueryMain, ClientDataSet1); end; end; procedure TfrmJT1.V1NamePropertiesEditValueChanged(Sender: TObject); var maxno, mvalue: string; begin mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin //Application.MessageBox('名称不能为空!','提示',0); Exit; end; with ClientDataSet1 do begin Edit; FieldByName('ZdyName').Value := Trim(mvalue); //Post; end; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from KH_ZDY where ZdyNo=''' + Trim(flag) + ''''); open; end; if ADOQueryTemp.IsEmpty then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from KH_ZDY where 1=2'); open; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(flag); ADOQueryCmd.FieldByName('ZDYName').Value := trim(flagname); ADOQueryCmd.FieldByName('Type').Value := 'Main'; ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); ADOQueryCmd.Post; end; end; with ADOQueryCmd do begin //ClientDataSet1.DisableControls; //with ClientDataSet1 do //begin //First; //while not eof do //begin if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxno, 'SY', 'KH_ZDY', 3, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('取最大编号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; with ADOQueryTemp do begin Close; sql.Clear; sql.add('select * from KH_Zdy where Type=''' + Trim(flag) + ''''); if Trim(MainType) <> '' then SQL.Add(' and MainType=''' + Trim(MainType) + ''''); sql.Add(' and ZdyName=''' + Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) + ''''); sql.Add(' and note=''' + Trim(ClientDataSet1.fieldbyname('note').AsString) + ''''); Open; end; if ADOQueryTemp.IsEmpty = False then begin if ADOQueryTemp.RecordCount > 1 then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; if Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) = '' then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end else begin if Trim(ADOQueryTemp.fieldbyname('ZdyNo').AsString) <> Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; end; end; with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('delete KH_ZDY where ZDYNO=''' + Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_ZDY where 1<>1'); Open; end; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(maxno); ADOQueryCmd.FieldByName('ZDYName').Value := ClientDataSet1.fieldbyname('ZDYName').AsString; ADOQueryCmd.FieldByName('note').Value := Trim(snote); ADOQueryCmd.FieldByName('zdyzt').Value := '0'; //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString; ADOQueryCmd.FieldByName('Type').Value := flag; ADOQueryCmd.FieldByName('valid').Value := 'Y'; if Trim(MainType) <> '' then ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); //ADOQueryCmd.FieldByName('sel').Value:=0; ADOQueryCmd.Post; ClientDataSet1.Edit; ClientDataSet1.FieldByName('ZDYNo').Value := Trim(maxno); //ClientDataSet1.Post; // Next; //end; //end; // ClientDataSet1.EnableControls; end; ADOQueryCmd.Connection.CommitTrans; //Application.MessageBox('保存成功!','提示',0); //TV1.OptionsData.Editing:=False; //TV1.OptionsSelection.CellSelect:=False; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmJT1.V1OrderNoPropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with ClientDataSet1 do begin Edit; FieldByName('OrderNo').Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set OrderNo=' + mvalue); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmJT1.V1NotePropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with ClientDataSet1 do begin Edit; FieldByName('Note').Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set Note=''' + Trim(mvalue) + ''''); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmJT1.V1Column1PropertiesEditValueChanged(Sender: TObject); var mvalue: string; fieldname: string; begin fieldname := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName; if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with ClientDataSet1 do begin Edit; FieldByName(fieldname).Value := StrToInt(mvalue); Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set ' + fieldname + '=' + Trim(mvalue)); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmJT1.V1HelpTypePropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with ClientDataSet1 do begin Edit; FieldByName('HelpType').Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set HelpType=''' + Trim(mvalue) + ''''); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmJT1.V1note1PropertiesEditValueChanged(Sender: TObject); var mvalue: string; fieldname: string; begin fieldname := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName; if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; with ClientDataSet1 do begin Edit; FieldByName(fieldname).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set ' + fieldname + '=' + quotedstr(Trim(mvalue))); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmJT1.cxTabControl1Change(Sender: TObject); begin SetStatus(); InitGrid(); end; procedure TfrmJT1.ToolButton2Click(Sender: TObject); begin try ClientDataSet1.DisableControls; ADOQueryTemp.Connection.BeginTrans; with ClientDataSet1 do begin First; while not Eof do begin if ClientDataSet1.FieldByName('SSel').AsBoolean = True then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('Update JYOrder_Sub Set ZT=''停用'' '); sql.Add('where JTH=''' + Trim(ClientDataSet1.fieldbyname('ZDYName').AsString) + ''''); sql.Add('Update KH_ZDY Set ZDYZT=''0'' '); sql.Add('where ZDYName=''' + Trim(ClientDataSet1.fieldbyname('ZDYName').AsString) + ''''); ExecSQL; end; // Edit; // FieldByName('ZT').Value := '启用'; // Post; end; Next; end; end; ADOQueryTemp.Connection.CommitTrans; ClientDataSet1.EnableControls; application.MessageBox('数据保存成功!', '提示信息'); // Panel9.Visible := false; // TBRafresh.Click; except ADOQueryTemp.Connection.RollbackTrans; ClientDataSet1.EnableControls; application.MessageBox('数据保存失败!', '提示信息', 0); end; end; end.