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

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

?? sqldriverediteh.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 5 頁
字號:

    function ShowPopup(Source: TObject; Coord: TPoint; Params: TServicePopupParams): Integer;
    procedure TableEditorDrop(Sender, Source: TObject; X, Y: Integer);
    procedure OnPopupClick(Sender: TObject);

    property OnNodeDragDrop: TDragDropEvent read FOnNodeDragDrop write FOnNodeDragDrop;
    property NodeDropMenuParams: TServicePopupParams read FNodeDropMenuParams write FNodeDropMenuParams;

    property NodesSQLClassName: String read FNodesSQLClassName write FNodesSQLClassName;
    property MasterTemplateName: String read FMasterTemplateName write FMasterTemplateName;
    property NodesMemTableName: String read fNodesMemTableName write FNodesMemTableName;
//    property Params: array of Variant read FParams write FParams;
    property ObjIdFieldName: String read FObjIdFieldName write FObjIdFieldName;
    property InTreeTextFieldName: String read FInTreeTextFieldName write FInTreeTextFieldName;
    property HasNodes: Boolean read FHasNodes write FHasNodes;
    property NodesFilter: String read FNodesFilter write FNodesFilter;
//    property NodesFieldsInGrid: String read FNodesFieldsInGrid write FNodesFieldsInGrid;
    property ColumnAttributesStr: String read FColumnAttributesStr write SetColumnAttributes;
    property AdditionalLoadSQL: String read FAdditionalLoadSQL write FAdditionalLoadSQL;
    property AdditionalFielsInfo: String read FAdditionalFielsInfo write FAdditionalFielsInfo;

  end;

{ TDesignUpdateParamsEh }

  TDesignUpdateParamsEh = class(TPersistent)
  private
    FIncremenField: String;
    FIncremenObject: String;
    FTableName: String;
    FKeyFields: TStrings;
    FUpdateFields: TStrings;
    FSelectSQL: TStrings;
    procedure SetKeyFields(const Value: TStrings);
    procedure SetUpdateFields(const Value: TStrings);
    procedure SetSelectSQL(const Value: TStrings);
  public
    constructor Create;
    destructor Destroy; override;
    property TableName: String read FTableName write FTableName;
    property IncremenField: String read FIncremenField write FIncremenField;
    property IncremenObject: String read FIncremenObject write FIncremenObject;
    property KeyFields: TStrings read FKeyFields write SetKeyFields;
    property UpdateFields: TStrings read FUpdateFields write SetUpdateFields;
    property SelectSQL: TStrings read FSelectSQL write SetSelectSQL;
  end;

{ TDesignUpdateInfoEh }

  TDesignUpdateInfoEh = class(TPersistent)
  private
    FTableName: String;
    FDeleteSQL: TStrings;
    FGetRecSQL: TStrings;
    FUpdateSQL: TStrings;
    FInsertSQL: TStrings;
    FSpecParams: TStrings;
    FUpdateFields: TStrings;
    FKeyFields: TStrings;
    procedure SetDeleteSQL(const Value: TStrings);
    procedure SetGetRecSQL(const Value: TStrings);
    procedure SetUpdateSQL(const Value: TStrings);
    procedure SetInsertSQL(const Value: TStrings);
    procedure SetSpecParams(const Value: TStrings);
    procedure SetKeyFields(const Value: TStrings);
    procedure SetUpdateFields(const Value: TStrings);
  public
    constructor Create;
    destructor Destroy; override;
    property TableName: String read FTableName write FTableName;
    property DeleteSQL: TStrings read FDeleteSQL write SetDeleteSQL;
    property InsertSQL: TStrings read FInsertSQL write SetInsertSQL;
    property UpdateSQL: TStrings read FUpdateSQL write SetUpdateSQL;
    property GetRecSQL: TStrings read FGetRecSQL write SetGetRecSQL;
    property SpecParams: TStrings read FSpecParams write SetSpecParams;
    property UpdateFields: TStrings read FUpdateFields write SetUpdateFields;
    property KeyFields: TStrings read FKeyFields write SetKeyFields;
  end;

{ TCustomDBService }

  TCustomDBService = class(TPersistent)
  private
    FMTList: TStringList;
    FTempateList: TStringList;
    FSQLRoot: TSQLTreeNode;
    FSQLClassListNames: TStringList;
    FSQLClassListTexts: TStringList;
    FLoadedSQLClasses: TStringList;
  protected
    FDesignDB: TDesignDataBaseEh;
    FIncrementObjectsList: TStrings;
    SelectedIndex: Integer;
