?? ibxdatadriverdesigneh.pas
字號:
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 + -