📄 frxodaccomponents.pas
字号:
function TfrxODACDatabase.GetLoginPrompt: Boolean;
begin
Result := FDatabase.LoginPrompt;
end;
procedure TfrxODACDatabase.SetConnected(Value: Boolean);
begin
FDatabase.Connected := Value;
end;
procedure TfrxODACDatabase.SetUsername(const Value: String);
begin
FDatabase.Username := Value;
end;
procedure TfrxODACDatabase.SetPassword(const Value: String);
begin
FDatabase.Password := Value;
end;
procedure TfrxODACDatabase.SetServer(const Value: String);
begin
FDatabase.Server := Value;
end;
procedure TfrxODACDatabase.SetLoginPrompt(Value: Boolean);
begin
FDatabase.LoginPrompt := Value;
end;
function TfrxODACDatabase.GetDatabaseName: string;
begin
Result := FDatabase.Schema;
end;
procedure TfrxODACDatabase.SetDatabaseName(const Value: string);
begin
FDatabase.Schema := Value;
end;
procedure TfrxODACDatabase.SetLogin(const Login, Password: String);
begin
Self.UserName := Login;
Self.Password := Password;
end;
{ TfrxODACDatabaseNet }
constructor TfrxODACDatabaseNet.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDatabase.Options.Direct := True;
end;
class function TfrxODACDatabaseNet.GetDescription: String;
begin
Result := 'ODAC Database Direct';
end;
{ TfrxODACTable }
constructor TfrxODACTable.Create(AOwner: TComponent);
begin
FTable := TODACTable.Create(nil);
DataSet := FTable;
SetDatabase(nil);
inherited;
// FImageIndex := 38;
end;
constructor TfrxODACTable.DesignCreate(AOwner: TComponent; Flags: Word);
var
i: Integer;
l: TList;
begin
inherited;
l := Report.AllObjects;
for i := 0 to l.Count - 1 do
if TObject(l[i]) is TfrxODACDatabase then
begin
SetDatabase(TfrxODACDatabase(l[i]));
break;
end;
end;
class function TfrxODACTable.GetDescription: String;
begin
Result := 'ODAC Table';
end;
procedure TfrxODACTable.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited;
if (Operation = opRemove) and (AComponent = FDatabase) then
SetDatabase(nil);
end;
procedure TfrxODACTable.SetDatabase(const Value: TfrxODACDatabase);
begin
FDatabase := Value;
if Value <> nil then
FTable.Session := Value.Database
else if ODACComponents <> nil then
FTable.Session := ODACComponents.DefaultDatabase
else
FTable.Session := nil;
end;
function TfrxODACTable.GetIndexFieldNames: String;
begin
Result := FTable.IndexFieldNames;
end;
function TfrxODACTable.GetTableName: String;
begin
Result := FTable.TableName;
end;
procedure TfrxODACTable.SetIndexFieldNames(const Value: String);
begin
FTable.IndexFieldNames := Value;
end;
procedure TfrxODACTable.SetTableName(const Value: String);
begin
FTable.TableName := Value;
end;
procedure TfrxODACTable.SetMaster(const Value: TDataSource);
begin
FTable.MasterSource := Value;
end;
procedure TfrxODACTable.SetMasterFields(const Value: String);
var
MasterNames: string;
DetailNames: string;
begin
GetMasterDetailNames(MasterFields, MasterNames, DetailNames);
FTable.MasterFields := MasterNames;
FTable.DetailFields := DetailNames;
end;
procedure TfrxODACTable.BeforeStartReport;
begin
SetDatabase(FDatabase);
end;
{ TfrxODACQuery }
constructor TfrxODACQuery.Create(AOwner: TComponent);
begin
FQuery := TODACSmartQuery.Create(nil);
Dataset := FQuery;
SetDatabase(nil);
inherited;
// FImageIndex := 39;
end;
constructor TfrxODACQuery.DesignCreate(AOwner: TComponent; Flags: Word);
var
i: Integer;
l: TList;
begin
inherited;
l := Report.AllObjects;
for i := 0 to l.Count - 1 do
if TObject(l[i]) is TfrxODACDatabase then
begin
SetDatabase(TfrxODACDatabase(l[i]));
break;
end;
end;
class function TfrxODACQuery.GetDescription: String;
begin
Result := 'ODAC Query';
end;
procedure TfrxODACQuery.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited;
if (Operation = opRemove) and (AComponent = FDatabase) then
SetDatabase(nil);
end;
procedure TfrxODACQuery.SetDatabase(const Value: TfrxODACDatabase);
begin
FDatabase := Value;
if Value <> nil then
FQuery.Session := Value.Database
else if ODACComponents <> nil then
FQuery.Session := ODACComponents.DefaultDatabase
else
FQuery.Session := nil;
end;
procedure TfrxODACQuery.SetIndexFieldNames(const Value: String);
begin
FQuery.IndexFieldNames := Value;
end;
function TfrxODACQuery.GetIndexFieldNames: String;
begin
Result := FQuery.IndexFieldNames;
end;
function TfrxODACQuery.GetSQL: TStrings;
begin
Result := FQuery.SQL;
end;
procedure TfrxODACQuery.SetSQL(Value: TStrings);
begin
FQuery.SQL := Value;
end;
procedure TfrxODACQuery.SetMaster(const Value: TDataSource);
begin
FQuery.MasterSource := Value;
end;
procedure TfrxODACQuery.SetMasterFields(const Value: String);
var
MasterNames: string;
DetailNames: string;
begin
GetMasterDetailNames(MasterFields, MasterNames, DetailNames);
FQuery.MasterFields := MasterNames;
FQuery.DetailFields := DetailNames;
end;
procedure TfrxODACQuery.UpdateParams;
var
i: integer;
begin // Bug with ftCursor datatype
for i := 0 to Params.Count - 1 do // Problem with calling static method
if FQuery.Params.FindParam(Params[i].Name) <> nil then // TParam.SetDataType instead TOraParam.SetDataType
FQuery.ParamByName(Params[i].Name).DataType := Params[i].DataType;
frxParamsToTParams(Self, FQuery.Params);
end;
procedure TfrxODACQuery.BeforeStartReport;
begin
SetDatabase(FDatabase);
end;
{$IFDEF QBUILDER}
function TfrxODACQuery.QBEngine: TfqbEngine;
begin
Result := TfrxEngineODAC.Create(nil);
TfrxEngineODAC(Result).FQuery.Session := FQuery.Session;
end;
{$ENDIF}
{$IFDEF QBUILDER}
constructor TfrxEngineODAC.Create(AOwner: TComponent);
begin
inherited;
FQuery := TODACSmartQuery.Create(Self);
end;
destructor TfrxEngineODAC.Destroy;
begin
FQuery.Free;
inherited;
end;
procedure TfrxEngineODAC.ReadFieldList(const ATableName: string;
var AFieldList: TfqbFieldList);
var
TempTable: TODACTable;
Fields: TFieldDefs;
i: Integer;
tmpField: TfqbField;
begin
AFieldList.Clear;
TempTable := TODACTable.Create(Self);
TempTable.Session := FQuery.Session;
TempTable.TableName := ATableName;
Fields := TempTable.FieldDefs;
try
try
TempTable.Active := True;
tmpField:= TfqbField(AFieldList.Add);
tmpField.FieldName := '*';
for i := 0 to Fields.Count - 1 do
begin
tmpField := TfqbField(AFieldList.Add);
tmpField.FieldName := Fields.Items[i].Name;
tmpField.FieldType := Ord(Fields.Items[i].DataType)
end;
except
end;
finally
TempTable.Free;
end;
end;
procedure TfrxEngineODAC.ReadTableList(ATableList: TStrings);
begin
ATableList.Clear;
FQuery.Session.GetTableNames(ATableList, ShowSystemTables);
end;
function TfrxEngineODAC.ResultDataSet: TDataSet;
begin
Result := FQuery;
end;
procedure TfrxEngineODAC.SetSQL(const Value: string);
begin
FQuery.SQL.Text := Value;
end;
{$ENDIF}
var
CatBmp: TBitmap;
initialization
CatBmp :=TBitmap.Create;
CatBmp.LoadFromResourceName(HInstance, 'FRXODACOBJECTS');
frxObjects.RegisterCategory('ODAC', CatBmp, 'ODAC Components');
frxObjects.RegisterObject1(TfrxODACDataBase, nil, '', 'ODAC', 0, 37);
frxObjects.RegisterObject1(TfrxODACDataBaseDirect, nil, '', 'ODAC', 0, 37);
frxObjects.RegisterObject1(TfrxODACTable , nil, '', 'ODAC', 0, 38);
frxObjects.RegisterObject1(TfrxODACQuery , nil, '', 'ODAC', 0, 39);
frxObjects.RegisterObject1(TfrxODACDataBaseNet, nil, 'ODAC Database Net (deprecated)', 'ODAC', 0, 37);
finalization
CatBmp.Free;
frxObjects.UnRegister(TfrxODACDataBase);
frxObjects.UnRegister(TfrxODACDataBaseDirect);
frxObjects.UnRegister(TfrxODACTable);
frxObjects.UnRegister(TfrxODACQuery);
frxObjects.UnRegister(TfrxODACDataBaseNet);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -