Fórum Query fecha sozinha #332378
31/10/2006
0
[color=red:892366f270]Título editado por Massuda
Procure usar um título descritivo.
Por favor, leia as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum, em especial o item 1.e[/color:892366f270]
Galera, é o seguinte, estou fazendo meu TCC, sistema de supermercados, orientado à objetos e seguindo o modelo MVC, estou utilizando remote data module com Sockets, o problema que estou enfrentando é o seguinte, todos os métodos da minha aplicação utilizam a ´linha´ atual e única do dataset QryUsuarios, que logo que o usuário se loga na aplicação, é invocado o método validausuario da aplicação servidora, passando como parâmetro o nome de usuário e senha e esse método invoca o método setnome, setsenha e posteriormente o método validasenha( com os parâmetros SQLQuery(QryUsuarios), SqlConnection(SqlConn) e uma variavel de string de validacao(valida)) da classe de usuário , o problema que estou enfrentando, é que logo após ele fazer essas chamadas, a query misteriosamente fecha e se eu tento retornar o´coduser dela, para inserir um cargo ou um funcionário no sistema, ( preciso do coduser dessa query para saber quem fez a ação, meio que auditoria) ele me retorna erro dizendo que não achou o campo, segue abaixo os códigos respectivos, ja tentei debugar, ja fiz o diabo aqui e não adiantou nada atá agora:
tela de login, botão de validar
procedure TFrmLogin.ActLoginExecute(Sender: TObject);
begin
validado:=false;
If Dm.conMercado.AppServer.ValidaUsuario(
EdtUsuario.text,EdtSenha.text)=´VALIDO´ then
begin
validado:=true;
close;
Dm.CdsUsuario.Open;
//Dm.CdsUsuario.Refresh;
end
else
begin
Application.MessageBox(´Senha ou usuário Incorreto, Tente novamente´,
´Dados Incorretos´, mb_IconExclamation + MB_OK);
EdtSenha.SetFocus;
end;
end;
aqui é o método da aplicação servidor, que instanciará a classe usuário:
function TDM.ValidaUsuario(const pUsuario, pSenha: WideString): WideString;
var objUsuario:TUsuario;
valida:String;
begin
//try
objUsuario:=TUsuario.Create;
with objUsuario do
begin
setNome(pUsuario);
setSenha(pSenha);
valiso do coduser dessa query para saber quem fez a ação, meio que auditoria) ele me retorna erro dizendo que não achou o campo, segue abaixo os códigos respectivos, ja tentei debugar, ja fiz o diabo aqui e não adiantou nada atá agora:
tela de login, botão de validar
procedure TFrmLogin.ActLoginExecute(Sender: TObject);
begin
validado:=false;
If Dm.conMercado.AppServer.ValidaUsuario(
EdtUsuario.text,EdtSenha.text)=´VALIDO´ then
begin
validado:=true;
close;
Dm.CdsUsuario.Open;
//Dm.CdsUsuario.Refresh;
end
else
begin
Application.MessageBox(´Senha ou usuário Incorreto, Tente novamente´,
´Dados Incorretos´, mb_IconExclamation + MB_OK);
EdtSenha.SetFocus;
end;
end;
aqui é o método da aplicação servidor, que instanciará a classe usuário:
function TDM.ValidaUsuario(const pUsuario, pSenha: WideString): WideString;
var objUsuario:TUsuario;
valida:String;
begin
//try
objUsuario:=TUsuario.Create;
with objUsuario do
begin
setNome(pUsuario);
setSenha(pSenha);
validaSenha(qryUsuarios,SqlConn,valida);
if valida=´S´ then
begin
result:=´VALIDO´;
end
else
begin
result:=´INVÁLIDO´;
end;
showmeso de validar
procedure TFrmLogin.ActLoginExecute(Sender: TObject);
begin
validado:=false;
If Dm.conMercado.AppServer.ValidaUsuario(
EdtUsuario.text,EdtSenha.text)=´VALIDO´ then
begin
validado:=true;
close;
Dm.CdsUsuario.Open;
//Dm.CdsUsuario.Refresh;
end
else
begin
Application.MessageBox(´Senha ou usuário Incorreto, Tente novamente´,
´Dados Incorretos´, mb_IconExclamation + MB_OK);
EdtSenha.SetFocus;
end;
end;
aqui é o método da aplicação servidor, que instanciará a classe usuário:
function TDM.ValidaUsuario(const pUsuario, pSenha: WideString): WideString;
var objUsuario:TUsuario;
valida:String;
begin
//try
objUsuario:=TUsuario.Create;
with objUsuario do
begin
setNome(pUsuario);
setSenha(pSenha);
validaSenha(qryUsuarios,SqlConn,valida);
if valida=´S´ then
begin
result:=´VALIDO´;
end
else
begin
result:=´INVÁLIDO´;
end;
showmeso de validar
procedure TFrmLogin.ActLoginExecute(Sender: TObject);
begin
validado:=false;
If Dm.conMercado.AppServer.ValidaUsuario(
EdtUsuario.text,EdtSenha.text)=´VALIDO´ then
begin
validado:=true;
close;
Dm.CdsUsuario.Open;
//Dm.CdsUsuario.Refresh;
end
else
begin
Application.MessageBox(´Senha ou usuário Incorreto, Tente novamente´,
´Dados Incorretos´, mb_IconExclamation + MB_OK);
EdtSenha.SetFocus;
end;
end;
aqui é o método da aplicação servidor, que instanciará a classe usuário:
function TDM.ValidaUsuario(const pUsuario, pSenha: WideString): WideString;
var objUsuario:TUsuario;
valida:String;
begin
//try
objUsuario:=TUsuario.Create;
with objUsuario do
begin
setNome(pUsuario);
setSenha(pSenha);
validaSenha(qryUsuarios,SqlConn,valida);
if valida=´S´ then
begin
result:=´VALIDO´;
end
else
begin
result:=´INVÁLIDO´;
end;
showmeso de validar
aqui é o código da classe,
procedure TUsuario.validaSenha(var SqlAux: TSqlQuery;
Conexao: TSQLConnection;var validacao: string);
begin
AtualizaChaves;;
PlainText :=senha;
CipherText := RDLEncryptStringEx(PlainText, Key128, 16, True);
With SqlAux do
begin
Close;
SqlConnection:=Conexao;
Sql.Clear;
Sql.Add(´SELECT U.*,F.RAZAO´);
Sql.Add(´FROM USUARIO U, FUNCIONARIO F WHERE´);
Sql.Add(´U.CODFUNC=F.CODFUNC´);
Sql.Add(´AND U.LOGIN=:USUARIO´);
Params.ParamByName(´usuario´).AsString:=nome;
Open;
end;
if SqlAux.Fields.FieldByName(´SENHA´).AsString=CipherText then
begin
validacao:¬sage(qryUsuarios.Fields.FieldByName(´CODUSER´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´LOGIN´).AsString);
showmessage(qryUsuarios.Fields.FidaSenha(qryUsuarios,SqlConn,valida);
if valida=´S´ then
begin
result:=´VALIDO´;
end
else
begin
result:=´INVÁLIDO´;
end;
showmeso de validar
aqui é o código da classe,
procedure TUsuario.validaSenha(var SqlAux: TSqlQuery;
Conexao: TSQLConnection;var validacao: string);
begin
AtualizaChaves;;
PlainText :=senha;
CipherText := RDLEncryptStringEx(PlainText, Key128, 16, True);
With SqlAux do
begin
Close;
SqlConnection:=Conexao;
Sql.Clear;
Sql.Add(´SELECT U.*,F.RAZAO´);
Sql.Add(´FROM USUARIO U, FUNCIONARIO F WHERE´);
Sql.Add(´U.CODFUNC=F.CODFUNC´);
Sql.Add(´AND U.LOGIN=:USUARIO´);
Params.ParamByName(´usuario´).AsString:=nome;
Open;
end;
if SqlAux.Fields.FieldByName(´SENHA´).AsString=CipherText then
begin
validacao:¬sage(qryUsuarios.Fields.FieldByName(´CODUSER´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´LOGIN´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´RAZAO´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´SENHA´).AsString);
free;
end;
{ except
raise Exception.Create(´Erro ao Retornar Usuário!´);
end; }
end¬o de validar
aqui é o código da classe,
procedure TUsuario.validaSenha(var SqlAux: TSqlQuery;
Conexao: TSQLConnection;var validacao: string);
begin
AtualizaChaves;;
PlainText :=senha;
CipherText := RDLEncryptStringEx(PlainText, Key128, 16, True);
With SqlAux do
begin
Close;
SqlConnection:=Conexao;
Sql.Clear;
Sql.Add(´SELECT U.*,F.RAZAO´);
Sql.Add(´FROM USUARIO U, FUNCIONARIO F WHERE´);
Sql.Add(´U.CODFUNC=F.CODFUNC´);
Sql.Add(´AND U.LOGIN=:USUARIO´);
Params.ParamByName(´usuario´).AsString:=nome;
Open;
end;
if SqlAux.Fields.FieldByName(´SENHA´).AsString=CipherText then
begin
validacao:¬sage(qryUsuarios.Fields.FieldByName(´CODUSER´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´LOGIN´).AsString);
showmessage(qryUsuarios.FieldeldByName(´RAZAO´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´SENHA´).AsString);
free;
end;
{ except
raise Exception.Create(´Erro ao Retornar Usuário!´);
end; }
end¬o de validar
aqui é o código da classe,
procedure TUsuario.validaSenha(var SqlAux: TSqlQuery;
Conexao: TSQLConnection;var validacao: string);
begin
AtualizaChaves;;
PlainText :=senha;
CipherText := RDLEncryptStringEx(PlainText, Key128, 16, True);
With SqlAux do
begin
Close;
SqlConnection:=Conexao;
Sql.Clear;
Sql.Add(´SELECT U.*,F.RAZAO´);
Sql.Add(´FROM USUARIO U, FUNCIONARIO F WHERE´);
Sql.Add(´U.CODFUNC=F.CODFUNC´);
Sql.Add(´AND U.LOGIN=:USUARIO´);
Params.ParamByName(´usuario´).AsString:=nome;
Open;
end;
if SqlAux.Fields.FieldByName(´SENHA´).AsString=CipherText then
begin
validacao:¬sage(qryUsuarios.Fields.FieldByName(´CODUSER´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´LOGIN´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´RAZAO´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´SENHA´).AsString);
free;
end;
{ except
raise Exception.Create(´Erro ao Retornar Usuário!´);
end; }
end¬o de validar
aqui é o código da classe,
procedure TUsuario.validaSenha(var SqlAux: TSqlQuery;
Conexao: TSQLConnection;var validacao: string);
begin
AtualizaChaves;;
PlainText :=senha;
CipherText := RDLEncryptStringEx(PlainText, Key128, 16, True);
With SqlAux do
begin
Close;
SqlConnection:=Conexao;
Sql.Clear;
Sql.Add(´SELECT U.*,F.RAZAO´);
Sql.Add(´FROM USUARIO U, FUNCIONARIO F WHERE´);
Sql.Add(´U.CODFUNC=F.CODFUNC´);
Sql.Add(´AND U.LOGIN=:USUARIO´);
Params.ParamByName(´usuario´).AsString:=nome;
Open;
end;
if SqlAux.Fields.FieldByName(´SENHA´).AsString=CipherText then
begin
validacao:¬sage(qryUsuarios.Fields.FieldByName(´CODUSER´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´LOGIN´).AsString);
showmessage(qryUsuarios.Fs.FieldByName(´RAZAO´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´SENHA´).AsString);
free;
end;
{ except
raise Exception.Create(´Erro ao Retornar Usuário!´);
end; }
end¬o de validar
aqui é o código da classe,
procedure TUsuario.validaSenha(var SqlAux: TSqlQuery;
Conexao: TSQLConnection;var validacao: string);
begin
AtualizaChaves;;
PlainText :=senha;
CipherText := RDLEncryptStringEx(PlainText, Key128, 16, True);
With SqlAux do
begin
Close;
SqlConnection:=Conexao;
Sql.Clear;
Sql.Add(´SELECT U.*,F.RAZAO´);
Sql.Add(´FROM USUARIO U, FUNCIONARIO F WHERE´);
Sql.Add(´U.CODFUNC=F.CODFUNC´);
Sql.Add(´AND U.LOGIN=:USUARIO´);
Params.ParamByName(´usuario´).AsString:=nome;
Open;
end;
if SqlAux.Fields.FieldByName(´SENHA´).AsString=CipherText then
begin
validacao:¬sage(qryUsuarios.Fields.FieldByName(´CODUSER´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´LOGIN´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´RAZAO´).AsString);
showmessage(qryUsuarios.Fields.FieldByName(´SENHA´).AsString);
free;
end;
{ except
raise Exception.Create(´Erro ao Retornar Usuário!´);
end; }
end;
Brunocantelli
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)