Fórum Construção e funcionamento de SQLQuery Dinâmica #236640
08/06/2004
0
Galera!
Surgiu-me uma dúvida quanto ao funcionamento de SQLQuery dinâmica quanto a necessidade da utilização de DataSetProvider e ClientDataSet conjugadas a SQLQuery, todos em tempo de execução. Vejam os códigos abaixo:
-------------------
procedure TFLogin.Edit1Exit(Sender: TObject);
var QVerifica:TSQLQuery;
begin
if Trim(Edit1.Text)<>´´
then begin
QVerifica:=TSQLQuery.Create(Self);
QVerifica.SQLConnection:=DM.SQLConnec;
with QVerifica do
begin
close;
sql.Clear;
sql.Add(´select login,status from usuario where login= :login´);
ParamByName(´login´).AsString:=Edit1.Text;
Prepared:=True;
Open;
if Fields[0].AsString=´´
then begin
Application.MessageBox(´Usuário não identificado!´,´Erro de Identificação´,MB_ICONERROR);
Edit1.SetFocus;
Edit1.Clear;
end
else begin
if ((Fields[1].AsString)<>´Gerente de Conta´) and ((Fields[1].AsString)<>´DBA´)
then begin
Application.MessageBox(´Acesso não permitido para este usuário!. Contacte o administrador.´,´Falha de Conexão´,MB_ICONERROR);
Edit1.SetFocus;
Edit1.Clear;
end
else begin
Edit2.SetFocus;
BitBtn1.Enabled:=True;
end;
end;
end;
QVerifica.Destroy;
end;
end;
----------------------
Estes códigos que constroem e executam uma SQLQuery em tempo de execução estão funcionando e tem por objetivo verificar se um login de acesso ao sistema é válido ou não, entretanto, esta SQLQuery que é executada dinamicamente não tem nenhum DataSetProvider e ClientDataSet ligadas a ela. No meu micro, localmente, funciona legal sem problemas. O que eu gostaria de discutir é se no ambiente multiusuário, isto é, em rede ele também irá funcionar, haja vista a SQLQuery ser unidirecional, onde não dá retorno das suas buscas, será necessário a construção de um DataSetProvider e um ClientDataSet?, ou somente do jeito que está funcionará?. Está é uma dúvida que gostaria de sanar com os camaradas que detêm maiores conhecimentos em programação em ambientes visuais.
Espero ter sido claro e objetivo, mas, caso alguém tenha dúvida é só perguntar novamente que eu irei esclarecer melhor.
Obrigado.
Surgiu-me uma dúvida quanto ao funcionamento de SQLQuery dinâmica quanto a necessidade da utilização de DataSetProvider e ClientDataSet conjugadas a SQLQuery, todos em tempo de execução. Vejam os códigos abaixo:
-------------------
procedure TFLogin.Edit1Exit(Sender: TObject);
var QVerifica:TSQLQuery;
begin
if Trim(Edit1.Text)<>´´
then begin
QVerifica:=TSQLQuery.Create(Self);
QVerifica.SQLConnection:=DM.SQLConnec;
with QVerifica do
begin
close;
sql.Clear;
sql.Add(´select login,status from usuario where login= :login´);
ParamByName(´login´).AsString:=Edit1.Text;
Prepared:=True;
Open;
if Fields[0].AsString=´´
then begin
Application.MessageBox(´Usuário não identificado!´,´Erro de Identificação´,MB_ICONERROR);
Edit1.SetFocus;
Edit1.Clear;
end
else begin
if ((Fields[1].AsString)<>´Gerente de Conta´) and ((Fields[1].AsString)<>´DBA´)
then begin
Application.MessageBox(´Acesso não permitido para este usuário!. Contacte o administrador.´,´Falha de Conexão´,MB_ICONERROR);
Edit1.SetFocus;
Edit1.Clear;
end
else begin
Edit2.SetFocus;
BitBtn1.Enabled:=True;
end;
end;
end;
QVerifica.Destroy;
end;
end;
----------------------
Estes códigos que constroem e executam uma SQLQuery em tempo de execução estão funcionando e tem por objetivo verificar se um login de acesso ao sistema é válido ou não, entretanto, esta SQLQuery que é executada dinamicamente não tem nenhum DataSetProvider e ClientDataSet ligadas a ela. No meu micro, localmente, funciona legal sem problemas. O que eu gostaria de discutir é se no ambiente multiusuário, isto é, em rede ele também irá funcionar, haja vista a SQLQuery ser unidirecional, onde não dá retorno das suas buscas, será necessário a construção de um DataSetProvider e um ClientDataSet?, ou somente do jeito que está funcionará?. Está é uma dúvida que gostaria de sanar com os camaradas que detêm maiores conhecimentos em programação em ambientes visuais.
Espero ter sido claro e objetivo, mas, caso alguém tenha dúvida é só perguntar novamente que eu irei esclarecer melhor.
Obrigado.
Ricardo Giordano
Curtir tópico
+ 0
Responder
Posts
08/06/2004
Paulo_amorim
Olá
Até onde eu saiba ele funcionará multiusuario sim, ja que o acesso é ao banco via rede... isso eh com o BDE. O ClientDataSet e o DataSetProvider seiram necessários (via de regra) se vc tivesse uma aplicação multicamadas...
A propósito, utilize no fim do código um
Query.Free, e não DESTROY, já que o proprio help do Delphi recomenda que não se use Destroy...
o comando Free verifica se a Query efetivamente existe antes de destruí-la...
ALém disso, coloque esse FREE num try...finally, já que a query deve ser destruída independente do funcionamento
Espero qe ajude
Até+
Até onde eu saiba ele funcionará multiusuario sim, ja que o acesso é ao banco via rede... isso eh com o BDE. O ClientDataSet e o DataSetProvider seiram necessários (via de regra) se vc tivesse uma aplicação multicamadas...
A propósito, utilize no fim do código um
Query.Free, e não DESTROY, já que o proprio help do Delphi recomenda que não se use Destroy...
o comando Free verifica se a Query efetivamente existe antes de destruí-la...
ALém disso, coloque esse FREE num try...finally, já que a query deve ser destruída independente do funcionamento
Espero qe ajude
Até+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)