unit U_DxZDYHelp; 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, cxCheckBox, cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges, System.ImageList; type TfrmDxZDYHelp = 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; V1Sel: TcxGridDBColumn; 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); private procedure InitGrid(); { Private declarations } public flag,flagname,snote:string; fnote,forderno:Boolean; Mresult:string; { Public declarations } end; var frmDxZDYHelp: TfrmDxZDYHelp; implementation uses U_DataLink,U_Fun10, U_ZDYHelp; {$R *.dfm} procedure TfrmDxZDYHelp.FormCreate(Sender: TObject); begin cxGrid1.Align:=alClient; with ADOConnection1 do begin Connected:=false; ConnectionString:=DConString; Connected:=true; end; end; procedure TfrmDxZDYHelp.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=cahide; end; procedure TfrmDxZDYHelp.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; sql.Add('select * from KH_ZDY where Type='''+flag+''''); Open; end; SCreateCDS20(ADOQueryMain,ClientDataSet1); SInitCDSData20(ADOQueryMain,ClientDataSet1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmDxZDYHelp.TBAddClick(Sender: TObject); begin v1name.Options.Editing:=true; //TV1.OptionsData.Editing:=True; with ClientDataSet1 do begin Append; Post; end; end; procedure TfrmDxZDYHelp.TBSaveClick(Sender: TObject); var maxno:string; begin if ClientDataSet1.IsEmpty then Exit; try ADOQueryCmd.Connection.BeginTrans; {with ADOQueryCmd do begin close; sql.Clear; sql.Add('delete KH_ZDY where Type='''+Trim(Flag)+''''); SQL.Add('delete KH_ZDY where ZDYNo='''+Trim(Flag)+''''); sql.Add('insert into KH_ZDY(ZDYNo,ZDYName,Type) select :ZDYNo,:ZDYName,:Type '); Parameters.ParamByName('ZDYNo').Value:=Trim(flag); Parameters.ParamByName('ZDYName').Value:=Trim(flagname); Parameters.ParamByName('Type').Value:='Main'; ExecSQL; end;} with ADOQueryCmd do begin 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; Application.MessageBox('取最大编号失败!','提示',0); Exit; end; end else begin maxno:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); 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; if Trim(ClientDataSet1.FieldByName('ZDYName').AsString)='' then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('名称不能为空!','提示',0); Exit; end; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value:=Trim(maxno); ADOQueryCmd.FieldByName('ZDYName').Value:=ClientDataSet1.fieldbyname('ZDYName').AsString; ADOQueryCmd.FieldByName('note').Value:=Trim(ClientDataSet1.fieldbyname('note').AsString); //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString; ADOQueryCmd.FieldByName('Type').Value:=flag; ADOQueryCmd.FieldByName('valid').Value:='Y'; //ADOQueryCmd.FieldByName('sel').Value:=0; ADOQueryCmd.Post; ClientDataSet1.Edit; ClientDataSet1.FieldByName('ZDYNo').Value:=Trim(maxno); ClientDataSet1.Post; Next; end; end; end; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('保存成功!','提示',0); except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; V1Name.Options.Editing:=false; end; procedure TfrmDxZDYHelp.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 TfrmDxZDYHelp.TBCloseClick(Sender: TObject); begin ModalResult:=2; Close; end; procedure TfrmDxZDYHelp.FormShow(Sender: TObject); var fsj,fsj1:string; begin InitGrid(); fsj:=Trim(flag)+'01'; fsj1:=Trim(flagname)+'01'; {if ClientDataSet1.IsEmpty then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into KH_ZDY(ZDYNo,ZDYname,Type,note)'); sql.Add('select '''+Trim(fsj)+''''); sql.Add(','''+Trim(fsj1)+''''); SQL.Add(','''+Trim(flag)+''''); sql.Add(','''+Trim(snote)+''''); ExecSQL; end; InitGrid(); end;} frmDxZDYHelp.Caption:=Trim(flagname)+'<'+Trim(flag)+'>'; end; procedure TfrmDxZDYHelp.ToolButton1Click(Sender: TObject); var ftype:string; i:integer; begin i:=0; with ClientDataSet1 do begin Mresult:=''; First; DisableControls; while not eof do begin if fieldbyname('Ssel').AsBoolean then begin if (i=1) and (ftype<>trim(fieldbyname('note').AsString)) then begin application.MessageBox('备注信息不同,不能选择!','提示信息',0); EnableControls; exit; end; Mresult:=Mresult+trim(fieldbyname('zdyname').AsString)+';'; ftype:=trim(fieldbyname('note').AsString); i:=1; end; next; end; First; EnableControls; end; ModalResult:=1; end; procedure TfrmDxZDYHelp.TBEditClick(Sender: TObject); begin v1name.Options.Editing:=true; // TV1.OptionsData.Editing:=True; end; procedure TfrmDxZDYHelp.TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if v1name.Options.Editing=False then begin ToolButton1.Click; end; end; procedure TfrmDxZDYHelp.ZDYNameChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,ClientDataSet1); SInitCDSData20(ADOQueryMain,ClientDataSet1); end; end; end.