Fórum como saber se houve atualização com o UPDATE ? #326782

03/08/2006

0

bom galera é o seguinte,

Estou executando uma instrução SQL UPDATE:
´UPDATE ´ + sTabelaEntrada +
´ SET FLAG = ´+#39+´P´+39+´, NUMERO_LOTE_APRES = ´+39+FormatFloat(´000´, iNumLote)+39+´,´+
´ SEQ_LOTE = ´+39+FormatFloat(´000´, iSeq_Lote)+39+
´ WHERE BANCO_DES  = ´ + 39 + copy( linhaProc, 42, 03) +39+
´ AND AGENCIA_DES  = ´ + 39 + copy( linhaProc, 45, 04) +39+
´ AND CONTA_DES  LIKE ´+ 39 + ´¬´ + copy( linhaProc, 21, 10) + ´¬´ +39+
´ AND NUMERO_DOC   =  ´ + 39 + copy( linhaProc, 35, 06) +39+
´ AND VALOR      LIKE ´+ 39 + ´¬´ + copy( linhaProc, 08, 12) + ´¬´ +39+´ ´);


Como faço pra saber se foi atualizado algum registro ????
porque como esta instrução está dentro de um loop e ela é executada muitas vezes eu precisar executar uma ação se houve atualização e outra se não houve atualização,

desde já agradeço a todos !!!


Fabiano Góes

Fabiano Góes

Responder

Post mais votado

03/08/2006

Depende do [b:ca03db3dbc]banco de dados[/b:ca03db3dbc] e dos [b:ca03db3dbc]componentes de acesso[/b:ca03db3dbc] que você está usando. Qual é o seu ambiente


Dmalta

Dmalta
Responder

Gostei + 1

Mais Posts

03/08/2006

Fabiano Góes

Estou utilizando:

Delphi7 -> ADO -> FireBird 1.5.3


Responder

Gostei + 0

03/08/2006

Dmalta

Fabiano,

Firebird com ADO? Escolha interessante. Bem, eu nunca usei ADO para acessar o Firebird, mas se o driver para ADO está completamente implementado a propriedade [b:989286524e]RowsAffected[/b:989286524e] de TADOQuery deve funcionar. Ela retorna a quantidade de linhas que foram alteradas ou excluídas com o seu último comando ExecSQL.


Responder

Gostei + 0

03/08/2006

Fabiano Góes

dmalta,

funcionou perfeitamente, muito obrigado !!!!

mais aproveitando a situação mais uma duvida:

e se fosse uma Stored Procedure sendo executada com o componente:
[color=red:dc865195f7]ADOStoredProc1[/color:dc865195f7]

como varia pra saber se ocorreu atualização ???

grato !!!


Responder

Gostei + 0

03/08/2006

Dmalta

Como o Delphi não tem a menor idéia do que faz sua [i:77497c012c]stored procedure[/i:77497c012c], TADOStoredProc não tem como determinar o valor de uma propriedade RowsAffected. Inclusive sua SP poderia executar vários update, insert e delete em uma só tacada, o que torna ainda mais ambiguo o número de linhas afetadas.

A solução é usar dentro da [i:77497c012c]stored procedure[/i:77497c012c] a variável global de sistema [b:77497c012c]ROW_COUNT[/b:77497c012c] do Firebird e retornar esse valor em um parâmetro de output.

Você tem que chamar ROW_COUNT logo após a sentença UPDATE ou DELETE ou INSERT para ter o número de linhas afetadas.

Depois aparece lá no meu [url=http://dmalta.blogspot.com]blog[/url], que é sobre Delphi e desenvolvimento de software em geral.

Um abraço!


Responder

Gostei + 0

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

Aceitar