亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbxdatadriverdesigneh.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************}
{                                                       }
{                     EhLib v4.0                        }
{                                                       }
{         TDBXDesignDataBaseEh (Build 4.1.21)           }
{                                                       }
{     Copyright (c) 2004-2005 by Dmitry V. Bolshakov    }
{                                                       }
{*******************************************************}

unit DBXDataDriverDesignEh;

{$I EHLIB.INC}

interface

{$IFDEF CIL}
{$R DBXDataDriverEh.TDBXDataDriverEh.bmp}
{$ENDIF}

uses Windows, SysUtils, Classes, Controls, DB,
{$IFDEF EH_LIB_6} Variants, {$ENDIF}
{$IFDEF EH_LIB_5} Contnrs, {$ENDIF}
  ToolCtrlsEh, DBCommon, MemTableDataEh, DataDriverEh, SqlExpr,
  SQLDriverEditEh, DBXDataDriverEh, ComCtrls, MemTableEh,
//design-time
{$IFDEF DESIGNTIME}
{$IFDEF CIL}
  Borland.Vcl.Design.DBConnEd,
  Borland.Vcl.Design.ComponentDesigner,
{$ELSE}
  DBConnEd,
  ComponentDesigner,
{$ENDIF}
{$ENDIF}
  UpdateSQLEditEh, Forms, Dialogs;

type

{ IDBXDesignDataBaseEh }

  IDBXDesignDataBaseEh = interface
  ['{9E53BD33-4E5E-414F-9E4A-4980A8F7637A}']
    function GetSQLConnection: TSQLConnection;
  end;

{ TDBXDesignDataBaseEh }

  TDBXDesignDataBaseEh = class(TDesignDataBaseEh, IDBXDesignDataBaseEh)
  private
    FTablesMT: TMemTableEh;
    FColumnsMT: TMemTableEh;
    FSQLConnection: TSQLConnection;
    FTreeNodeMan: TCustomDBService;
    FDBService: TCustomDBService;
    FApplicationConnection: TSQLConnection;
    procedure SetApplicationConnection(const Value: TSQLConnection);
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    function GetConnected: Boolean; override;
    procedure SetConnected(const Value: Boolean); override;
  public
    constructor Create;
    destructor Destroy; override;
    function GetEngineName: String; override;
    function GetDBServiceClass: TCustomDBServiceClass;
    function GetServerTypeName: String; override;
    function CreateDesignCopy(RTDataDriver: TCustomSQLDataDriverEh): TCustomSQLDataDriverEh; override;
    function DesignDataBaseConnetionEqual(DataDriver: TCustomSQLDataDriverEh): Boolean; override;
    function Execute(Command: TCustomSQLCommandEh; var Cursor: TDataSet; var FreeOnEof: Boolean): Integer; override;
    function GetSQLConnection: TSQLConnection;
    function BuildUpdates(DataDriver: TCustomSQLDataDriverEh): Boolean; override;
    function CreateReader(SQL: String; FParams: TParamsArr): TDataSet; override;
    function BuildObjectTree(List: TList): Boolean; override;
//    function BuildInformixObjectTree(TreeView: TTreeView): Boolean;
    function BuildInterbaseObjectTree2(List: TList): Boolean;
    function BuildOracleObjectTree(List: TList): Boolean;
    function SupportCustomSQLDataDriver: Boolean; override;
    function GetFieldList(const TableName: string; DataSet: TDataSet): Boolean; override;
    procedure EditDatabaseParams; override;
    property ApplicationConnection: TSQLConnection read FApplicationConnection write SetApplicationConnection;
  end;

  TDBXAccessEngineEh = class(TAccessEngineEh)
    function AccessEngineName: String; override;
//    function CreateDesignDataBase(DataDriver: TCustomSQLDataDriverEh): TDesignDataBaseEh; override;
    function CreateDesignDataBase(DataDriver: TCustomSQLDataDriverEh;
      DBServiceClass: TCustomDBServiceClass; DataBaseName: String): TDesignDataBaseEh; override;
  end;

procedure RegisterDBXAccessEngines;

procedure Register;

implementation

uses
{$IFDEF DESIGNTIME}
	MemTableDesignEh,
{$IFDEF CIL}
  Borland.Vcl.Design.DesignIntf,
{$ELSE}
  {$IFDEF EH_LIB_6}
     DesignIntf,
  {$ELSE} //EH_LIB_6
      DsgnIntf,
  {$ENDIF}
  DBReg,
{$ENDIF}
{$ENDIF}
DesignConnectionListEh;

function CreateDesignDataBase(DataDriver: TDBXDataDriverEh): TComponent;
var
  DesignDataBase: TDBXDesignDataBaseEh;
//  SourceSQLConnection: TSQLConnection;
begin
  DesignDataBase :=  TDBXDesignDataBaseEh.Create;
//  SourceSQLConnection := TSQLConnection.Create(nil);
  if DataDriver.SQLConnection <> nil then
  begin
    DesignDataBase.FSQLConnection.ConnectionName := DataDriver.SQLConnection.ConnectionName;
    DesignDataBase.FSQLConnection.DriverName := DataDriver.SQLConnection.DriverName;
    DesignDataBase.FSQLConnection.GetDriverFunc := DataDriver.SQLConnection.GetDriverFunc;
    DesignDataBase.FSQLConnection.KeepConnection := DataDriver.SQLConnection.KeepConnection;
    DesignDataBase.FSQLConnection.LibraryName := DataDriver.SQLConnection.LibraryName;
    DesignDataBase.FSQLConnection.LoadParamsOnConnect := DataDriver.SQLConnection.LoadParamsOnConnect;
    DesignDataBase.FSQLConnection.LoginPrompt := DataDriver.SQLConnection.LoginPrompt;
    DesignDataBase.FSQLConnection.Params := DataDriver.SQLConnection.Params;
    DesignDataBase.FSQLConnection.TableScope := DataDriver.SQLConnection.TableScope;
    DesignDataBase.FSQLConnection.VendorLib := DataDriver.SQLConnection.VendorLib;
    DesignDataBase.FSQLConnection.Connected := True;
    DesignDataBase.ApplicationConnection := DataDriver.SQLConnection;
  end;
//    SourceSQLConnection.FDBEDataBase.DatabaseName := GetUnicalDataBaseName;
{$IFDEF DESIGNTIME}
    EditConnection(DesignDataBase.FSQLConnection);
{$ENDIF}
  Result := DesignDataBase;
end;

procedure SetDesignDBXDataBaseProcEh(DataDriver: TCustomSQLDataDriverEh);
var
  i: Integer;
  DesignDataBase: TComponent;
begin
  if DataDriver.DesignDataBase = nil then
  begin
    for i := 0 to GetDesignDataBaseList.Count-1 do
      if TDesignDataBaseEh(GetDesignDataBaseList[i]).DesignDataBaseConnetionEqual(DataDriver) then
      begin
        DataDriver.DesignDataBase := TComponent(GetDesignDataBaseList[i]);
        Exit;
      end;

    if GetDesignDataBaseList.Count > 0 then
    begin
      DesignDataBase := SelectDesignConnectionListEh(DesignDataBaseList);
      if (DesignDataBase <> nil) and (DesignDataBase <> DataDriver.DesignDataBase) then
        DataDriver.DesignDataBase := DesignDataBase;
    end else
      DataDriver.DesignDataBase := CreateDesignDataBase(TDBXDataDriverEh(DataDriver));
  end;
end;

procedure RegisterDBXAccessEngines;
begin
  RegisterDesignDataBuilderProcEh(TDBXDataDriverEh, SetDesignDBXDataBaseProcEh);
  RegisterAccessEngine('DBX', TDBXAccessEngineEh.Create);
end;

procedure UnregisterDBXAccessEngines;
begin
  UnregisterDesignDataBuilderProcEh(TDBXDataDriverEh);
  UnregisterAccessEngine('DBX');
end;

function GetServerName(SQLConnection: TSQLConnection; var ServerName: String): Boolean;
begin
  ServerName := AnsiUpperCase(SQLConnection.DriverName);
  Result := True;
end;

var
  DataBaseInc: Integer = 0;

function GetUnicalDataBaseName: String;
begin
  Inc(DataBaseInc);
  Result := 'DBXDataDriverEhDataBaseName' + IntToStr(DataBaseInc);
end;

{ TDBXDesignDataBaseEh }

function TDBXDesignDataBaseEh.BuildObjectTree(List: TList): Boolean;
var
  NList: Tlist;
begin
  Result := False;
  if GetDBServiceClass <> nil then
    FDBService := GetDBServiceClass.Create(Self);
  if FDBService <> nil then
  begin
//    if FTreeNodeMan <> nil then
//      FTreeNodeMan.Free;
//    FTreeNodeMan := TInterbaseDBService.Create(Self);
    NList := FDBService.CreateRootNodes;
    List.Assign(NList, laCopy);
    NList.Free;
    Result := True;
  end;

  Exit;
//  TreeView.Items.Clear;
  if GetServerTypeName = 'INFORMIX' then
