Tópico: Conector Unidac - Show Delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

Conector Unidac

Marcado: ,

Este tópico contém resposta, possui 2 vozes e foi atualizado pela última vez por  Giovani Da Cruz 2 meses atrás.

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #2681

    cwfsa
    Participante

    Dei uma mexida na unit do conector Unidac pois dava dando uns erros de classe abstrata, aí vi que tinha novas classes na unit do conector que não tinha na unit descendente pra unidac. Segue a unit pra apreciação e colocarem no repositório.

    unit UCUniDACConn;
    
    interface
    
    uses
      UCDataConnector,SysUtils, Classes, UCBase, DB, DBAccess, Uni, MemDS;
    
    type
      TUCUniDACConn = class(TUCDataConnector)
      private
        FConnection : TUniConnection;
        procedure SetFConnection(Value : TUniConnection);
      protected
        procedure Notification(AComponent: TComponent; Operation: TOperation);override;
      public
        function GetDBObjectName : String; override;
        function GetTransObjectName : String; override;
        function UCFindDataConnection : Boolean; override;
        function UCFindTable(const Tablename : String) : Boolean; override;
        function UCFindFieldTable(const Tablename, FieldName: String): Boolean; override;
        function UCGetSQLDataset(FSQL : String) : TDataset;override;
        procedure UCExecSQL(FSQL: String);override;
        procedure OrderBy(const DataSet: TDataSet; const FieldName: string); override;
      published
        property Connection : TUniConnection read FConnection write SetFConnection;
      end;
    
    implementation
    
    { TUCUniDACConn }
    
    procedure TUCUniDACConn.SetFConnection(Value: TUniConnection);
    begin
      if FConnection <> Value then FConnection := Value;
      if FConnection <> nil then FConnection.FreeNotification(Self);
    end;
    
    procedure TUCUniDACConn.Notification(AComponent: TComponent;
      Operation: TOperation);
    begin
      if (Operation = opRemove) and (AComponent = FConnection) then
      begin
        FConnection := nil;
      end;
      inherited Notification(AComponent, Operation);
    end;
    
    procedure TUCUniDACConn.OrderBy(const DataSet: TDataSet;
      const FieldName: string);
    begin
      inherited;
      if TUniQuery(DataSet).IndexFieldNames = FieldName then
        TUniQuery(DataSet).IndexFieldNames := FieldName + ':D'
      else
        TUniQuery(DataSet).IndexFieldNames := FieldName;
    end;
    
    function TUCUniDACConn.UCFindTable(const TableName: String): Boolean;
    var
      TempList : TStringList;
    begin
      try
        TempList := TStringList.Create;
        FConnection.GetTableNames(TempList);
        TempList.Text := UpperCase(TempList.Text);
        Result := TempList.IndexOf(UpperCase(TableName)) > -1;
      finally
        FreeAndNil(TempList);
      end;
    end;
    
    function TUCUniDACConn.UCFindDataConnection: Boolean;
    begin
        Result := Assigned(FConnection) and (FConnection.Connected);
    end;
    
    function TUCUniDACConn.UCFindFieldTable(const Tablename,
      FieldName: String): Boolean;
    var
      TempList: TStringList;
    begin
      try
        TempList := TStringList.Create;
        FConnection.GetFieldNames(Tablename, TempList);
        TempList.Text := UpperCase(TempList.Text);
        Result := TempList.IndexOf(UpperCase(FieldName)) > -1;
      finally
        FreeAndNil(TempList);
      end;
    end;
    
    function TUCUniDACConn.GetDBObjectName: String;
    begin
      if Assigned(FConnection) then
      begin
        if Owner = FConnection.Owner then Result := FConnection.Name
        else begin
          Result := FConnection.Owner.Name+'.'+FConnection.Name;
        end;
      end else Result := '';
    end;
    
    function TUCUniDACConn.GetTransObjectName: String;
    begin
      Result := '';
    end;
    
    procedure TUCUniDACConn.UCExecSQL(FSQL: String);
    begin
      FConnection.ExecSQL(FSQL,[]);
    end;
    
    function TUCUniDACConn.UCGetSQLDataset(FSQL: String): TDataset;
    begin
      Result := TUniQuery.Create(nil);
      with Result as TUniQuery do
      begin
        Connection := FConnection;
        SQL.Text := FSQL;
        Open;
      end;
    end;
    
    end.
    #2807

    Obrigado já vou adiciona-lá ao repositório.

    Por hora, vou deixa-lá solta (Sem o pacote), porque não tenho o Unidac para
    testar.

    Se puder mandar o pacote testado, no mesmo formado dos demais connectors, ai já incluo o pacote completo no repositório.

    Desde já obrigado pela contribuição.

Visualizando 2 posts - 1 até 2 (de 2 do total)

Você deve fazer login para responder a este tópico.

Ir ao topo

© 2018 Infus Soluções em Tecnologia - Todos os Direitos Reservados