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

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

?? ibxdatadriverdesigneh.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
      cthTable:
        begin
          Cursor := TIBTable.Create(nil);
          with Cursor as TIBTable do
          begin
            Database := FDatabase;
            TableName := Command.CommandText.Text;
//            Params := Command.GetParams;
            Open;
          end;
        end;
      cthStoredProc:
        begin
          Cursor := TIBStoredProc.Create(nil);
          with Cursor as TIBStoredProc do
          begin
            Database := FDatabase;
            StoredProcName := Command.CommandText.Text;
            Params := Command.GetParams;
            ExecProc;
          end;
        end;
    end;
end;

function TIBXDesignDataBaseEh.GetDatabase: TIBDatabase;
begin
  Result := FDatabase;
end;

function TIBXDesignDataBaseEh.ServerTypeName: String;
var
  Description: String;
begin
//  if not SQLCo.Connected then
//    FDBEDataBase.Open;
  if GetServerName(FDatabase, Description) then
  begin
    Result := UpperCase(Description);
  end;
end;

function TIBXDesignDataBaseEh.BuildInterbaseObjectTree2(List: TList): Boolean;
var
  NList: Tlist;
  i: Integer;
//  TreeNode: TTreeNode;
begin
  if FTreeNodeMan <> nil then
    FTreeNodeMan.Free;
  FTreeNodeMan := TInterbaseDBService.Create(Self);
  NList := FTreeNodeMan.CreateRootNodes;
//  List.Assign(NList, laCopy);
  List.Clear;
  for I := 0 to NList.Count - 1 do
    List.Add(NList[I]);

{  for i := 0 to List.Count-1 do
  begin
    TreeNode := TreeView.Items.Add(nil, TSQLTreeNode(List[i]).FName);
    TreeNode.HasChildren := True;
    TreeNode.Data := List[i];
  end;}
  NList.Free;
  Result := True;
end;

function TIBXDesignDataBaseEh.CreateReader(SQL: String; FParams: TParamsArr): TDataSet;
var
  Query: TIBQuery;
  i: Integer;
  dt: TFieldType;
  p: TParam;
begin
  Query := TIBQuery.Create(nil);
  Query.Database := FDatabase;
  Query.SQL.Text := SQL;
  if High(FParams) > Low(FParams) then
    for i := Low(FParams) to High(FParams) div 2 do
    begin
      dt := VarTypeToDataType(VarType(FParams[i*2+1]));
      if dt = ftUnknown then
        dt := ftString;
      p := Query.Params.CreateParam(dt, FParams[i*2], ptInputOutput);
      p.Value := FParams[i*2+1];
    end;
  try
    Query.Open;
  except
    Query.Free;
    raise;
  end;
  Result := Query;
end;

function TIBXDesignDataBaseEh.BuildOracleObjectTree(TreeView: TTreeView): Boolean;
begin
  Result := False;
end;

procedure TIBXDesignDataBaseEh.EditDatabaseParams;
begin
//design-time EditIBDatabase(FDatabase);
{$IFDEF DESIGNTIME}
  EditIBDatabase(FDatabase);
{$ENDIF}
end;

function TIBXDesignDataBaseEh.GetEngineName: String;
begin
  Result := 'IBX';
end;

function TIBXDesignDataBaseEh.SupportCustomSQLDataDriver: Boolean;
begin
  Result := True;
end;

function TIBXDesignDataBaseEh.GetFieldList(const TableName: string;
  DataSet: TDataSet): Boolean;
var
  table: TIBTable;
  list: TStrings;
  i: Integer;

  procedure GetDataFieldNames(Dataset: TDataset; ErrorName: string; List: TStrings);
  var
    I: Integer;
  begin
    with Dataset do
    try
      FieldDefs.Update;
      List.BeginUpdate;
      try
        List.Clear;
        for I := 0 to FieldDefs.Count - 1 do
          List.Add(FieldDefs[I].Name);
      finally
        List.EndUpdate;
      end;
    except
      if ErrorName <> '' then
        MessageDlg(Format('SSQLDataSetOpen', [ErrorName]), mtError, [mbOK], 0);
    end;
  end;

  procedure SetKeyFields;
  var
    SepPos, I, Index: Integer;
    FName, FieldNames: string;
  begin
    table.IndexDefs.Update;
    for I := 0 to table.IndexDefs.Count - 1  do
      if ixPrimary in table.IndexDefs[I].Options then
      begin
        FieldNames := table.IndexDefs[I].Fields + ';';
        while Length(FieldNames) > 0 do
        begin
          SepPos := Pos(';', FieldNames);
          if SepPos < 1 then Break;
          FName := Copy(FieldNames, 1, SepPos - 1);
          System.Delete(FieldNames, 1, SepPos);
          Index := list.IndexOf(FName);
          if Index > -1 then list.Objects[Index] := TObject(1);
        end;
        break;
      end;
  end;

begin
  table := TIBTable.Create(nil);
  table.Database := FDatabase;
  table.TableName := TableName;
  list := TStringList.Create;
  GetDataFieldNames(table, 'Error', list);
  SetKeyFields;
  for i := 0 to list.Count-1 do
    if list.Objects[i] = TObject(1)
      then DataSet.AppendRecord([list[i], True])
      else DataSet.AppendRecord([list[i], False]);
  list.Free;
  table.Free;
  Result := True;
end;

function TIBXDesignDataBaseEh.GetConnected: Boolean;
begin
  Result := FDatabase.Connected;
end;

procedure TIBXDesignDataBaseEh.SetConnected(const Value: Boolean);
begin
  FDatabase.Connected := Value;
end;

function TIBXDesignDataBaseEh.GetCustomDBService: TCustomDBService;
begin
  Result := FDBService;
end;

function TIBXDesignDataBaseEh.GetIncrementObjectsList: TStrings;
begin
  if FUpdateObjectsList = nil then
    FUpdateObjectsList := TStringList.Create;
  if GetCustomDBService <> nil then
  begin
    FUpdateObjectsList.Assign(GetCustomDBService.GetIncrementObjectsList);
    Result := FUpdateObjectsList;
  end else
    Result := nil;
end;

function TIBXDesignDataBaseEh.GetSpecParamsList: String;
begin
  if GetCustomDBService <> nil then
    Result := GetCustomDBService.GetSpecParamsList;
end;

procedure TIBXDesignDataBaseEh.SetApplicationDatabase(const Value: TIBDatabase);
begin
  if FApplicationDatabase <> Value then
  begin
    FApplicationDatabase := Value;
    if FApplicationDatabase <> nil then
      FApplicationDatabase.FreeNotification(Self);
  end;
end;

procedure TIBXDesignDataBaseEh.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and
     (AComponent <> nil) and
     (FApplicationDatabase = AComponent)
  then
    FApplicationDatabase := nil;
end;

{ TIBXAccessEngineEh }

function TIBXAccessEngineEh.AccessEngineName: String;
begin
  Result := 'IBX';
end;

//function TIBXAccessEngineEh.CreateDesignDataBase(DataDriver: TCustomSQLDataDriverEh): TDesignDataBaseEh;
function TIBXAccessEngineEh.CreateDesignDataBase(DataDriver: TCustomSQLDataDriverEh;
  DBServiceClass: TCustomDBServiceClass; DataBaseName: String): TDesignDataBaseEh;
var
  IBXDesignDataBase: TIBXDesignDataBaseEh;
begin
  IBXDesignDataBase := TIBXDesignDataBaseEh.Create;
  IBXDesignDataBase.EditDatabaseParams;
  Result := IBXDesignDataBase;
//  DataDriver.DesignDataBase := IBXDesignDataBase;
end;

procedure Register;
begin
  RegisterComponents('EhLib', [TIBXDataDriverEh]);
{$IFDEF DESIGNTIME}
  RegisterComponentEditor(TIBXDataDriverEh, TSQLDataDriverEhEditor);
{$ENDIF}
end;

initialization
//  ShowMessage('Registering IBX');
  RegisterIBXAccessEngines;
//  ShowMessage('Registered IBX');
finalization
//  ShowMessage('UnRegistering IBX');
  UnregisterIBXAccessEngines;