//    Result := BuildInformixObjectTree(TreeView)
  else if GetServerTypeName = 'INTERBASE' then
    Result := BuildInterbaseObjectTree2(List)
  else
    Result := False;
end;

function TDBXDesignDataBaseEh.BuildUpdates(DataDriver: TCustomSQLDataDriverEh): Boolean;
begin
  Result := EditDataDriverUpdateSQL(DataDriver as TCustomSQLDataDriverEh);// UpdateSQLEditEh
end;

constructor TDBXDesignDataBaseEh.Create;
begin
  inherited Create;
  FSQLConnection := TSQLConnection.Create(Application);
  FTablesMT := TMemTableEh.Create(nil);
  FColumnsMT := TMemTableEh.Create(nil);
end;

destructor TDBXDesignDataBaseEh.Destroy;
begin
  if not (csDestroying in Application.ComponentState) then
    FSQLConnection.Free;
  FTablesMT.Free;
  FColumnsMT.Free;
  FTreeNodeMan.Free;
  inherited Destroy;
end;

function TDBXDesignDataBaseEh.CreateDesignCopy(RTDataDriver: TCustomSQLDataDriverEh): TCustomSQLDataDriverEh;
begin
  Result := TDBXDataDriverEh.Create(nil);
  Result.SelectCommand := RTDataDriver.SelectCommand;
  Result.UpdateCommand := RTDataDriver.UpdateCommand;
  Result.InsertCommand := RTDataDriver.InsertCommand;
  Result.DeleteCommand := RTDataDriver.DeleteCommand;
  Result.GetrecCommand := RTDataDriver.GetrecCommand;
  TDBXDataDriverEh(Result).SpecParams := TDBXDataDriverEh(RTDataDriver).SpecParams;
  TDBXDataDriverEh(Result).SQLConnection := FSQLConnection;
end;

function TDBXDesignDataBaseEh.DesignDataBaseConnetionEqual(DataDriver: TCustomSQLDataDriverEh): Boolean;
begin
  Result := False;
  if DataDriver is TDBXDataDriverEh then
  begin
    if TDBXDataDriverEh(DataDriver).SQLConnection <> nil then
      Result := (ApplicationConnection = TDBXDataDriverEh(DataDriver).SQLConnection);
  end;
end;

