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

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

?? ibxdatadriverdesigneh.pas

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

unit IBXDataDriverDesignEh;

{$I EHLIB.INC}

interface

uses Windows, SysUtils, Classes, Controls, DB,
{$IFDEF EH_LIB_6} Variants, {$ENDIF}
{$IFDEF EH_LIB_5} Contnrs, {$ENDIF}
  ToolCtrlsEh, DBCommon, MemTableDataEh, DataDriverEh, IBDatabase,
  IBQuery, IBTable, IBStoredProc, SQLDriverEditEh, IBXDataDriverEh,
  ComCtrls, MemTableEh, Forms, UpdateSQLEditEh, Dialogs
//design-time  ,Ibdatabaseedit
{$IFDEF DESIGNTIME}
  {$IFDEF CIL}
   ,Borland.Vcl.Design.Ibdatabaseedit
  {$ELSE}
   ,Ibdatabaseedit
  {$ENDIF}
{$ENDIF}
  ;

type

{ IIBXDesignDataBaseEh }

  IIBXDesignDataBaseEh = interface
  ['{9E53BD33-4E5E-414F-9E4A-4980A8F7637A}']
    function GetDatabase: TIBDatabase;
  end;

{ TIBXDesignDataBaseEh }

  TIBXDesignDataBaseEh = class(TDesignDataBaseEh, IIBXDesignDataBaseEh)
  private
    FTablesMT: TMemTableEh;
    FColumnsMT: TMemTableEh;
    FDatabase: TIBDatabase;
    FTransaction: TIBTransaction;
    FTreeNodeMan: TCustomDBService;
    FDBService: TCustomDBService;
    FUpdateObjectsList: TStringList;
    FApplicationDatabase: TIBDatabase;
    procedure SetApplicationDatabase(const Value: TIBDatabase);
  protected
    function GetConnected: Boolean; override;
    procedure SetConnected(const Value: Boolean); override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  public
    constructor Create;
    destructor Destroy; override;
    function GetEngineName: String; override;
    function ServerTypeName: String;
    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 GetDatabase: TIBDatabase;
    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(TreeView: TTreeView): Boolean;
    function SupportCustomSQLDataDriver: Boolean; override;
    function GetFieldList(const TableName: string; DataSet: TDataSet): Boolean; override;
    function GetSpecParamsList: String; override;
    function GetCustomDBService: TCustomDBService; override;
    function GetIncrementObjectsList: TStrings; override;
    procedure EditDatabaseParams; override;
    property ApplicationDatabase: TIBDatabase read FApplicationDatabase write SetApplicationDatabase;
  end;

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

procedure RegisterIBXAccessEngines;
procedure UnregisterIBXAccessEngines;

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: TIBXDataDriverEh): TComponent;
var
  DesignDataBase: TIBXDesignDataBaseEh;
//  SourceIBDatabase: TIBDatabase;
begin
  DesignDataBase :=  TIBXDesignDataBaseEh.Create;
//  SourceIBDatabase := TIBDatabase.Create(nil);
  if DataDriver.Database <> nil then
  begin
    DesignDataBase.FDatabase.DataBaseName := DataDriver.Database.DataBaseName;
    DesignDataBase.FDatabase.Params := DataDriver.Database.Params;
    DesignDataBase.FDatabase.SQLDialect := DataDriver.Database.SQLDialect;
    DesignDataBase.ApplicationDatabase := DataDriver.Database;
  end;
{$IFDEF DESIGNTIME}
    EditIBDatabase(DesignDataBase.FDatabase);
{$ENDIF}
//    SourceIBDatabase.FDBEDataBase.DatabaseName := GetUnicalDataBaseName;
  Result := DesignDataBase;
end;

procedure SetDesignIBXDataBaseProcEh(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(TIBXDataDriverEh(DataDriver));
  end;
end;

procedure RegisterIBXAccessEngines;
begin
  RegisterDesignDataBuilderProcEh(TIBXDataDriverEh, SetDesignIBXDataBaseProcEh);
  RegisterAccessEngine('IBX', TIBXAccessEngineEh.Create);
end;

procedure UnregisterIBXAccessEngines;
begin
  UnregisterDesignDataBuilderProcEh(TIBXDataDriverEh);
  UnregisterAccessEngine('IBX');
//  UnregisterDBServiceEngine(Engine, BDEUniService);
end;

function GetServerName(IBDatabase: TIBDatabase; var ServerName: String): Boolean;
begin
  ServerName := 'INTERBASE';//AnsiUpperCase(IBDatabase.DriverName);
  Result := True;
end;

{
var
  DataBaseInc: Integer = 0;

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

{ TIBXDesignDataBaseEh }

function TIBXDesignDataBaseEh.BuildObjectTree(List: TList): Boolean;
begin
  Result := False;
//  TreeView.Items.Clear;
  if ServerTypeName = 'INFORMIX' then
//    Result := BuildInformixObjectTree(TreeView)
  else if ServerTypeName = 'INTERBASE' then
    Result := BuildInterbaseObjectTree2(List)
  else
    Result := False;
end;

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

constructor TIBXDesignDataBaseEh.Create;
begin
  inherited Create;
  FDatabase := TIBDatabase.Create(Application);
  FTransaction := TIBTransaction.Create(Application);
  FTransaction.DefaultDatabase := FDatabase;
  FTablesMT := TMemTableEh.Create(nil);
  FColumnsMT := TMemTableEh.Create(nil);
  FDBService := TInterbaseDBService.Create(Self)
end;

destructor TIBXDesignDataBaseEh.Destroy;
begin
  if not (csDestroying in Application.ComponentState) then
    FDatabase.Free;
  if not (csDestroying in Application.ComponentState) then
    FTransaction.Free;
  FTablesMT.Free;
  FColumnsMT.Free;
  FTreeNodeMan.Free;
  FreeAndNil(FDBService);
  FreeAndNil(FUpdateObjectsList);
  inherited Destroy;
end;

function TIBXDesignDataBaseEh.CreateDesignCopy(RTDataDriver: TCustomSQLDataDriverEh): TCustomSQLDataDriverEh;
begin
  Result := TIBXDataDriverEh.Create(nil);
  Result.SelectCommand := RTDataDriver.SelectCommand;
  Result.UpdateCommand := RTDataDriver.UpdateCommand;
  Result.InsertCommand := RTDataDriver.InsertCommand;
  Result.DeleteCommand := RTDataDriver.DeleteCommand;
  Result.GetrecCommand := RTDataDriver.GetrecCommand;
  TIBXDataDriverEh(Result).SpecParams := TIBXDataDriverEh(RTDataDriver).SpecParams;
//  TIBXDataDriverEh(Result).Database := FDatabase;
end;

function TIBXDesignDataBaseEh.DesignDataBaseConnetionEqual(DataDriver: TCustomSQLDataDriverEh): Boolean;
begin
  Result := False;
  if DataDriver is TIBXDataDriverEh then
  begin
    if TIBXDataDriverEh(DataDriver).Database <> nil then
      Result := (ApplicationDatabase = TIBXDataDriverEh(DataDriver).Database);
  end;
end;

function TIBXDesignDataBaseEh.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 := TIBQuery.Create(nil);
          with Cursor as TIBQuery do
          begin
            Database := FDatabase;
            SQL := Command.CommandText;
            Params := Command.GetParams;
            if CommandType = cthSelectQuery then
              Open
            else
            begin
              ExecSQL;
              Result := RowsAffected;
            end;
          end;
        end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品高清不卡| 国产自产2019最新不卡| 久久久久久免费网| 欧美成人猛片aaaaaaa| 精品国一区二区三区| 久久久一区二区三区捆绑**| 一区二区日韩av| 香蕉久久夜色精品国产使用方法| 亚洲444eee在线观看| zzijzzij亚洲日本少妇熟睡| 99re8在线精品视频免费播放| 91最新地址在线播放| 精品88久久久久88久久久| 亚洲一区二区在线视频| 蜜桃一区二区三区在线| 国产一区中文字幕| 91伊人久久大香线蕉| 欧美日产在线观看| 国产情人综合久久777777| 中文字幕一区av| 日韩国产在线一| 日本成人在线电影网| 一本色道久久综合精品竹菊| 国产高清亚洲一区| 欧美一卡二卡在线观看| 99精品桃花视频在线观看| 日韩一区二区免费电影| 日韩女优毛片在线| 日韩一区和二区| 亚洲成在人线免费| 日本高清不卡在线观看| 国产精品亲子乱子伦xxxx裸| 26uuu色噜噜精品一区二区| 国产精品网站在线观看| 国内精品伊人久久久久av一坑| 欧美高清激情brazzers| 日韩精品中文字幕在线不卡尤物| 亚洲国产成人91porn| 91在线视频18| 国产精品免费看片| 成人自拍视频在线观看| 国产sm精品调教视频网站| 色婷婷精品大视频在线蜜桃视频| 久久精品夜色噜噜亚洲aⅴ| 亚洲综合色区另类av| 色av成人天堂桃色av| 国产免费成人在线视频| 成人午夜免费av| 国产亚洲欧美激情| 国模少妇一区二区三区| 国产拍欧美日韩视频二区| 国产高清久久久久| 国产精品福利一区| 日本vs亚洲vs韩国一区三区二区| 国产盗摄精品一区二区三区在线| 久久女同精品一区二区| 国产成人av一区二区| 国产精品每日更新| 93久久精品日日躁夜夜躁欧美| 亚洲男同1069视频| 国产一区二区精品久久| 国产人伦精品一区二区| k8久久久一区二区三区| 又紧又大又爽精品一区二区| 国产精品亚洲一区二区三区妖精 | 国产精品综合久久| 国产三级欧美三级| 亚洲午夜av在线| 日韩午夜电影在线观看| 国产成人在线视频网站| 亚洲男人的天堂在线aⅴ视频| 欧美美女一区二区三区| 狠狠色狠狠色合久久伊人| 国产精品久久免费看| 成人aaaa免费全部观看| 9191久久久久久久久久久| 国产精品福利一区| 欧美精品丝袜久久久中文字幕| 日韩国产高清在线| 国产片一区二区| 日韩精品一区二区三区老鸭窝| 国产成人综合亚洲91猫咪| 亚洲一线二线三线久久久| 91精品中文字幕一区二区三区| 国产一区二区成人久久免费影院| 亚洲视频免费在线观看| 成人av网址在线| 日本麻豆一区二区三区视频| 国产日韩v精品一区二区| 在线看一区二区| 国产精品性做久久久久久| 一区二区成人在线观看| 久久精品免视看| 欧美美女激情18p| 国产高清精品网站| 五月天视频一区| 91麻豆精品国产| 国产精品99久久久久久有的能看| 亚洲成人激情av| 国产无人区一区二区三区| 日韩欧美二区三区| 欧美午夜宅男影院| www.av精品| 国产精品香蕉一区二区三区| 日韩成人一级大片| 亚洲男同1069视频| 国产精品国模大尺度视频| 精品对白一区国产伦| 欧美视频在线播放| 色综合中文字幕国产 | av高清不卡在线| 久久99这里只有精品| 国产日产欧美一区二区三区| 日韩一区二区视频| 欧美久久免费观看| 色哟哟欧美精品| 国产99久久久国产精品免费看| 亚洲成av人片观看| 国产精品成人一区二区三区夜夜夜 | 一区二区三区成人在线视频| 国产三级欧美三级日产三级99| 在线不卡一区二区| 欧美日韩夫妻久久| 欧美人狂配大交3d怪物一区| 欧美色网一区二区| 色综合视频一区二区三区高清| av成人免费在线| 99久久婷婷国产综合精品电影| 成人福利视频网站| 成人免费视频视频| 91小宝寻花一区二区三区| 成人黄色在线看| 99热这里都是精品| 97久久精品人人爽人人爽蜜臀| 99久久综合色| 色94色欧美sute亚洲线路一久| 一本大道久久a久久综合婷婷| 国产mv日韩mv欧美| 成人一区二区在线观看| 91在线视频播放地址| 一本色道久久综合亚洲91| 色综合中文字幕国产 | 国产精品毛片a∨一区二区三区 | 国产日韩一级二级三级| 26uuu国产在线精品一区二区| 欧美精品一区二区在线播放| 欧美xxx久久| 国产日产亚洲精品系列| 国产精品久久久久影院老司| 亚洲视频小说图片| 午夜久久久久久| 视频在线观看91| 韩国毛片一区二区三区| 成人看片黄a免费看在线| 欧美视频在线一区| 欧美大片拔萝卜| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 精品视频在线看| 欧美高清精品3d| 精品国产髙清在线看国产毛片| 国产欧美视频一区二区| 一级做a爱片久久| 毛片不卡一区二区| 99re成人精品视频| 欧美一卡二卡三卡| 国产精品第一页第二页第三页| 亚洲午夜久久久久久久久电影院 | 国产综合色在线| 色综合久久综合| 日韩精品一区二区三区四区 | 5月丁香婷婷综合| 国产日韩欧美精品综合| 一区二区三区久久久| 国产综合色精品一区二区三区| 91美女片黄在线| 日韩欧美久久一区| 亚洲欧美在线aaa| 国产一区91精品张津瑜| 成人精品免费看| 日韩亚洲欧美一区| 亚洲免费观看在线视频| 精品一区二区三区不卡| 欧洲亚洲国产日韩| 国产视频一区二区在线观看| 午夜视频在线观看一区二区| 国产成人av一区二区三区在线 | 婷婷中文字幕综合| 高清av一区二区| 日韩视频不卡中文| 亚洲国产精品自拍| 粉嫩一区二区三区在线看| 91免费版在线| 亚洲国产精品激情在线观看| 免费高清成人在线| 欧美人妇做爰xxxⅹ性高电影| 亚洲欧美一区二区久久 | 日日噜噜夜夜狠狠视频欧美人| 不卡的av电影| 国产亚洲欧美在线| 久久99精品一区二区三区三区|