⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pub_dbfunction.pas

📁 实达企业在线EOL源码
💻 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 + -