📄 udata.pas
字号:
unit uData;
interface
uses
SysUtils, Classes, DB, ADODB, Variants;
type
TDM = class(TDataModule)
acPer: TADOConnection;
aqSta: TADOQuery;
dsSta: TDataSource;
aqDept: TADOQuery;
dsDept: TDataSource;
aqExper: TADOQuery;
dsExper: TDataSource;
aqTrain: TADOQuery;
dsTrain: TDataSource;
aqStaf: TADOQuery;
aqExperf: TADOQuery;
aqTrainf: TADOQuery;
aqStat: TADOQuery;
dsFrt: TDataSource;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure OpenQuery(AADOQuery: TADOQuery; ASQlStr: string);
procedure ExecSQL(ASQlStr: string);
procedure OpenDept;
procedure OpenSta;
procedure OpenExper;
procedure OpenTrain;
procedure OpenStat(AWhr, AGrpStr: string);
procedure OpenStaf(AIds: string);
procedure OpenExperf;
procedure OpenTrainf;
procedure GetDeptText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure SetDeptText(Sender: TField; const Text: String);
procedure GetOtherText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure SetOtherText(Sender: TField; const Text: String);
end;
var
DM: TDM;
implementation
{$R *.dfm}
{ TdmPer }
procedure TDM.DataModuleCreate(Sender: TObject);
begin
if acPer.Connected = False then acPer.Open;
if not aqSta.Active then OpenSta;
aqSta.FieldByName('depid').OnGetText := GetDeptText;
aqSta.FieldByName('depid').OnSetText := SetDeptText;
end;
procedure TDM.DataModuleDestroy(Sender: TObject);
begin
if acPer.Connected then acPer.Close;
end;
procedure TDM.OpenQuery(AADOQuery: TADOQuery; ASqlStr: string);
begin
with AADOQuery do
begin
if Active then Close;
Connection := acPer;
LockType := ltBatchOptimistic;
SQL.Clear;
SQL.Text := ASqlStr;
Open;
end;
end;
procedure TDM.ExecSQL(ASQlStr: string);
var
aqExec: TADOQuery;
begin
aqExec := TADOQuery.Create(self);
with aqExec do
begin
Connection := acPer;
SQL.Clear;
SQL.Text := ASqlStr;
ExecSQL;
end;
aqExec.Free;
end;
procedure TDM.OpenDept;
begin
OpenQuery(aqDept, 'select id, dep from dept');
end;
procedure TDM.OpenSta;
begin
OpenQuery(aqSta, 'select * from staInfo order by id');
end;
procedure TDM.OpenExper;
begin
OpenQuery(aqExper, 'select * from wexper');
end;
procedure TDM.OpenTrain;
begin
OpenQuery(aqTrain, 'select * from train');
end;
{统计所需过程 Access不支持Group By All查询语句}
procedure TDM.OpenStat(AWhr, AGrpStr: string);
begin
OpenQuery(aqStat, 'select '+ aGrpStr +', count(id) as sCount from stainfo where 0=0 '
+ AWhr + ' group by '+ AGrpStr);
end;
{报表开始}
procedure TDM.OpenStaf(AIds: string);
begin
OpenQuery(aqStaf, 'select * from staInfo where id in (' + AIds + ')');
end;
procedure TDM.OpenExperf;
begin
OpenQuery(aqExperf, 'select * from wexper where sid=:id');
end;
procedure TDM.OpenTrainf;
begin
OpenQuery(aqTrainf, 'select * from train where sid=:id');
end;
{报表结束}
procedure TDM.GetDeptText(Sender: TField; var Text: String;
DisplayText: Boolean);
var
aqGetDep: TADOQuery;
begin
if not aqDept.Active then DM.OpenDept;
aqGetDep := TADOQuery.Create(Self);
aqGetDep.Clone(aqDept, ltReadOnly);
Text := VarToStr(aqGetDep.Lookup('id', Sender.AsInteger, 'dep'));
aqGetDep.Free;
end;
procedure TDM.SetDeptText(Sender: TField; const Text: String);
var
aqSetDep: TADOQuery;
begin
if not aqDept.Active then DM.OpenDept;
aqSetDep := TADOQuery.Create(Self);
aqSetDep.Clone(aqDept, ltReadOnly);
Sender.AsString := aqSetDep.Lookup('dep', Text, 'id');
aqSetDep.Free;
end;
procedure TDM.GetOtherText(Sender: TField; var Text: String;
DisplayText: Boolean);
var
aqGetOther: TADOQuery;
begin
aqGetOther := TADOQuery.Create(Self);
OpenQuery(aqGetOther, 'select * from oinfo');
Text := VarToStr(aqGetOther.Lookup('id', Sender.AsInteger, 'sname'));
aqGetOther.Free;
end;
procedure TDM.SetOtherText(Sender: TField; const Text: String);
var
aqSetOther: TADOQuery;
begin
aqSetOther := TADOQuery.Create(Self);
OpenQuery(aqSetOther, 'select * from oinfo');
Sender.AsString := aqSetOther.Lookup('sname', Text, 'id');
aqSetOther.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -