Update com ADOquery delphi

Delphi

31/01/2017

Bom dia.


Alguém teria algum exemplo de update utilizando a conexão com ADO?

Tentei com o procedimento do link: https://www.devmedia.com.br/forum/adoconnection-e-adoquery/178873.... mas não deu certo.

Se puderem ajudar, agradeço muito, pois só falta o update.

Obrigado
Nomad

Nomad

Curtidas 0

Melhor post

Daniel Araújo

Daniel Araújo

31/01/2017

Boa tarde!

Qual o erro que tá dando?

Pra conexão tu pode tentar isso aqui:
http://doispontozero-programador.blogspot.com.br/2017/01/conectando-o-delphi-com-o-banco-de.html
GOSTEI 1

Mais Respostas

Nomad

Nomad

31/01/2017

Bom dia.


Alguém teria algum exemplo de update utilizando a conexão com ADO?

Tentei com o procedimento do link: https://www.devmedia.com.br/forum/adoconnection-e-adoquery/178873.... mas não deu certo.

Se puderem ajudar, agradeço muito, pois só falta o update.

Obrigado


O link é: https://www.devmedia.com.br/forum/adoconnection-e-adoquery/178873
GOSTEI 0
Nomad

Nomad

31/01/2017

Bom dia.


Alguém teria algum exemplo de update utilizando a conexão com ADO?

Tentei com o procedimento do link: https://www.devmedia.com.br/forum/adoconnection-e-adoquery/178873.... mas não deu certo.

Se puderem ajudar, agradeço muito, pois só falta o update.

Obrigado


Algm poderia ajudar?
GOSTEI 0
Nomad

Nomad

31/01/2017

Boa tarde!

Qual o erro que tá dando?

Pra conexão tu pode tentar isso aqui:
http://doispontozero-programador.blogspot.com.br/2017/01/conectando-o-delphi-com-o-banco-de.html


Boa tarde, Daniel.

Não chega a ocorrer erro, somente não altera mesmo. Acredito que o código de alteração esteja incorreto.
A conexão está ok... Inclui, consulta e exclui normalmente. A dúvida é no update mesmo, não sei como fazer.

Obrigado.
GOSTEI 0
Daniel Araújo

Daniel Araújo

31/01/2017

pode postar o trecho do código? Eu te digo o que está errado nele.
GOSTEI 1
Nomad

Nomad

31/01/2017

pode postar o trecho do código? Eu te digo o que está errado nele.


Então Daniel... Eu testei com o código daquele link que passei no inicio, na primeira pergunta.. E como não deu certo, acabei apagando.
Estou sem o código para alterar agora, apenas com o Form criado mesmo.. Teria algum trecho que poderia me enviar para eu testar?
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

31/01/2017

Veja um exemplo:

with ADOQUERY do 
 begin 
   Close; 
   SQL.Clear; 
   SQL.Add('UPDATE [tabela] SET [campo=:a] WHERE [condição=:b]'); 
   Parameters.ParamByName('a').Value:=[novo valor]; 
   Parameters.PatamByName('b').Value:=[condição de atualização]; 
   ExecSQL; 
   Open; 
 end; 
GOSTEI 1
Daniel Araújo

Daniel Araújo

31/01/2017

Tô sem o Delphi no momento, mas é basicamente isso:
Query.Close();
Query.SQL.Add('UPDATE cliente');
Query.SQL.Add('       SET nome = "' + edtNome.Text + '"');
Query.SQL.Add('WHERE codigo = ' + edtCodigo.Text);
Query.Exec();
GOSTEI 1
Nomad

Nomad

31/01/2017

Tô sem o Delphi no momento, mas é basicamente isso:
Query.Close();
Query.SQL.Add('UPDATE cliente');
Query.SQL.Add('       SET nome = "' + edtNome.Text + '"');
Query.SQL.Add('WHERE codigo = ' + edtCodigo.Text);
Query.Exec();


Daniel, fiz desta forma adaptando para minhas necessidades e ficou:
qryAlteraSocio.Close();
qryAlteraSocio.SQL.Add('UPDATE cadastro_socio');
qryAlteraSocio.SQL.Add(' SET nome = "' + DBEnome.Text + '"');
 qryAlteraSocio.SQL.Add('WHERE codigo = ' + DBEcod.Text);
 qryAlteraSocio.ExecSQL();


Mas ao tentar alterar ocorre o erro: Um nome de objeto ou coluna está faltando ou está vazio. Verifique se todas as colunas das instruções SELECT INTO têm nomes. Nas outras instruções, procure nomes de alias vazios. Alias definidos como " " ou [] não são permitidos. Adicione um nome ou um espaço único como nome de alias.

Saberia me informar o que pode ser?
GOSTEI 0
Daniel Araújo

Daniel Araújo

31/01/2017

Esqueci de limpar a query antes!

Acho que é só isso mesmo. Faz assim:
qryAlteraSocio.Close();
qryAlteraSocio.SQL.Clear();
qryAlteraSocio.SQL.Add('UPDATE cadastro_socio');
qryAlteraSocio.SQL.Add(' SET nome = "' + DBEnome.Text + '"');
qryAlteraSocio.SQL.Add('WHERE codigo = ' + DBEcod.Text);
qryAlteraSocio.ExecSQL();
GOSTEI 1
Daniel Araújo

Daniel Araújo

31/01/2017

Outra coisa, substitui essa parte:
qryAlteraSocio.SQL.Add(' SET nome = "' + DBEnome.Text + '"');

por isso:
qryAlteraSocio.SQL.Add(' SET nome = ' + QuotedStr(DBEnome.Text) );
GOSTEI 1
Nomad

Nomad

31/01/2017

Outra coisa, substitui essa parte:
qryAlteraSocio.SQL.Add(' SET nome = "' + DBEnome.Text + '"');

por isso:
qryAlteraSocio.SQL.Add(' SET nome = ' + QuotedStr(DBEnome.Text) );


Daniel, somente amanhã na parte da manhã que poderei fazer os testes. Mas dando certo ou não, irei responder aqui. Caso não dê certo, espero que possa continuar me ajudando.

Desde já, agradeço muito a compreensão e ajuda;
GOSTEI 0
Nomad

Nomad

31/01/2017

Outra coisa, substitui essa parte:
qryAlteraSocio.SQL.Add(' SET nome = "' + DBEnome.Text + '"');

por isso:
qryAlteraSocio.SQL.Add(' SET nome = ' + QuotedStr(DBEnome.Text) );


Daniel, bom dia.
Desta forma ocorre o erro: Sintaxe incorreta próxima a '='. E não consegui identificar o que está errado.

Fiz um teste informando o QuotedStr na linha do WHERE, e ocorre a seguinte situação.. Quando clico para alterar, apaga todos os campos. Saio da tela, e se tento acessar novamente ocorre o erro "qryAlteraSocio: Cannot perform this operation on a closed dataset".
GOSTEI 0
Daniel Araújo

Daniel Araújo

31/01/2017

Cola o trecho do código pra eu analisar.
GOSTEI 1
Nomad

Nomad

31/01/2017

Cola o trecho do código pra eu analisar.


Da forma como orientou...
  qryAlteraSocio.Close();
  qryAlteraSocio.SQL.Clear();
  qryAlteraSocio.SQL.Add('UPDATE cadastro_socio');
  qryAlteraSocio.SQL.Add('SET nome ='+QuotedStr(DBEnome.Text));
  qryAlteraSocio.SQL.Add('WHERE codigo ='+DBEcod.Text);
  qryAlteraSocio.ExecSQL();


Alterando o WHERE...
 qryAlteraSocio.Close();
  qryAlteraSocio.SQL.Clear();
  qryAlteraSocio.SQL.Add('UPDATE cadastro_socio');
  qryAlteraSocio.SQL.Add('SET nome ='+QuotedStr(DBEnome.Text));
  qryAlteraSocio.SQL.Add('WHERE codigo ='+QuotedStr(DBEcod.Text));
  qryAlteraSocio.ExecSQL();
GOSTEI 0
Daniel Araújo

Daniel Araújo

31/01/2017

Ao meu ver está ok.
Tenta dessa forma:
qryAlteraSocio.Close();
qryAlteraSocio.SQL.Clear();
qryAlteraSocio.SQL.Add('UPDATE cadastro_socio');
qryAlteraSocio.SQL.Add(' SET nome = '+QuotedStr(DBEnome.Text));
qryAlteraSocio.SQL.Add(' WHERE codigo = '+DBEcod.Text);
qryAlteraSocio.ExecSQL();


Inclui alguns espaços antes do SET e do WHERE.

Se continuar dando erro, posta a mensagem do erro também.
Outra coisa, verifica se o DBEcod.Text está preenchido com o código do sócio.

Tu sabe depurar código?
GOSTEI 1
Nomad

Nomad

31/01/2017

Ao meu ver está ok.
Tenta dessa forma:
qryAlteraSocio.Close();
qryAlteraSocio.SQL.Clear();
qryAlteraSocio.SQL.Add('UPDATE cadastro_socio');
qryAlteraSocio.SQL.Add(' SET nome = '+QuotedStr(DBEnome.Text));
qryAlteraSocio.SQL.Add(' WHERE codigo = '+DBEcod.Text);
qryAlteraSocio.ExecSQL();


Inclui alguns espaços antes do SET e do WHERE.

Se continuar dando erro, posta a mensagem do erro também.
Outra coisa, verifica se o DBEcod.Text está preenchido com o código do sócio.

Tu sabe depurar código?


Fiz da forma como me passou, e novamente ocorreu Sintaxe incorreta próxima a '='. O DBEcod está preenchido.
Será que o ADOquery influencia em algo?

E referente a depurar código, ainda não sei como fazer. Iniciei em delphi a pouco tempo.
GOSTEI 0
Daniel Araújo

Daniel Araújo

31/01/2017

Vê aqui com depura:
http://www.activedelphi.com.br/forum/viewtopic.php?p=2555&sid=2cd768eb5ecb9454e932f0f0b29a31dc

Quando tiver depurando, para na linha onde tem o 'where codigo...', posiciona o cursor sobre o .Text e vê qual o valor do campo. Pela mensagem do erro, acredito que o campo DBEcod.Text esteja sem valor ou com um valor inválido.
GOSTEI 1
Nomad

Nomad

31/01/2017

Vê aqui com depura:
http://www.activedelphi.com.br/forum/viewtopic.php?p=2555&sid=2cd768eb5ecb9454e932f0f0b29a31dc

Quando tiver depurando, para na linha onde tem o 'where codigo...', posiciona o cursor sobre o .Text e vê qual o valor do campo. Pela mensagem do erro, acredito que o campo DBEcod.Text esteja sem valor ou com um valor inválido.


Boa tarde Daniel.
Infelizmente, pelo link que passou não consegui compreender muito bem a depuração....

Mas realizei pelo f4, e ao deixar o cursos no .Text aparece DBEcod.Text | "

É isto mesmo? Estou confuso em relação a isso.
GOSTEI 0
Daniel Araújo

Daniel Araújo

31/01/2017

É isso mesmo. O problema é que o DBEcod.Text não está preenchido. Por isso que o update não funciona. Agora o complicado vai ser saber porque ele está vazio. Entre 12:00 e 13:00 daria pra gente vê isso por acesso remoto, se você achar interessante é claro.
GOSTEI 1
Raimundo Pereira

Raimundo Pereira

31/01/2017

Daniel, boa noite!
Conseguiu resolver?
Qual BD ?
GOSTEI 0
Nomad

Nomad

31/01/2017

É isso mesmo. O problema é que o DBEcod.Text não está preenchido. Por isso que o update não funciona. Agora o complicado vai ser saber porque ele está vazio. Entre 12:00 e 13:00 daria pra gente vê isso por acesso remoto, se você achar interessante é claro.


Daniel, bom dia.
Agradeço muito sua atenção e empenho em me ajudar. Mas consegui resolver a situação junto a um colega... Alteramos a função para:
If qryAlteraSocio.State = dsEdit then
qryAlteraSocio.Post

Desta forma funcionou.

E novamente agradeço muito a vc, pois para nos que estamos começando é muito importante essa ajuda!!
GOSTEI 1
POSTAR