function TDBXDesignDataBaseEh.Execute(Command: TCustomSQLCommandEh; var Cursor: TDataSet; var FreeOnEof: Boolean): Integer;
begin
  Result := -1;
  FreeOnEof := True;
  with Command do
    case CommandType of
      cthSelectQuery, cthUpdateQuery:
        begin
          Cursor := TSQLQuery.Create(nil);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜电影在线观看| 欧美日韩国产高清一区二区三区| 一区二区三区欧美日| 日韩欧美一卡二卡| av动漫一区二区| 久久精品国产亚洲高清剧情介绍| 亚洲欧美一区二区三区极速播放| 26uuu国产日韩综合| 欧美日免费三级在线| 不卡视频在线看| 国产一区二区在线电影| 午夜久久久久久| 一区二区三区蜜桃| 亚洲国产精品成人综合| 欧美精品一区二区三区很污很色的| 日本电影亚洲天堂一区| 成人一级片在线观看| 麻豆精品视频在线观看| 亚洲国产精品一区二区www | 国产精品久久毛片a| 日韩一区二区在线播放| 欧美性猛片xxxx免费看久爱| 99精品视频在线观看免费| 国产福利精品一区二区| 青青草91视频| 日韩福利电影在线观看| 亚洲国产一区二区在线播放| 亚洲精品精品亚洲| 尤物av一区二区| 一区二区在线看| 亚洲精品一二三四区| 国产区在线观看成人精品| 欧美不卡一二三| 精品国产乱码久久久久久老虎| 欧美一区国产二区| 欧美一级淫片007| 91精品欧美综合在线观看最新 | 国产在线国偷精品免费看| 免费成人在线影院| 麻豆国产一区二区| 六月婷婷色综合| 国产一区二区久久| 国产成人一级电影| 国产suv精品一区二区三区| 国产一区二区精品久久99| 国产精品99久| 成人午夜在线播放| jiyouzz国产精品久久| 91免费观看视频在线| 色综合一个色综合亚洲| 91久久精品一区二区| 欧美日韩中文另类| 91精品国产一区二区三区蜜臀| 91麻豆精品国产91久久久资源速度 | 国产视频在线观看一区二区三区| 久久久精品国产免大香伊| 国产日韩亚洲欧美综合| 国产精品久久影院| 一区二区三区在线播| 亚洲成a人片在线观看中文| 日本欧美一区二区三区| 国产伦精品一区二区三区在线观看| 岛国精品一区二区| 94-欧美-setu| 欧美高清性hdvideosex| 久久日一线二线三线suv| 中文字幕久久午夜不卡| 亚洲一区二区三区国产| 久久精品国产亚洲a| 成人av电影免费观看| 欧美日韩高清在线| 精品免费国产二区三区| 国产精品久久久久久久第一福利| 一区二区三区产品免费精品久久75| 奇米777欧美一区二区| 国产精品一二一区| 色哟哟亚洲精品| 日韩欧美亚洲一区二区| 中文字幕欧美区| 亚洲国产日产av| 国产经典欧美精品| 欧美日韩国产系列| 国产蜜臀97一区二区三区| 一区二区三区四区在线免费观看 | 久久久久久久久久久电影| 国产精品看片你懂得| 日韩在线一区二区三区| 国产91对白在线观看九色| 欧美日韩色综合| 国产精品视频你懂的| 日本vs亚洲vs韩国一区三区| 成人精品在线视频观看| 日韩一区和二区| 亚洲一级二级三级在线免费观看| 国产精品资源站在线| 精品视频免费在线| 国产精品久久久久永久免费观看 | 天天影视网天天综合色在线播放| 国产精品白丝jk黑袜喷水| 在线播放国产精品二区一二区四区| 国产精品色哟哟| 久久99深爱久久99精品| 色偷偷久久一区二区三区| 久久久av毛片精品| 免费在线看成人av| 在线观看日韩一区| 国产精品国产三级国产普通话三级 | 国产成人精品免费网站| 91精品国产综合久久国产大片| 亚洲色图19p| 播五月开心婷婷综合| ww亚洲ww在线观看国产| 秋霞午夜av一区二区三区| 在线一区二区观看| 亚洲欧洲精品一区二区精品久久久 | 91一区一区三区| 国产精品乱人伦| 国产一区二区三区在线观看免费视频 | 国产精品一区在线| 欧美xxx久久| 秋霞影院一区二区| 在线播放亚洲一区| 午夜精品久久久久久久久久久| 91丨porny丨户外露出| 国产精品污www在线观看| 国产美女精品一区二区三区| 日韩免费电影网站| 天天免费综合色| 欧美精品色一区二区三区| 夜夜嗨av一区二区三区中文字幕| 91免费观看视频| 夜夜精品视频一区二区| 欧美羞羞免费网站| 亚洲在线一区二区三区| 欧美在线免费观看亚洲| 一区二区三区av电影| 欧美影院午夜播放| 亚洲综合色成人| 欧美精品在线观看一区二区| 婷婷一区二区三区| 777精品伊人久久久久大香线蕉| 亚洲二区视频在线| 91精品国产高清一区二区三区蜜臀 | 精品sm在线观看| 国产夫妻精品视频| 国产精品嫩草久久久久| 99久久综合99久久综合网站| 一色桃子久久精品亚洲| 91麻豆福利精品推荐| 一级日本不卡的影视| 欧美午夜寂寞影院| 免费在线观看日韩欧美| 26uuuu精品一区二区| 不卡一卡二卡三乱码免费网站| 亚洲日本一区二区| 欧美性xxxxx极品少妇| 日韩成人伦理电影在线观看| 欧美成人乱码一区二区三区| 国产98色在线|日韩| 亚洲视频一区在线| 欧美日产在线观看| 精品一区二区三区在线播放| 国产精品视频一二| 欧美午夜宅男影院| 黄一区二区三区| 综合久久给合久久狠狠狠97色| 欧美无砖砖区免费| 激情综合网av| 亚洲免费资源在线播放| 欧美一区二区黄| 成人午夜电影久久影院| 亚洲午夜免费福利视频| 欧美电视剧在线看免费| gogo大胆日本视频一区| 亚洲成人高清在线| 国产日韩欧美激情| 欧美综合在线视频| 国产精一品亚洲二区在线视频| 亚洲精品你懂的| 久久综合九色综合久久久精品综合| 99久久婷婷国产综合精品电影| 亚洲第一狼人社区| 欧美国产精品专区| 91精品国产综合久久福利软件| av一区二区不卡| 美女爽到高潮91| 一区二区三区视频在线看| 精品日韩欧美一区二区| 91黄视频在线| 国产成人在线看| 免费在线看一区| 亚洲国产精品尤物yw在线观看| 久久久www成人免费毛片麻豆| 欧美精品v国产精品v日韩精品| 成人网页在线观看| 免费久久99精品国产| 一区二区三区四区国产精品| 国产日韩欧美亚洲| 日韩丝袜美女视频| 欧美性极品少妇|