Dúvida e Erro no Código

Delphi

04/08/2011

Gostaria da ajuda de vocês para identificar onde está o erro no código e também se é a melhor forma de fazer vendo o código abaixo:

MSG de erro:



O erro está na linha em destaque Azul, mais abaixo segue o código:

unit uBDAcesso;

interface

uses
  DB, ADODB, uConectaBD;

type
  TBDAceso = class(TObject)
    qryAcesso: TADOQuery;
    ConectaBD: TConectaBD;

  private
    constructor Create;
  public
    function Acesso(Login, Senha: String): Boolean;
  end;

implementation

constructor TBDAceso.Create;
begin
  inherited;
  ConectaBD := TConectaBD.Create;
  qryAcesso := TADOQuery.Create(nil); //É onde está dando o erro
  qryAcesso.ConnectionString :=  ConectaBD.ConectaBanco;
end;

function TBDAceso.Acesso(Login, Senha: String): Boolean;
var
  sSQL: String;
begin
  Result := False;

  sSQL := 'select * from usuarios where login = :login';
end;

initialization
  TBDAceso.Create;

finalization

end.





Luiz Junior

Luiz Junior

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

04/08/2011

você precisa acrescentar a unit ActiveX na uses, e alterar a rotina para inicializar a biblioteca COM.

algo assim:

constructor TBDAceso.Create;
begin
  inherited;

  CoInitialize(nil); // inicializa a biblioteca COM

  ConectaBD := TConectaBD.Create;
  qryAcesso := TADOQuery.Create(nil); //É onde está dando o erro
  qryAcesso.ConnectionString :=  ConectaBD.ConectaBanco;

  CoUnInitialize; // finaliza a biblioteca COM

end;


mas será preciso saber como esse objeto será usado, pois talvez a finalização do COM não deva ser feita ali no método Create.
GOSTEI 0
Luiz Junior

Luiz Junior

04/08/2011

Blz, deu certo!

Tenho outra dúvida: Gostaria de destruir o que criei, aí estou tentando da seguinte forma, mas em finalization quando tento colocar TBDAcesso.

type
  TBDAceso = class(TObject)
    qryAcesso: TADOQuery;
    ConectaBD: TConectaBD;

  private
    constructor Create;
    destructor Destroi; 
  public
    function Acesso(Login, Senha: String): Boolean;
  end;

implementation

constructor TBDAceso.Create;
begin
  inherited;
  ConectaBD := TConectaBD.Create;
  qryAcesso := TADOQuery.Create(nil); 
  qryAcesso.ConnectionString :=  ConectaBD.ConectaBanco;
end;

destructor TDBAcesso.Destroi;
begin
  ConectaBD.Destroy;
  qryAcesso.Destroy;
  inherited;
end;

initialization
  TBDAceso.Create;

finalization
  TBDAceso.Destroi; //Não consigo colocar o Destroi para destruiu o que foi criado.

end.


GOSTEI 0
Luiz Junior

Luiz Junior

04/08/2011

Esqueci de completar o quando tento colocar o TDBAceso. eu não consigo colocar o destruir, o que pode ser ou como faço para destrui?

Obrigado!
GOSTEI 0
POSTAR