Fórum TFDQuery: Cannot perform this operation on a closed dataset. #618799
09/10/2022
0
Olá senhoras e senhores tudo bem, bom estou tentando rsrs a criar um "sisteminha" que faz um
cadastro de pessoa e salva o numero, e quero que por exemplo (65) 99472-6486 não seja repetido , vou
mostrar a parte do codigo do bt salvar
procedure TtfrmCadPessoa.btSaveClick(Sender: TObject);
begin
if edNome.Text='' then
begin
ShowMessage('INFORME O NOME!');
edNome.SetFocus;
Exit;
end;
if edTel.Text='' then
begin
ShowMessage('INFORME O TELEFONE!');
edTel.SetFocus;
Exit;
end;
cdsPessoa.Insert;
cdsVeriTel.Insert;
cdsVeriTel
.Open;
cdsVeriTel.Close;
cdsVeriTel.SQL.Add('SELECT TELEFONE FROM TAB_PESSOA');
cdsVeriTel.SQL.Add('WHERE TELEFONE = '+edTel.Text);
cdsVeriTel.Open();
if cdsPessoa.State=dsInsert then
begin
tfrmCadPessoa.qryGenIdPessoa.Close;
tfrmCadPessoa.qryGenIdPessoa.Open;
tfrmCadPessoa.cdsPessoaID_USUARIO.AsInteger:=tfrmCadPessoa.qryGenIdPessoaID.AsInteger;
end;
cdsPessoa.FieldByName('NOME').AsString :=(edNome.Text);
cdsVeriTel.FieldByName('TELEFONE').AsString :=(edTel.Text);
cdsPessoa.Post;
ShowMessage('INFORMAÇÕES ARMAZENADAS COM SUCESSO!');
edNome.Clear;
edTel.Clear;
end;
cadastro de pessoa e salva o numero, e quero que por exemplo (65) 99472-6486 não seja repetido , vou
mostrar a parte do codigo do bt salvar
procedure TtfrmCadPessoa.btSaveClick(Sender: TObject);
begin
if edNome.Text='' then
begin
ShowMessage('INFORME O NOME!');
edNome.SetFocus;
Exit;
end;
if edTel.Text='' then
begin
ShowMessage('INFORME O TELEFONE!');
edTel.SetFocus;
Exit;
end;
cdsPessoa.Insert;
cdsVeriTel.Insert;
cdsVeriTel
.Open;
cdsVeriTel.Close;
cdsVeriTel.SQL.Add('SELECT TELEFONE FROM TAB_PESSOA');
cdsVeriTel.SQL.Add('WHERE TELEFONE = '+edTel.Text);
cdsVeriTel.Open();
if cdsPessoa.State=dsInsert then
begin
tfrmCadPessoa.qryGenIdPessoa.Close;
tfrmCadPessoa.qryGenIdPessoa.Open;
tfrmCadPessoa.cdsPessoaID_USUARIO.AsInteger:=tfrmCadPessoa.qryGenIdPessoaID.AsInteger;
end;
cdsPessoa.FieldByName('NOME').AsString :=(edNome.Text);
cdsVeriTel.FieldByName('TELEFONE').AsString :=(edTel.Text);
cdsPessoa.Post;
ShowMessage('INFORMAÇÕES ARMAZENADAS COM SUCESSO!');
edNome.Clear;
edTel.Clear;
end;
João
Curtir tópico
+ 1
Responder
Post mais votado
13/10/2022
No seu código está ocorrendo erros de lógica, você não pode passar um Insert para uma query sem ter dado um Open nela antes...
Lucas Santato
Responder
Gostei + 1
Mais Posts
29/10/2022
João
No seu código está ocorrendo erros de lógica, você não pode passar um Insert para uma query sem ter dado um Open nela antes...
Ok, vlw irei olhar aqui certinho!
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)