349 lines
9.3 KiB
ObjectPascal
349 lines
9.3 KiB
ObjectPascal
unit U_ColumnSet;
|
||
|
||
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,
|
||
cxNavigator, dxDateRanges, System.ImageList;
|
||
|
||
type
|
||
TfrmColumnSet = 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;
|
||
cxGridDBColumn2: 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;
|
||
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
|
||
frmColumnSet: TfrmColumnSet;
|
||
|
||
implementation
|
||
uses
|
||
U_DataLink;
|
||
{$R *.dfm}
|
||
|
||
procedure TfrmColumnSet.FormDestroy(Sender: TObject);
|
||
begin
|
||
frmColumnSet:=nil;
|
||
end;
|
||
procedure TfrmColumnSet.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 TfrmColumnSet.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 TfrmColumnSet.TBCloseClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
procedure TfrmColumnSet.FormClose(Sender: TObject;
|
||
var Action: TCloseAction);
|
||
begin
|
||
Action:=caFree;
|
||
end;
|
||
|
||
procedure TfrmColumnSet.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 TfrmColumnSet.TBTPClick(Sender: TObject);
|
||
var
|
||
MaxNo:String;
|
||
begin
|
||
if ClientDataSet1.Locate('SSel',True,[])=False then Exit;
|
||
try
|
||
ADOQuery3.Connection.BeginTrans;
|
||
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 CxTabName='''+Trim(ClientDataSet2.fieldbyname('CxTabName').AsString)+'''');
|
||
sql.Add(' and 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;
|
||
|
||
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('ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ',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);
|
||
FieldByName('TCNotVisble').Value:=ClientDataSet2.fieldbyname('TCNotVisble').Value;
|
||
FieldByName('ColName').Value:=Trim(ClientDataSet2.fieldbyname('ColName').AsString);
|
||
Post;
|
||
end;
|
||
Next;
|
||
end;
|
||
|
||
end;
|
||
end;
|
||
Next;
|
||
end;
|
||
end;
|
||
ADOQuery3.Connection.CommitTrans;
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>','<27><>ʾ',0);
|
||
except
|
||
ADOQuery3.Connection.RollbackTrans;
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ',0);
|
||
end;
|
||
end;
|
||
function TfrmColumnSet.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('<27><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>('+mflag+')'),'<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONINFORMATION);
|
||
|
||
Except
|
||
result:=false;
|
||
application.MessageBox(Pchar('<27><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>('+mflag+')'),'<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONINFORMATION);
|
||
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TfrmColumnSet.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 CxTabName='''+Trim(ClientDataSet2.fieldbyname('CxTabName').AsString)+'''');
|
||
sql.Add(' and Owner='''+Trim(ClientDataSet1.fieldbyname('UserId').AsString)+'''');
|
||
Open;
|
||
end;
|
||
if ADOQuery2.IsEmpty=False then
|
||
begin
|
||
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;
|
||
end;
|
||
|
||
procedure TfrmColumnSet.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.
|