Erro no DbGoBottom() / SQLRDD
Enviado: 12 Set 2012 09:44
Bom dia
Estou com um problema na função DbGoBottom() com o SQLRDD e PostGreSql 8.3, o problema acontece quando excluo o último registro inserido, e tento usar a função DbGoBottom() me retorna a seguinte mensagem: Error SQLRDD/1 Tentativa de gravar um registro em tabela vazia sem antes adicionar uma linha - RollBack executed.: CARRETEIRO., antes que falem que estou tentando gravar sem dar um append blank, estou dando o append blank sim, esse erro acontece após o DbGoBottom() .
Error at ...: SR_WORKAREA:RUNTIMEERR(1820) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:RUNTIMEERR(1852) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:WRITEBUFFER(2091) in Module: ..\source\sqlrdd2.prg
Called from : DBGOBOTTOM(0) in Module:
Called from : POECODIGO(1341) in Module: APOIOXHB.PRG
Called from : TELACARRETEIRO(462) in Module: LACAD.PRG
Called from : ENTRA_DADOS(629) in Module: APOIOXHB.PRG
Called from : CADPRODUCAO(110) in Module: LACAD.PRG
Called from : CADASTROS(68) in Module: LACAD.PRG
Called from : INICIOSISTEMA(579) in Module: LATICINI.PRG
Called from : MAIN(520) in Module: LATICINI.PRG
Fazendo alguns testes percebi que isso acontece porque o maior número do campo sr_recno na tabela que foi excluido o registro e menor do que o Next Value da sequence que esta no banco de dados, dai para frente toda vez que eu tentar usar o DbGoBottom() vai dar erro, para sanar o problema eu tenho que ir na sequence da tabela e ajustar o Next Value para o numero do maior sr_recno + 1. (No Caso da sequencia do Next Value esta correto, porque se foi excluído a sequencia continua não volta, acredito que o sqlrdd deva fazer algum tipo de comparação entre o maior sr_recno com o next value).
Se for excluído qualquer outro registro que não seja o último inserido funciona tudo certinho, alguém já viu esse problema e tem alguma ideia ou uma dica para resolve-lo.
Obrigado
Anderson Camilo
Estou com um problema na função DbGoBottom() com o SQLRDD e PostGreSql 8.3, o problema acontece quando excluo o último registro inserido, e tento usar a função DbGoBottom() me retorna a seguinte mensagem: Error SQLRDD/1 Tentativa de gravar um registro em tabela vazia sem antes adicionar uma linha - RollBack executed.: CARRETEIRO., antes que falem que estou tentando gravar sem dar um append blank, estou dando o append blank sim, esse erro acontece após o DbGoBottom() .
Error at ...: SR_WORKAREA:RUNTIMEERR(1820) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:RUNTIMEERR(1852) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:WRITEBUFFER(2091) in Module: ..\source\sqlrdd2.prg
Called from : DBGOBOTTOM(0) in Module:
Called from : POECODIGO(1341) in Module: APOIOXHB.PRG
Called from : TELACARRETEIRO(462) in Module: LACAD.PRG
Called from : ENTRA_DADOS(629) in Module: APOIOXHB.PRG
Called from : CADPRODUCAO(110) in Module: LACAD.PRG
Called from : CADASTROS(68) in Module: LACAD.PRG
Called from : INICIOSISTEMA(579) in Module: LATICINI.PRG
Called from : MAIN(520) in Module: LATICINI.PRG
Fazendo alguns testes percebi que isso acontece porque o maior número do campo sr_recno na tabela que foi excluido o registro e menor do que o Next Value da sequence que esta no banco de dados, dai para frente toda vez que eu tentar usar o DbGoBottom() vai dar erro, para sanar o problema eu tenho que ir na sequence da tabela e ajustar o Next Value para o numero do maior sr_recno + 1. (No Caso da sequencia do Next Value esta correto, porque se foi excluído a sequencia continua não volta, acredito que o sqlrdd deva fazer algum tipo de comparação entre o maior sr_recno com o next value).
Se for excluído qualquer outro registro que não seja o último inserido funciona tudo certinho, alguém já viu esse problema e tem alguma ideia ou uma dica para resolve-lo.
Obrigado
Anderson Camilo