//    function CreateNode: IGetSQLTreeNode; virtual;
    function CreateNode: TSQLTreeNode; virtual;
    function CreateReader(SQL: String; FParams: TParamsArr): TDataSet; virtual;
    function GetMemTable(TableName: String): TMemTableEh;
    function GetTemplate(TemplateName: String): TSQLTreeNodeTemplate;
    function LoadText(TextName: String): String;
    function LoadMemTable(MemTable: TMemTableEh; Source: TDataSet; Mode: TLoadMode; Fetch: Boolean): Integer; virtual;
    function SQLClassTextByName(ClassName: String): String;
    procedure AddTemplate(Template: TSQLTreeNodeTemplate);
    procedure OnPopupClick(Sender: TObject);
    procedure AddSQLClass(Name, SQLText: String);
    procedure MemTableBuildStruct(MemTable: TMemTableEh; Source: TDataSet); virtual;
    procedure GenWhereClause(DesignUpdateParams: TDesignUpdateParamsEh; SQL: TStrings); virtual;
    procedure GenInsertSQL(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); virtual;
    procedure GenModifySQL(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); virtual;
    procedure GenDeleteSQL(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); virtual;
    procedure GenGetRecSQL(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); virtual;
  public
    constructor Create(ADesignDB: TDesignDataBaseEh); virtual;
    destructor Destroy; override;
    function CheckSqlTextFile: Boolean;
    function CreateRootNodes: TList; virtual;
//    function CreateNodes(Parent: IGetSQLTreeNode): TList; virtual;
    function CreateNodes(Parent: TSQLTreeNode): TList; virtual;
    function ShowPopup(Source: TObject; Coord: TPoint; Params: TServicePopupParams): Integer; virtual;
    function GetSpecParamsList: String; virtual;
    function GetIncrementObjectsList: TStrings; virtual;
    function GetUpdateSQLCommand(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh): Boolean; virtual;
    procedure GenGetSpecParams(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); virtual;
    class function GetDBServiceName: String; virtual;
//    procedure MemTablePutRecord(MemTable: TMemTableEh; DataSet: TDataSet); virtual;
//    procedure MemTablePutFieldValue(MemTable: TMemTableEh; DataSet: TDataSet; MemTableField: TField; Rec: TMemoryRecordEh); virtual;
  end;

{ TInterbaseDBService }

  TInterbaseDBService = class(TCustomDBService)
  public
    constructor Create(ADesignDB: TDesignDataBaseEh); override;
    function GetSpecParamsList: String; override;
    function GetIncrementObjectsList: TStrings; override;
    procedure GenInsertSQL(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); override;
    procedure GenGetSpecParams(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); override;
    class function GetDBServiceName: String; override;
//    procedure TableEditorDrop(Sender, Source: TObject; X, Y: Integer);
  end;

{ TInformixDBService }

  TInformixDBService = class(TCustomDBService)
  public
    constructor Create(ADesignDB: TDesignDataBaseEh); override;
    function GetSpecParamsList: String; override;
    procedure TableEditorDrop(Sender, Source: TObject; X, Y: Integer);
    procedure MemTableBuildStruct(MemTable: TMemTableEh; Source: TDataSet); override;
    procedure GenGetSpecParams(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); override;
    class function GetDBServiceName: String; override;
  end;

{ TMSAccessDBService }

  TMSAccessDBService = class(TCustomDBService)
  public
    constructor Create(ADesignDB: TDesignDataBaseEh); override;
    function GetSpecParamsList: String; override;
    procedure GenGetSpecParams(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); override;
    class function GetDBServiceName: String; override;
  end;

{ TOracleDBService }

  TOracleDBService = class(TCustomDBService)
  public
    constructor Create(ADesignDB: TDesignDataBaseEh); override;
    function GetSpecParamsList: String; override;
    procedure GenGetSpecParams(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); override;
    class function GetDBServiceName: String; override;
  end;

{ TMSSQLDBService }

  TMSSQLDBService = class(TCustomDBService)
  public
    constructor Create(ADesignDB: TDesignDataBaseEh); override;
    function GetSpecParamsList: String; override;
    procedure GenGetSpecParams(DesignUpdateParams: TDesignUpdateParamsEh;
      DesignUpdateInfo: TDesignUpdateInfoEh); override;
    class function GetDBServiceName: String; override;
  end;

(*{ TCustomDBService }

  TCustomDBService = class(TObject)
  private
    FDesignDataBase: TDesignDataBaseEh;
  public
    constructor Create(DesignDataBase: TDesignDataBaseEh);
    function BuildObjectTree(TreeView: TTreeView): Boolean; virtual; abstract;
  end;

  TInterbaseDBService = class(TCustomDBService)
  public
    function BuildObjectTree(TreeView: TTreeView): Boolean; override;
  end;

  TMySQLDBService = class(TCustomDBService)
  public
    function BuildObjectTree(TreeView: TTreeView): Boolean; override;
  end;
*)

{ DesignDataBase unils }

procedure RegisterDesignDataBaseClass(EngineName: String; DesignDBClass: TDesignDataBaseClassEh);
procedure UnregisterDesignDataBaseClass(EngineName: String);
function GetDesignDataBaseClassByName(EngineName: String): TDesignDataBaseClassEh;
function GUISelectDesignDataBaseClass: TDesignDataBaseClassEh;

type
  TSelectDBService = class(TObject)
    DBServiceClass: TCustomDBServiceClass;
    AccessEngine: TAccessEngineEh;
    DBName: String;
  end;

{ Engines unils }

var
  AccessEngineList: TStringList = nil;

procedure RegisterAccessEngine(EngineName: String; Engine: TAccessEngineEh);
procedure UnregisterAccessEngine(EngineName: String);
function GetAccessEngineByName(EngineName: String): TAccessEngineEh;
function GUISelectAccessEngine(SelectDBService: TSelectDBService): Boolean;

//function GUISelectAccessEngine: TAccessEngineEh;

{ DBService unils }

function GetDBServiceList: TStringList;
procedure RegisterDBService(ServerName: String; DBService: TCustomDBServiceClass);
procedure UnregisterDBService(ServerName: String);
function GetDBServiceByName(ServerName: String): TCustomDBServiceClass;
function GUISelectDBService(SelectDBService: TSelectDBService): Boolean;
procedure RegisterDefaultDBService;

{ DBServiceEngines unils }

type
  TDBServiceItem = class
    AccessEngine: TAccessEngineEh;
    DBService: TCustomDBServiceClass;
  end;

procedure RegisterDBServiceEngine(AccessEngine: TAccessEngineEh; DBService: TCustomDBServiceClass);
procedure UnregisterDBServiceEngine(DBService: TCustomDBServiceClass);

 { DesignDataBaseList }

var
  DesignDataBaseList: TObjectList = nil;

function GetDesignDataBaseList: TObjectList;
function GetDBServiceEngineList: TObjectList;

const
  SSelect = 'select'; { Do not localize }
  SFrom = 'from'; { Do not localize }

var
  SQLDataEditWin: TSQLDataEditWin;
  SqlTextPathFileName: String = 'C:\Program Files\Common Files\Borland Shared\Data\sql_text.sql';
  LibraryRegKey: String = 'EhLib';

function EditSQLDataDriverEh(DataDriver: TCustomSQLDataDriverEh): Integer;

procedure ReleaseDesignDataBaseList;

implementation

{$R *.dfm}

uses
{$IFDEF EH_LIB_6} Types,  {$ENDIF}
  FormSelectFromList, DesignConnectionListEh, ToolCtrlsEh,
{$IFDEF DESIGNTIME}
{$IFDEF EH_LIB_6}
{$IFDEF CIL}
  Borland.Vcl.Design.ComponentDesigner,
{$ELSE}
  ComponentDesigner,
{$ENDIF}
{$ELSE}
  LibIntf,
{$ENDIF}
{$ENDIF}
  Registry;


{ DBService unils }

var
  DBServiceList: TStringListEh = nil;

procedure InitDBServiceList();
begin
  if DBServiceList = nil then
  begin
    DBServiceList := TStringListEh.Create;
    DBServiceList.CaseSensitive := False;
  end;
end;

function GetDBServiceList: TStringList;
begin
  InitDBServiceList;
  Result := DBServiceList;
end;

procedure ReleaseDBServiceList;
//var
//  i: Integer;
begin
  if DBServiceList <> nil then
    FreeAndNil(DBServiceList);
//  begin
{    for i := 0 to DBServiceList.Count-1 do
    begin
      TCustomDBService(DBServiceList).Free;
    end;}
//  end;
end;

procedure RegisterDBService(ServerName: String; DBService: TCustomDBServiceClass);
var
  OldDBService: TCustomDBServiceClass;
begin
  InitDBServiceList();
  OldDBService := GetDBServiceByName(ServerName);
  if OldDBService <> nil then
    UnregisterDBService(ServerName);
  DBServiceList.AddObject(ServerName, TObject(DBService));
end;

procedure UnregisterDBService(ServerName: String);
var
  DBServiceInx: Integer;
begin
  if DBServiceList = nil then
    Exit;
  DBServiceInx := DBServiceList.IndexOf(ServerName);
  if DBServiceInx > -1 then
  begin
//    DBServiceList.Objects[DBServiceInx].Free; Does not need to delete ref Class.
    DBServiceList.Delete(DBServiceInx);
  end;
end;

function GetDBServiceByName(ServerName: String): TCustomDBServiceClass;
var
  DBServiceInx: Integer;
begin
  Result := nil;
  if DBServiceList = nil then
    Exit;
  DBServiceInx := DBServiceList.IndexOf(ServerName);
  if DBServiceInx >= 0 then
    Result := TCustomDBServiceClass(DBServiceList.Objects[DBServiceInx]);
end;

function GUISelectDBService(SelectDBService: TSelectDBService): Boolean;
//function GUISelectDBService: TCustomDBServiceClass;
var
//  Index: Integer;
  f: TfSelectFromList;
begin
  Result := False;
  f := TfSelectFromList.Create(Application);
  f.cbEngine.Items := DBServiceList;
  f.cbDBService.Items := AccessEngineList;
  f.eDataBaseName.Text := SelectDBService.DBName;
  if f.ShowModal = mrOk then
  begin
    if f.cbEngine.ItemIndex >= 0
      then SelectDBService.AccessEngine := TAccessEngineEh(AccessEngineList.Objects[f.cbEngine.ItemIndex])
      else SelectDBService.AccessEngine := nil;
    if f.cbDBService.ItemIndex >= 0
      then SelectDBService.DBServiceClass := TCustomDBServiceClass(DBServiceList.Objects[f.cbEngine.ItemIndex])

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区高清| 欧美精品一级二级| 日韩二区在线观看| 国产精品成人在线观看| 欧美精品粉嫩高潮一区二区| 国产一区二区视频在线播放| 亚洲综合在线观看视频| 精品国产乱码久久| 欧美亚洲综合久久| 成人自拍视频在线| 另类欧美日韩国产在线| 亚洲精品成人天堂一二三| 精品国产乱码久久久久久牛牛| 91亚洲精华国产精华精华液| 国模冰冰炮一区二区| 五月激情丁香一区二区三区| 国产清纯在线一区二区www| 欧美二区乱c少妇| 国产呦精品一区二区三区网站| 亚洲啪啪综合av一区二区三区| 日韩午夜电影av| 制服视频三区第一页精品| 色综合久久中文综合久久牛| 韩国视频一区二区| 蜜臀av一区二区在线免费观看| 一区二区欧美精品| 日韩毛片精品高清免费| 欧美成人三级电影在线| 91福利国产精品| 色综合久久中文综合久久97| 91麻豆文化传媒在线观看| 成人av影院在线| 国产a久久麻豆| 国产福利91精品一区二区三区| 国产成人在线视频网址| 国产麻豆91精品| 亚洲18色成人| 精品国精品国产| 欧美成人一区二区三区片免费| 51久久夜色精品国产麻豆| 欧美一区日本一区韩国一区| 日韩久久久久久| 精品国产亚洲在线| 欧美国产日韩一二三区| 国产精品久久久久aaaa| 久久久久久久精| 国产人久久人人人人爽| 亚洲欧美视频在线观看| 亚洲成人av免费| 精品在线观看免费| zzijzzij亚洲日本少妇熟睡| 欧美四级电影网| 欧美岛国在线观看| 久久亚洲精精品中文字幕早川悠里| 国产精品素人视频| 亚洲电影在线免费观看| 国内精品伊人久久久久av影院| 成人免费毛片高清视频| 欧美人动与zoxxxx乱| 国产人成亚洲第一网站在线播放| 亚洲激情五月婷婷| 日本sm残虐另类| 一本大道久久a久久精品综合| 欧美久久久久久久久中文字幕| 国产日韩欧美制服另类| 日韩中文字幕麻豆| 波多野结衣中文字幕一区二区三区| 欧美精品一区二区三区蜜臀| 亚洲国产成人在线| 免费的国产精品| 欧美视频中文一区二区三区在线观看| 日韩免费看的电影| 亚洲蜜臀av乱码久久精品| 国产乱人伦偷精品视频免下载| 色婷婷综合久久久久中文| wwww国产精品欧美| 日本伊人色综合网| 在线观看欧美黄色| 18欧美乱大交hd1984| 国产在线播放一区二区三区| 欧美日韩精品免费观看视频| ...中文天堂在线一区| 国产91精品入口| 欧美成人国产一区二区| 男男视频亚洲欧美| 欧美色成人综合| 亚洲一区在线播放| 91精彩视频在线| 亚洲色图一区二区| 在线看国产一区| 一级中文字幕一区二区| 一本一道波多野结衣一区二区| 国产精品情趣视频| 成人免费的视频| 中文字幕亚洲精品在线观看| www.欧美日韩国产在线| 国产精品久久久久一区二区三区共| 国产精品一卡二| 中文字幕成人网| 国产成人av网站| 日韩欧美的一区二区| 伦理电影国产精品| 国产欧美日韩视频在线观看| 欧美精品tushy高清| 美女视频网站久久| 久久久久久久久久久久电影| 成人精品免费网站| 亚洲国产日韩精品| 555www色欧美视频| 国产曰批免费观看久久久| 国产欧美精品国产国产专区| heyzo一本久久综合| 亚洲国产一区二区在线播放| 日韩一区二区电影网| 国产一区二区0| 中文字幕免费观看一区| 欧洲亚洲国产日韩| 国产一区视频导航| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91搞黄在线观看| 国产麻豆午夜三级精品| 亚洲人妖av一区二区| 911精品国产一区二区在线| 国内精品国产三级国产a久久| 亚洲视频香蕉人妖| 日韩精品在线看片z| 91老司机福利 在线| 久久99日本精品| 亚洲人成电影网站色mp4| 在线不卡的av| 国产成人99久久亚洲综合精品| 亚洲在线视频一区| 中文字幕第一区二区| 日韩一区二区三区免费看| 99国产精品视频免费观看| 日日骚欧美日韩| 一区二区欧美国产| 中文天堂在线一区| 26uuu色噜噜精品一区二区| 在线一区二区三区四区| 国产盗摄女厕一区二区三区| 美女一区二区视频| 亚洲一区在线视频观看| 日韩国产成人精品| 亚洲另类中文字| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 麻豆成人综合网| 亚洲午夜一区二区| 亚洲男人的天堂一区二区| 国产视频一区在线播放| 欧美videofree性高清杂交| 一本色道亚洲精品aⅴ| 91在线精品一区二区三区| 成人性生交大片免费看视频在线| 裸体一区二区三区| 美日韩黄色大片| 精品一区免费av| 韩国精品一区二区| 丁香六月久久综合狠狠色| 韩国三级电影一区二区| 九九视频精品免费| 国产一区欧美日韩| 国产精品77777| 国产成人综合视频| 国产精品资源网站| 99久久777色| 欧美日韩在线亚洲一区蜜芽| 在线播放视频一区| av电影在线观看一区| 午夜视频在线观看一区二区| 亚洲一区在线电影| 欧美96一区二区免费视频| 久久成人免费电影| www.色综合.com| 精品视频在线看| 久久网站热最新地址| 中文在线资源观看网站视频免费不卡| 久久精品一区四区| 日韩理论片网站| 午夜视频在线观看一区| 韩国欧美国产一区| 91免费观看视频在线| 欧美一区国产二区| 欧美激情中文字幕一区二区| 亚洲电影一级片| 国产高清亚洲一区| 色天天综合色天天久久| 欧美国产精品中文字幕| 亚洲最快最全在线视频| 日韩激情中文字幕| 日本乱人伦aⅴ精品| 欧美xxxxx牲另类人与| 国产精品夫妻自拍| 美国av一区二区| 色综合天天综合给合国产| 亚洲国产精品精华液2区45| 天堂午夜影视日韩欧美一区二区| 天天av天天翘天天综合网 | 国产一区二区三区观看| 日韩av午夜在线观看|