como saber se houve atualização com o UPDATE ?
bom galera é o seguinte,
Estou executando uma instrução SQL UPDATE:
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 !!!
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
Curtidas 0
Melhor post
Dmalta
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
GOSTEI 1
Mais Respostas
Fabiano Góes
03/08/2006
Estou utilizando:
Delphi7 -> ADO -> FireBird 1.5.3
Delphi7 -> ADO -> FireBird 1.5.3
GOSTEI 0
Dmalta
03/08/2006
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.
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.
GOSTEI 0
Fabiano Góes
03/08/2006
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 !!!
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 !!!
GOSTEI 0
Dmalta
03/08/2006
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!
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!
GOSTEI 0