delphi7找不到TBDEClientDataSet控件的解决方案[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 mzyp2002 的 blog

unit bdeclientdataset;

interface

uses windows, sysutils, variants, classes, db, dbcommon, midas,
sqltimst, dbclient, dblocal, provider, dbtables;


type
{ tbdequery }

  tbdequery = class(tquery)
  private
    fkeyfields: string;
  protected
    function psgetdefaultorder: tindexdef; override;
  end;

{ tbdeclientdataset }
  tbdeclientdataset = class(tcustomcacheddataset)
  private
    fcommandtext: string;
    fcurrentcommand: string;
    fdataset: tbdequery;
    fdatabase: tdatabase;
    flocalparams: tparams;
    fstreamedactive: boolean;
    procedure checkmastersourceactive(mastersource: tdatasource);
    procedure setdetailsactive(value: boolean);
    function getconnection: tdatabase;
    function getdataset: tdataset;
    function getmastersource: tdatasource;
    function getmasterfields: string;
    procedure setconnection(value: tdatabase);
    procedure setdatasource(value: tdatasource);
    procedure setlocalparams;
    procedure setmasterfields(const value: string);
    procedure setparamsfromsql(const value: string);
    procedure setsql(const value: string);
  protected
    function getcommandtext: string; override;
    procedure loaded; override;
    procedure notification(acomponent: tcomponent; operation: toperation); override;
    procedure setactive(value: boolean); override;
    procedure setcommandtext(value: string); override;
  public
    constructor create(aowner: tcomponent); override;
    destructor destroy; override;
    procedure clonecursor(source: tcustomclientdataset; reset: boolean;
      keepsettings: boolean = false); override;
    procedure getfieldnames(list: tstrings); override;
    function getquotechar: string;
    property dataset: tdataset read getdataset;
  published
    property active;
    property commandtext: string read getcommandtext write setcommandtext;
    property dbconnection: tdatabase read getconnection write setconnection;
    property masterfields read getmasterfields write setmasterfields;
    property mastersource: tdatasource read getmastersource write setdatasource;
  end;
 
procedure register;

implementation

uses bdeconst, midconst;

type

{ tbdecdsparams }

  tbdecdsparams = class(tparams)
  private
    ffieldname: tstrings;
  protected
    procedure parseselect(sql: string);
  public
    constructor create(owner: tpersistent);
    destructor destroy; override;
  end;

constructor tbdecdsparams.create(owner: tpersistent);
begin
  inherited;
  ffieldname := tstringlist.create;
end;

destructor tbdecdsparams.destroy;
begin
  freeandnil(ffieldname);
  inherited;
end;

procedure tbdecdsparams.parseselect(sql: string);
const
  sselect = 'select';
var
  fwherefound: boolean;
  start: pchar;
  fname, value: string;
  sqltoken, cursection, lasttoken: tsqltoken;
  params: integer;
begin
  if pos(' ' + sselect + ' ', lowercase(string(pchar(sql)+8))) > 1 then exit;  // can't parse sub queries
  start := pchar(parsesql(pchar(sql), true));
  cursection := stunknown;
  lasttoken := stunknown;
  fwherefound := false;
  params := 0;
  repeat
    repeat
      sqltoken := nextsqltoken(start, fname, cursection);
      if sqltoken in [stwhere] then
      begin
        fwherefound := true;
        lasttoken := stwhere;
      end else if sqltoken in [sttablename] then
      begin
        { check for owner qualified table name }
        if start^ = '.' then
          nextsqltoken(start, fname, cursection);
      end else

本文关键:delphi7找不到TBDEClientDataSet控件的解决方案
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top