Dúvida e Erro no Código
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:
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
Curtidas 0
Respostas
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.
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
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.
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
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!
Obrigado!
GOSTEI 0