📄 pub_dbfunction.pas
字号:
//****************************************************************************//
// //
// 产品 : EOL //
// 单元 : Pub_DBFunction //
// 版本 : 1.0 //
// 作者 :唐勇 //
// 日期 :2000-9-8 //
// //
// COPYRIGHT (C) 2000 START-TECH. //
// //
// 描述 :用于获取数据集的表头Label的函数,中间层用对ADodataset设置的函数 //
// 描述 :客户端用对Clientdataset的函数 //
// 算法 : //
// 接口 : //
// 其它 : //
// //
// ----------------------------------------------------------------------- //
// 修订时间 : //
// 修订人员 : //
// 修订内容 : //
//****************************************************************************//
unit Pub_DBFunction;
interface
uses ADODB,DBClient,SysUtils,DB;
{中间层用设置数据集表头中文名称的函数
输入:ObjName对象名,对象可以是表、存储过程、视图
ObjDataset需要设置表头的已打开数据集
PubDataset程序中需要使用的临时数据集,用于从系统表Sys_columns
取每列的中文名称
}
function AS_SetDatasetLabel(ObjName:string;ObjDataset,PubDataset:TADODataset):integer;
function CS_SetDatasetLabel(ObjName:string;ObjDataset,PubDataset:TClientDataset):integer;
function FillFieldSpaces(Field: TField;Value: string): string;
function OpenClosePrvPublic(mCds:TDataSet;mOpen:Boolean):boolean;
//ZNC:
function StrValueOfField(Value: string): string;
implementation
function AS_SetDatasetLabel(ObjName:string;ObjDataset,PubDataset:TADODataset):integer;
var
ctOld:TCommandType;
i:integer;
sColumnName,sColumnLabel:string;
begin
Result:=-1;
if Trim(ObjName)='' then exit;
if not Assigned(ObjDataset) then exit;
if not ObjDataset.Active then exit;
if not Assigned(PubDataset) then exit;
ctOld:=Pubdataset.CommandType;
try
OpenClosePrvPublic(PubDataset,false);
PubDataset.Close;
PubDataset.CommandType:=cmdText;
PubDataset.CommandText:='select Column_Name,Column_Caption from Sys_Columns '+
'where Object_Name='+''''+ObjName+'''';
OpenClosePrvPublic(PubDataset,true);
if PubDataset.RecordCount=0 then exit;
for i:=0 to ObjDataset.FieldCount-1 do
begin
sColumnName:=ObjDataset.Fields[i].FieldName;
if Trim(sColumnName)='' then Continue;
if Pubdataset.Locate('Column_Name',sColumnName,[]) then
begin
sColumnLabel:=(Pubdataset.FieldByName('Column_Caption').asstring);
if Trim(sColumnLabel)='' then Continue;
ObjDataset.Fields[i].DisplayLabel:=sColumnLabel;
end;
end;
Result:=0;
finally
OpenClosePrvPublic(PubDataset,false);
PubDataset.CommandType:=ctOld;
end;
end;
function CS_SetDatasetLabel(ObjName:string;ObjDataset,PubDataset:TClientDataset):integer;
var
i:integer;
sColumnName,sColumnLabel:string;
begin
Result:=-1;
if Trim(ObjName)='' then exit;
if not Assigned(ObjDataset) then exit;
if not ObjDataset.Active then exit;
if not Assigned(PubDataset) then exit;
try
OpenClosePrvPublic(PubDataset,false);
PubDataset.CommandText:='select Column_Name,Column_Caption from Sys_Columns '+
'where Object_Name='+''''+ObjName+'''';
OpenClosePrvPublic(PubDataset,true);
if PubDataset.RecordCount=0 then exit;
for i:=0 to ObjDataset.FieldCount-1 do
begin
sColumnName:=ObjDataset.Fields[i].FieldName;
if Trim(sColumnName)='' then Continue;
if Pubdataset.Locate('Column_Name',sColumnName,[]) then
begin
sColumnLabel:=(Pubdataset.FieldByName('Column_Caption').asstring);
if Trim(sColumnLabel)='' then Continue;
ObjDataset.Fields[i].DisplayLabel:=sColumnLabel;
end;
end;
Result:=0;
finally
OpenClosePrvPublic(PubDataset,false);
end;
end;
function FillFieldSpaces(Field: TField;Value: string): string;
function Spaces(Count: Integer): string;
var
i: Integer;
begin
Result := '';
for i := 0 to Count - 1 do
Result := Result + ' ';
end;
begin
Value:=Trim(Value);
Result :=Value+Spaces( Field.size - Length(Value));
end;
//for adsPublic error
function OpenClosePrvPublic(mCds:TDataSet;mOpen:Boolean):boolean;
begin
if mcds=nil then exit;
if mOpen then
begin
try
mCds.open;
except
mCds.Close;
end;
if not mCds.active then
mCds.Open;
end
else
begin
if mCds.active then
mCds.Close;
end;
end;
function StrValueOfField(Value: string): string;
begin
result := StringReplace(Value,'''','''''',[rfReplaceAll]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -