RtTool/Delphi7/开发档案/马国钢开发代码/ThreeFun/helpForm/U_StuffHelp_db.pas

311 lines
8.4 KiB
ObjectPascal
Raw Normal View History

2025-01-08 11:55:07 +08:00
unit U_StuffHelp_db;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, cxFilter,
cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxControls, cxGridCustomView, cxGrid, cxInplaceContainer, cxDBTL,
cxTLData, ComCtrls, ToolWin, ADODB, ImgList,StrUtils, ExtCtrls, DBClient,
Menus, cxGridCustomPopupMenu, cxGridPopupMenu;
type
TfrmStuffHelp_db = class(TForm)
ToolBar2: TToolBar;
TOk: TToolButton;
TBClose: TToolButton;
cxDBTreeList1: TcxDBTreeList;
cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn;
cxGrid1: TcxGrid;
tv1: TcxGridDBTableView;
tv1Code: TcxGridDBColumn;
tv1Name: TcxGridDBColumn;
DBGrid1Level1: TcxGridLevel;
GroupBox1: TGroupBox;
ADOQueryDept: TADOQuery;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
cxStyle2: TcxStyle;
cxStyle_gridRow: TcxStyle;
cxStyle_gridFoot: TcxStyle;
cxStyle_gridHead: TcxStyle;
cxStyle_gridGroupBox: TcxStyle;
cxStyle_yellow: TcxStyle;
cxStyle_Red: TcxStyle;
ADOQueryHelp: TADOQuery;
DataSource2: TDataSource;
Label1: TLabel;
Edt_name: TEdit;
ImageList1: TImageList;
cxStyleTree: TcxStyle;
Label2: TLabel;
Edt_Code: TEdit;
Splitter1: TSplitter;
DS_sel: TDataSource;
CDS_sel: TClientDataSet;
cxGrid2: TcxGrid;
tv2: TcxGridDBTableView;
cxGridDBColumn1: TcxGridDBColumn;
cxGridDBColumn2: TcxGridDBColumn;
cxGridDBColumn3: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
CDS_selcode: TStringField;
CDS_selName: TStringField;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
tv1gwName: TcxGridDBColumn;
tv1duties: TcxGridDBColumn;
tv1kqDeptName: TcxGridDBColumn;
cxGridPopupMenu1: TcxGridPopupMenu;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure TOkClick(Sender: TObject);
procedure tv1DblClick(Sender: TObject);
procedure Edt_nameChange(Sender: TObject);
procedure cxDBTreeList1Click(Sender: TObject);
procedure tv2DblClick(Sender: TObject);
procedure N1Click(Sender: TObject);
private
procedure InitTree();
procedure DoQuery();
procedure FilterData(strdepotno,strcode,strname:string);
procedure InitTree20();
public
fFrameNo:string;
fFrameName:string;
fIsYwy:boolean;
fWhereStr:string;
end;
var
frmStuffHelp_db: TfrmStuffHelp_db;
implementation
uses
U_global;
{$R *.dfm}
///////////////////////////////////////////////////////////
//////<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////
procedure TfrmStuffHelp_db.FilterData(strdepotno,strcode,strname:string);
var
filterStr:string;
begin
filterStr:='';
if trim(strdepotno)<>'' then
filterStr:=filterStr+' and dept like '+quotedstr(trim(strdepotno)+'%');
if trim(strcode)<>'' then
filterStr:=filterStr+' and code like '+quotedstr('%'+trim(strcode)+'%');
if trim(strname)<>'' then
filterStr:=filterStr+' and name like '+quotedstr('%'+trim(strname)+'%');
try
ADOQueryHelp.DisableControls ;
if trim(filterStr)='' then
begin
ADOQueryHelp.Filtered:=false;
ADOQueryHelp.EnableControls;
exit;
end;
filterStr:=trim(RightBStr(filterStr,length(filterStr)-5));
// showmessage(filterStr);
with ADOQueryHelp do
begin
filtered:=false;
filter:=filterStr;
filtered:=true;
end;
finally
ADOQueryHelp.EnableControls;
end;
end;
//////////////////////////////////////////////////////
procedure TfrmStuffHelp_db.InitTree();
var
strsql,strwhere:string;
begin
strsql:=' SELECT distinct frameNo,frameTop,frameName,Framelevel '+
' from YC_frame '+
' where Framelevel=''0'' and Valid=''Y'' '+
' union '+
' SELECT distinct B.frameNo,B.frameTop,B.frameName,Framelevel '+
' FROM YC_stuff A '+
' INNER JOIN YC_frame B on A.dept=B.frameNo and B.Valid=''Y'' ';
strwhere:=' where A.Valid=''Y'' ';
if fIsYwy then
strwhere:=strwhere+' and A.YWYFlag=''Y'' ';
if trim(fFrameNo)<>'' then
strwhere:=strwhere+' and A.dept='+quotedstr(trim(fFrameNo));
if trim(fFrameName)<>'' then
strwhere:=strwhere+' and B.frameName like '+quotedstr('%'+trim(fFrameName)+'%');
strsql:=strsql+ strwhere;
with ADOQueryDept do
begin
close;
sql.Clear ;
sql.Add( strsql);
Open;
end;
cxDBTreeList1.FullExpand;
DoQuery();
end;
procedure TfrmStuffHelp_db.InitTree20();
var
strsql,strwhere:string;
begin
strsql:=' select * from Yc_Frame order by framelevel ';
if trim(fFrameNo)<>'' then
strwhere:=strwhere+' and frameno='+quotedstr(trim(fFrameNo));
if trim(fFrameName)<>'' then
strwhere:=strwhere+' and frameName like '+quotedstr('%'+trim(fFrameName)+'%');
strsql:=strsql+ strwhere;
with ADOQueryDept do
begin
close;
sql.Clear ;
sql.Add( strsql);
Open;
end;
cxDBTreeList1.Items[0].Expand(false);
DoQuery();
end;
procedure TfrmStuffHelp_db.FormShow(Sender: TObject);
begin
//InitTree();
InitTree20();
end;
procedure TfrmStuffHelp_db.FormCreate(Sender: TObject);
begin
cxGrid2.Align :=alclient;
with ADOConnection1 do
begin
Connected:=false;
ConnectionString:=gConString;
Connected:=true;
end;
cds_sel.Close;
cds_sel.CreateDataSet ;
end;
//////////////////////////////////////////////////
//
//////////////////////////////////////////////////
procedure TfrmStuffHelp_db.DoQuery();
var
strwhere:string;
begin
if fIsYwy then
strwhere:=strwhere+' and A.YWYFlag=''Y''';
if trim(fFrameNo)<>'' then
strwhere:=strwhere+' and A.dept='+quotedstr(trim(fFrameNo));
try
ADOQueryHelp.DisableControls ;
with ADOQueryHelp do
begin
close;
sql.Clear ;
sql.Add('select A.code,A.Name,A.dept,A.ywyflag,A.duties,'); //A.workerPostion,
sql.Add('kqDeptName=(select Name from XC_Custcode where code=B.kqdept),');
sql.Add('gwName=(select name from xc_custcode where code=A.gangwei and flag=''gangwei'')');
sql.Add('from YC_stuff A');
sql.Add('left join YC_kqDeptStuff B on A.code=B.userId');
sql.Add('where A.Valid=''Y''');
sql.Add(strwhere);
sql.Add(fWhereStr);
sql.Add('and A.Name<>''''');
sql.Add('order by A.Code');
Open;
end;
finally
ADOQueryHelp.EnableControls ;
end;
end;
procedure TfrmStuffHelp_db.TBCloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmStuffHelp_db.TOkClick(Sender: TObject);
begin
if ADOQueryHelp.IsEmpty then
begin
ModalResult:=-1
end
else
ModalResult:=1;
end;
procedure TfrmStuffHelp_db.tv1DblClick(Sender: TObject);
begin
with CDS_sel do
begin
if locate('code', trim(ADOQueryHelp.fieldByName('code').AsString),[]) then exit;
Append;
fieldByName('code').Value :=trim(ADOQueryHelp.fieldByName('code').AsString);
fieldByName('Name').Value :=trim(ADOQueryHelp.fieldByName('Name').AsString);
Post;
end;
end;
procedure TfrmStuffHelp_db.Edt_nameChange(Sender: TObject);
begin
FilterData('',edt_code.Text,Edt_name.Text);
end;
procedure TfrmStuffHelp_db.cxDBTreeList1Click(Sender: TObject);
begin
if ADOQueryDept.IsEmpty then exit;
if trim(ADOQueryDept.FieldByName('Framelevel').AsString)='0' then
FilterData('','','')
else
FilterData(ADOQueryDept.FieldByName('Frameno').AsString,'','');
end;
procedure TfrmStuffHelp_db.tv2DblClick(Sender: TObject);
begin
CDS_sel.Delete ;
end;
procedure TfrmStuffHelp_db.N1Click(Sender: TObject);
begin
try
ADOQueryHelp.DisableControls ;
CDS_sel.DisableControls ;
ADOQueryHelp.First ;
while not ADOQueryHelp.Eof do
begin
with CDS_sel do
begin
if locate('code', trim(ADOQueryHelp.fieldByName('code').AsString),[]) then
begin
ADOQueryHelp.Next ;
continue;
end;
Append;
fieldByName('code').Value :=trim(ADOQueryHelp.fieldByName('code').AsString);
fieldByName('Name').Value :=trim(ADOQueryHelp.fieldByName('Name').AsString);
Post;
end;
ADOQueryHelp.Next ;
end;
finally
ADOQueryHelp.EnableControls;
CDS_sel.EnableControls ;
end;
end;
end.