//  ShowMessage('UnRegistered IBX');
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精品乱码久久久久久蜜桃 | 一本大道综合伊人精品热热| 成人av第一页| 日韩欧美一卡二卡| 亚洲成在人线免费| 99精品一区二区三区| 日韩三级电影网址| 亚洲一区二区三区影院| 成人avav在线| 国产精品午夜在线观看| 久久99久久精品欧美| 欧美精品久久天天躁| 亚洲最大色网站| 色88888久久久久久影院按摩| 国产欧美日韩在线视频| 九九视频精品免费| 91精品综合久久久久久| 亚洲国产精品一区二区久久 | 国产成人免费在线| 欧美一级理论片| 午夜欧美2019年伦理| 在线观看亚洲专区| 亚洲男人天堂av网| 91在线视频播放| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美日韩卡一卡二| 一区二区三区日本| 欧美色精品天天在线观看视频| 国产精品久久久久久久久免费樱桃 | 日韩欧美激情在线| 美日韩一区二区| 日韩欧美卡一卡二| 国产一区二区三区久久悠悠色av| 91麻豆精品国产91久久久久久| 午夜精品久久久久| 欧美电影一区二区| 蜜臀a∨国产成人精品| 欧美成人三级在线| 国产传媒一区在线| 国产精品夫妻自拍| 色吧成人激情小说| 午夜免费久久看| 欧美一区二区三区男人的天堂| 麻豆免费看一区二区三区| 日韩欧美国产wwwww| 激情小说亚洲一区| 国产精品进线69影院| 欧美一区二区在线视频| 热久久国产精品| 久久久久久久久岛国免费| 成人免费的视频| 亚洲欧美另类久久久精品2019| 在线观看一区日韩| 精品综合久久久久久8888| 亚洲国产岛国毛片在线| 色综合天天综合| 日本欧美大码aⅴ在线播放| 26uuu久久天堂性欧美| caoporn国产精品| 偷拍自拍另类欧美| 26uuu成人网一区二区三区| 99国产精品国产精品毛片| 亚洲地区一二三色| 久久久av毛片精品| 色屁屁一区二区| 麻豆高清免费国产一区| 国产精品九色蝌蚪自拍| 在线成人高清不卡| 成人18精品视频| 捆绑变态av一区二区三区| 国产精品水嫩水嫩| 制服丝袜亚洲色图| www.久久久久久久久| 日韩不卡手机在线v区| 日本一区二区三区高清不卡 | 午夜久久久久久| 欧美激情综合五月色丁香小说| 欧美日韩在线亚洲一区蜜芽| 国产精品自在欧美一区| 午夜久久福利影院| 亚洲欧美日韩国产一区二区三区| 日韩午夜中文字幕| 色婷婷综合激情| 国产91精品一区二区麻豆网站 | 99久久精品99国产精品| 精品一区二区三区欧美| 亚洲国产日韩a在线播放性色| 中文字幕乱码久久午夜不卡| 日韩欧美色综合| 欧美日本一区二区在线观看| 波多野结衣精品在线| 国内精品伊人久久久久av影院| 亚洲成人777| 亚洲少妇30p| 国产精品美女视频| 久久久久久久久伊人| 日韩视频123| 日韩一区二区三区三四区视频在线观看| 成人三级在线视频| 国产盗摄一区二区| 国内成人免费视频| 久久国产三级精品| 青青草国产精品97视觉盛宴| 亚洲高清一区二区三区| 亚洲一区二区影院| 亚洲一区二区在线免费观看视频| 国产精品欧美综合在线| 欧美韩国日本不卡| 国产精品理论片在线观看| 久久久久99精品国产片| 日韩午夜在线观看| 欧美精品一区二区三区一线天视频 | 极品美女销魂一区二区三区免费| 午夜不卡av免费| 无吗不卡中文字幕| 五月婷婷另类国产| 日韩高清不卡一区二区| 三级影片在线观看欧美日韩一区二区| 亚洲一区二区三区视频在线| 亚洲欧美日韩国产手机在线| 亚洲激情一二三区| 亚洲永久精品国产| 日韩成人伦理电影在线观看| 日韩精品乱码av一区二区| 男女性色大片免费观看一区二区| 午夜精品久久久久久不卡8050| 青青草国产成人av片免费| 国产在线视频一区二区| 成人免费视频播放| 色av一区二区| 91精品国产丝袜白色高跟鞋| 337p日本欧洲亚洲大胆色噜噜| 国产欧美一区在线| 亚洲乱码国产乱码精品精98午夜 | 色女孩综合影院| 欧美亚洲图片小说| 日韩一级欧美一级| 国产午夜精品一区二区三区嫩草 | 欧美在线视频不卡| 欧美一区二区三区在| 国产日韩欧美在线一区| 亚洲乱码国产乱码精品精小说 | 黄一区二区三区| 国产ts人妖一区二区| 色中色一区二区| 日韩一区二区精品| 亚洲国产岛国毛片在线| 亚洲成人www| 国产成人av电影在线| 欧美日韩国产高清一区二区三区 | 亚洲va欧美va人人爽| 久久99国内精品| 欧洲色大大久久| 久久久99精品免费观看| 亚洲成人久久影院| 国产99精品在线观看| 6080日韩午夜伦伦午夜伦| 日本一二三不卡| 免费在线成人网| 91国产免费看| 国产日产欧美一区| 偷拍日韩校园综合在线| 不卡av在线免费观看| 日韩亚洲欧美在线观看| 亚洲一区二区三区国产| 国产一本一道久久香蕉| 5月丁香婷婷综合| 亚洲精品美腿丝袜| 国产精品亚洲专一区二区三区| 88在线观看91蜜桃国自产| 国产精品福利影院| 国产福利一区二区三区视频| 69久久99精品久久久久婷婷| 亚洲女人****多毛耸耸8| 国产成人在线电影| 日韩一区二区三区视频在线| 亚洲观看高清完整版在线观看| 99国产精品久久久久久久久久久| 亚洲欧美一区二区三区国产精品| 国产精品乡下勾搭老头1| 欧美一区二区三区视频免费播放| 亚洲一区二区三区四区在线| 91在线视频网址| 亚洲图片欧美激情| 波多野洁衣一区| 中文字幕免费一区| 国产精品456露脸| 国产亚洲婷婷免费| 国产精品一区一区三区| 26uuu欧美日本| 韩日精品视频一区| 日韩精品一区二区三区视频| 日日夜夜免费精品视频| 欧美日韩卡一卡二| 婷婷国产v国产偷v亚洲高清| 精品视频在线免费看| 性久久久久久久| 91精品国产品国语在线不卡| 三级一区在线视频先锋 | 国产一区二区福利视频|