⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frxodaccomponents.pas

📁 ODAC 6 最新版的﹐網上找了好久才找到﹐不太好找啊﹐大家一起共享
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -