RTFormwork/public10/ThreeFun/Form/U_ColumnSet.pas
“ddf” f2a94cb7b0 1
2024-11-15 17:18:34 +08:00

349 lines
9.3 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.