Ir para conteúdo
Fórum Script Brasil
  • 0

TQuery


Pedro Dias

Pergunta

Bom dia pessoal.

Estou com um problema e não consigo resolver. E estou precisando disso com urgência. Provável que se eu não consiga antes do prazo resolver possa perder meu emprego.

É o seguinte, tenho um componente dtTemp do tipo TQuery. Tenho que percorrê-lo e atualizar todas todas a linhas. E eu também queria saber se tem alguma função pra eu ter um resultado da diferença no valor de meses entre duas datas.

With dtTemp do

begin

First;

dataFim := StrToDate(MaskEditDataFim.Text);

mesesStr := IntToStr(MonthsBetween(dataIni,dataFim));

meses := StrToInt(mesesStr);

While not dtTemp.Eof do

begin

brinco := Fields[1].AsString;

SQL.Clear;

SQL.Add('UPDATE tempTeste SET AnLote = :lote WHERE AnNumBrinco = :brinc');

ParamByName('brinc').AsString := brinco;

if (meses >= 0) AND (meses <=12) then

begin

ParamByName('lote').AsString := 'dose';

end

else if (meses > 12) AND (meses <= 24) then

begin

ParamByName('lote').AsString := 'vinte e quatro';

end

else if (meses > 24) then

begin

ParamByName('lote').AsString := 'maior';

end;

ExecSQL;

Next;

end;

dtTemp.SQL.Clear;

dtTemp.SQL.Add('SELECT FazCod, AnNumBrinco, AnDataNasc, AnLote, AnSexo FROM tempTeste');

dtTemp.Open;

end;

Quando eu coloco o Next e para passar para o próximo registro é quando ocorre o erro. Sem o Next ele funciona, porém ele altera só o primeiro registro.

Alguém pode me ajudar.

Qualquer duvida quanto a minha questão.

e-mail: pedrocarvalhodias@hotmail.com

facebook: https://www.facebook.com/profile.php?id=100002952873534

Agradeço desde já.

Editado por Pedro Dias
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

reveja o seu código

voce está usando a TQuery ( dtTemp ) para executar 2 processos

SQL.Add('UPDATE tempTeste SET AnLote = :lote WHERE AnNumBrinco = :brinc');

e

dtTemp.SQL.Add('SELECT FazCod, AnNumBrinco, AnDataNasc, AnLote, AnSexo FROM tempTeste');

use um TQuery para UPDATE e outro para SELECT e não terá erro

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Não mudou em nada =/

O que acontece é que quando entra no While ele deve fazer um UPDATE pra cada registro.

E depois do While eu faço um SELECT pra buscar os registros atualizados.

Quando eu não dou um 'Next' dentro do While e busco apenas o primeiro registro, ele atualiza e mostra depois. Mas quando percorro os registros, ele me retorna um erro.

Link para o comentário
Compartilhar em outros sites

  • 0
Quando eu coloco o Next e para passar para o próximo registro é quando ocorre o erro. Sem o Next ele funciona, porém ele altera só o primeiro registro.

acho que voce ainda não entendeu o que ocorre... voce esta usando a mesma Tquery para executar um select ( selecionar os registros da tabela ) e executando um update ( atualizar os dados da tabela )

entretanto voce não leva em conta que um comando next é executado antes que o update termine ... em função disso o next tenta achar o proximo registro que já não existe mais, porque o select já foi desfeito

While not dtTemp.Eof do
...
SQL.Clear;

OBS: Coloque a mensagem de erro extamente como é mostrada na tela

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...