unit U_ColumnBandSet; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxCheckBox, ADODB, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, ComCtrls, ToolWin, ImgList, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, cxNavigator, dxDateRanges, System.ImageList; type TfrmColumnBandSet = class(TForm) ToolBar1: TToolBar; TBTP: TToolButton; TBClose: TToolButton; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; v2Column1: TcxGridDBColumn; ClientDataSet1: TClientDataSet; ClientDataSet2: TClientDataSet; DataSource1: TDataSource; DataSource2: TDataSource; ADOQuery1: TADOQuery; ADOQuery2: TADOQuery; ADOQuery3: TADOQuery; ADOQuery4: TADOQuery; ADOLink: TADOConnection; ThreeImgList: TImageList; ThreeColorBase: TcxStyleRepository; SHuangSe: TcxStyle; SkyBlue: TcxStyle; Default: TcxStyle; QHuangSe: TcxStyle; Red: TcxStyle; FontBlue: TcxStyle; TextSHuangSe: TcxStyle; FonePurple: TcxStyle; FoneClMaroon: TcxStyle; FoneRed: TcxStyle; RowColor: TcxStyle; handBlack: TcxStyle; cxBlue: TcxStyle; FenHongS: TcxStyle; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; DSName: TDataSource; CDSName: TClientDataSet; ADOQuery5: TADOQuery; v2Column2: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure TBTPClick(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure FormCreate(Sender: TObject); private { Private declarations } procedure SCreateCDS200(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); procedure SInitCDSData200(fromADO:TADOQuery;toCDS:TclientDataSet); function GetLSNo200(ADOQueryTmp:TADOQuery; var mMaxNo:string; mFlag:string; mTable:string; mlen:integer; mtype:integer=0):Boolean; public MKName:String; { Public declarations } end; var frmColumnBandSet: TfrmColumnBandSet; implementation uses U_DataLink; {$R *.dfm} procedure TfrmColumnBandSet.FormDestroy(Sender: TObject); begin frmColumnBandSet:=nil; end; procedure TfrmColumnBandSet.SCreateCDS200(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); var i:integer; mfieldName:string; mSize:integer; begin mfieldName:=''; mClientDataset.FieldDefs.Clear; with SADOQry do begin for i:=0 to fieldCount-1 do // begin if (Fields[i].DataType=ftString) and (Fields[i].Size=0) then begin msize:=1; end else msize:=Fields[i].Size; mfieldName:=trim(fields[i].FieldName); mClientDataset.FieldDefs.Add(mfieldName, Fields[i].DataType,msize); end; end; mClientDataset.FieldDefs.Add('Sflag',ftString,1); mClientDataset.FieldDefs.Add('Sindex',ftInteger,0); mClientDataset.FieldDefs.Add('Ssel',ftBoolean,0); mClientDataset.FieldDefs.Add('SDefNote',ftString,10); mClientDataset.Close; mClientDataset.CreateDataSet; end; procedure TfrmColumnBandSet.SInitCDSData200(fromADO:TADOQuery;toCDS:TclientDataSet); var i:integer; k:integer; begin if fromADO.IsEmpty then exit; fromADO.first; K:=1; try toCDS.DisableControls; toCDS.Filtered:=false; while not fromADO.Eof do begin with toCDS do begin Append; for i:=0 to fromADO.FieldCount-1 do begin fields[i].value:=fromADO.Fields[i].Value ; end; fieldByName('Sflag').AsString :='1'; fieldByName('Sindex').value :=k; fieldByName('Ssel').value :=false; inc(k); Post; end; fromADO.Next; end; if not toCDS.IsEmpty then begin toCDS.First ; end; finally toCDS.EnableControls; end; end; procedure TfrmColumnBandSet.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmColumnBandSet.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmColumnBandSet.FormShow(Sender: TObject); begin try ADOQuery1.DisableControls; with ADOQuery1 do begin Close; sql.Clear; SQL.Add('select * from SY_User where UserId<>''Admin'' '); Open; end; SCreateCDS200(ADOQuery1,ClientDataSet1); SInitCDSData200(ADOQuery1,ClientDataSet1); finally ADOQuery1.EnableControls; end; end; procedure TfrmColumnBandSet.TBTPClick(Sender: TObject); var MaxNo:String; begin if ClientDataSet1.IsEmpty then Exit; if ClientDataSet1.Locate('SSel',True,[])=False then Exit; try ADOQuery3.Connection.BeginTrans; if ClientDataSet1.Locate('SSel',True,[])=True then begin with ClientDataSet1 do begin First; while not eof do begin if ClientDataSet1.FieldByName('SSel').AsBoolean=True then begin with ADOQuery3 do begin Close; sql.Clear; sql.Add('Delete Table_Column where '); sql.Add(' Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+''''); ExecSQL; end; with ADOQuery3 do begin Close; sql.Clear; sql.Add('select * from Table_Column where 1<>1 '); open; end; ClientDataSet2.DisableControls; with ClientDataSet2 do begin first; while not Eof do begin with ADOQuery3 do begin Append; if GetLSNo200(ADOQuery4,MaxNo,'CL','Table_Column',4,1)=False then begin ADOQuery3.Connection.RollbackTrans; Application.MessageBox('取最大号失败!','提示',0); Exit; end; FieldByName('TCID').Value:=Trim(MaxNo); FieldByName('Owner').Value:=Trim(ClientDataSet1.fieldbyname('UserId').AsString); //SSetSaveDataCDSNew(ADOQuery3,Tv2,ClientDataSet2,'Table_Column',0); FieldByName('CxTabName').Value:=Trim(ClientDataSet2.fieldbyname('CxTabName').AsString); FieldByName('CxColName').Value:=Trim(ClientDataSet2.fieldbyname('CxColName').AsString); if ClientDataSet2.fieldbyname('TCNotVisble').AsBoolean=True then FieldByName('TCNotVisble').Value:=1 else FieldByName('TCNotVisble').Value:=0; FieldByName('ColName').Value:=Trim(ClientDataSet2.fieldbyname('ColName').AsString); FieldByName('OrderNo').Value:=ClientDataSet2.fieldbyname('OrderNo').Value; FieldByName('FillTime').Value:=Now; Post; end; Next; end; end; ClientDataSet2.EnableControls; end; Next; end; end; if ClientDataSet1.Locate('SSel',True,[])=True then begin with ClientDataSet1 do begin First; while not eof do begin if ClientDataSet1.FieldByName('SSel').AsBoolean=True then begin with ADOQuery3 do begin Close; sql.Clear; sql.Add(' Delete Table_Name where'); sql.Add(' Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+''''); ExecSQL; end; with ADOQuery3 do begin Close; sql.Clear; sql.Add('select * from Table_Name where 1<>1 '); open; end; CDSName.DisableControls; with CDSName do begin First; while not eof do begin with ADOQuery3 do begin Append; FieldByName('Owner').Value:=Trim(ClientDataSet1.fieldbyname('UserId').AsString); FieldByName('CxTabName').Value:=Trim(CDSName.fieldbyname('CxTabName').AsString); if CDSName.fieldbyname('TCNotVisble').AsBoolean=True then FieldByName('TCNotVisble').Value:=1 else FieldByName('TCNotVisble').Value:=0; if CDSName.fieldbyname('InPut').AsBoolean=True then FieldByName('InPut').Value:=1 else FieldByName('InPut').Value:=0; FieldByName('FillTime').Value:=Now; FieldByName('OrderNo').Value:=CDSName.fieldbyname('OrderNo').Value; Post; end; next; end; end; CDSName.EnableControls; end; Next; end; end; end; end; ADOQuery3.Connection.CommitTrans; Application.MessageBox('保存成功!','提示',0); except ADOQuery3.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; function TfrmColumnBandSet.GetLSNo200(ADOQueryTmp:TADOQuery; var mMaxNo:string; mFlag:string; mTable:string; mlen:integer; mtype:integer=0):Boolean; begin try with ADOQueryTmp do begin Close; sql.Clear ; sql.Add('exec Get_SY_MaxBH '); sql.Add(' '+quotedStr(mFlag)); sql.Add(','+quotedStr(mTable)); sql.Add(','+intTostr(mlen)); sql.Add(','+intTostr(mtype)); //ShowMessage(SQL.Text); Open; if RecordCount>0 then begin mMaxNo:=trim(fieldByName('MaxBH').AsString) ; if mMaxNo<>'' then result:=true else Result:=false; end else begin result:=false; end; end; if not Result then application.MessageBox(Pchar('无法生成流水号('+mflag+')'),'提示信息',MB_ICONINFORMATION); Except result:=false; application.MessageBox(Pchar('无法生成流水号('+mflag+')'),'提示信息',MB_ICONINFORMATION); end; end; procedure TfrmColumnBandSet.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin ADOQuery2.DisableControls; with ADOQuery2 do begin Close; sql.Clear; sql.Add('select * from Table_Column where '); sql.Add(' Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+''''); Open; end; if ADOQuery2.IsEmpty=False then begin with ADOQuery2 do begin Close; sql.Clear; sql.Add('select * from Table_Column where '); sql.Add(' Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+''''); sql.Add(' order by OrderNo '); Open; end; SCreateCDS200(ADOQuery2,ClientDataSet2); SInitCDSData200(ADOQuery2,ClientDataSet2); end else begin while ClientDataSet2.Locate('TCNotVisble',True,[]) do begin with ClientDataSet2 do begin Edit; FieldByName('TCNotVisble').Value:=0; Post; end; end; end; ADOQuery2.EnableControls; ADOQuery5.DisableControls; with ADOQuery5 do begin Close; sql.Clear; sql.Add('select * from Table_Name where '); sql.Add(' Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+''''); Open; end; if ADOQuery5.IsEmpty=False then begin with ADOQuery5 do begin Close; sql.Clear; sql.Add('select * from Table_Name where '); sql.Add(' Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+''''); sql.Add(' order by OrderNo '); Open; end; SCreateCDS200(ADOQuery5,CDSName); SInitCDSData200(ADOQuery5,CDSName); end else begin while CDSName.Locate('TCNotVisble',True,[]) do begin with CDSName do begin Edit; FieldByName('TCNotVisble').Value:=0; FieldByName('InPut').Value:=0; Post; end; end; end; ADOQuery5.EnableControls; end; procedure TfrmColumnBandSet.FormCreate(Sender: TObject); begin with ADOLink do begin if not Connected then begin Connected:=false; ConnectionString:=DConString; //LoginPrompt:=false; Connected:=true; end; end; end; end.