Fórum Delphi com Mysql ERRO #410476

13/12/2011

0

procedure TForm1.Button1Click(Sender: TObject);
begin

With ZQuery1 do
begin

Button1.Enabled:=False;
SQL.Clear;
SQL.Text:= SELECT login,senha FROM usuarios WHERE login=+ Edit1.Text + AND senha=+ Edit2.Text + ;
Open;

If ZQuery1.IsEmpty then
begin
ShowMessage(Senha errada!);
Edit2.Text:=;
Edit2.SetFocus;
Button1.Enabled:=True;
end else

begin
SQL.Clear;
SQL.Text:= SELECT login,senha,credito FROM usuarios WHERE login=+ Edit1.Text + AND senha=+ Edit2.Text + AND credito>0 ;
Open;

If ZQuery1.IsEmpty then
begin
ShowMessage(Sem creditos);
Form1.Close;
end else

begin
SQL.Clear;
SQL.Text:=UPDATE usuarios SET creditos=creditos-1 WHERE login=+Edit1.Text+;
Open;
Showmessage(Login efeutado com sucesso!);
end;
end;
end;
end;

Componente: Zeos
Delphi 7

Alguem poderia me dizer porque esse erro esta dando:
Can not open a Resultset.

Ele desconta 1 credito no banco de dados se o login tiver creditos e existir, mais não mostra a mensagem de Login efetuado com sucesso.
Richard Alexander

Richard Alexander

Responder

Posts

13/12/2011

Jeferson Zonta

Bom, tenta antes de tds os SQL.Clear; colocar SQL.close;


Att.
Responder

Gostei + 0

13/12/2011

César

Richard eu não uso o zeos mas acredito que quando vc quer executar um update, insert ao invés de Open, acho que deve existir este método nestes componentes, pelo menos no dbexpress é assim, testa ai.

begin
  SQL.Clear;
  SQL.Text:=UPDATE usuarios SET creditos=creditos-1 WHERE login=+QuotedStr(Edit1.Text);
  //Open;
  ExecSql;
  Showmessage(Login efeutado com sucesso!);
end;


Abraços
Responder

Gostei + 0

13/12/2011

Richard Alexander

César,

Era isso mesmo, o comando OPEN; não funcionava, agora já entendi por que:
Meu raciocinio:

Open : Busca
ExecSql : Alteração

Mais tambem não deixei de colocar o Close; que o amigo Jeferson Zonta citou, obrigado a todos.
Responder

Gostei + 0

13/12/2011

Richard Alexander

Alguem poderia me diz como faço para mostrar numa Label o numero de Creditos?
Responder

Gostei + 0

13/12/2011

Jonathan Campos

Tenta algo como:

With ZQuery1 do
begin

Button1.Enabled:=False;
SQL.Clear;
SQL.Text:= SELECT login,senha FROM usuarios WHERE login=+ Edit1.Text + AND senha=+ Edit2.Text + ;
Open;

If ZQuery1.IsEmpty then
begin
ShowMessage(Senha errada!);
Edit2.Text:=;
Edit2.SetFocus;
Button1.Enabled:=True;
end else

begin
SQL.Clear;
SQL.Text:= SELECT login,senha,credito FROM usuarios WHERE login=+ Edit1.Text + AND senha=+ Edit2.Text + AND credito>0 ;
Open;

If ZQuery1.IsEmpty then
begin
ShowMessage(Sem creditos);
Form1.Close;
end else

begin
SQL.Clear;
SQL.Text:=UPDATE usuarios SET creditos=creditos-1 WHERE login=+Edit1.Text+;
Open;
Showmessage(Login efeutado com sucesso!);
end;
end;
end;
end;

label1.Caption:= ZQuery1.FieldByName(CREDITO).AsString;
Responder

Gostei + 0

14/12/2011

Richard Alexander

Testei o que o amigo jhow citou, mais deu um erro e não sei resolver:
ZQuery1: Field 0 not found.

Criei uma variavel chamada data do tipo integer o codigo ta assim:

label2.Caption:= ZQuery1.FieldByName(IntToStr(data)).AsString;
Responder

Gostei + 0

14/12/2011

Richard Alexander

Testei o que o amigo jhow citou, mais deu um erro e não sei resolver:
ZQuery1: Field 0 not found.

Criei uma variavel chamada data do tipo integer o codigo ta assim:

label1.Caption:= ZQuery1.FieldByName(IntToStr(CREDITOS)).AsString;
Responder

Gostei + 0

14/12/2011

Jonathan Campos

Testei o que o amigo jhow citou, mais deu um erro e não sei resolver:
ZQuery1: Field 0 not found.

Criei uma variavel chamada data do tipo integer o codigo ta assim:

label1.Caption:= ZQuery1.FieldByName(IntToStr(CREDITOS)).AsString;


O campo em ZQuery1.FieldByName(CAMPO).AsString; deve ser o mesmo que vc está trazendo da sua base de dados portanto se o nome do campo no seu banco de dados for CAMPO1 ficará ZQuery1.FieldByName(CAMPO1).AsString; .
Responder

Gostei + 0

14/12/2011

Richard Alexander

No caso eu botei:

Close;
SQL.Clear;
SQL.Text:=UPDATE usuarios SET creditos=creditos-1 WHERE login=+Edit1.Text+;
ExecSQL;
label2.Caption:= FieldByName(CREDITOS).AsString;

Mais da um erro ao executar o programa, uso o Zeos:

ZQuery1: Field 0 not found.

E tem outra, como faço pra o componente não mostrar os erros? Porque uma vez eu troquei a senha do banco de dados e no erro saiu assim:
Não foi possivel conectar-se á MEU_NOME_DE_USUARIO por tal motivo.

É realmente triste ):
Responder

Gostei + 0

15/12/2011

Wilson Junior

Pessoal, peço encarecidamente que para cada assunto criem um tópico, para facilitar a busca para os colegas de fórum.

Agradeço pela compreenssão de todos.

Obrigado.
Responder

Gostei + 0

15/12/2011

Richard Alexander

Então pode fechar. Obrigado a todos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar