erro: 2 pc alterando mesmo registro
uso dbexpress + d7 + firebird - quando uma usuário modifica um registro e tem outro usuario editando o mesmo registro aparece esse erro quando o último vai salvar....
alguem sabe como contornar isso?
record not found or changed by anothe user
alguem sabe como contornar isso?
Guibas
Curtidas 0
Respostas
Fsflorencio
18/11/2004
Acredito que enquanto um usuário está alterando o registro a transação fica ativa ´travando´ o registro.
Para contornar este problema sempre procuro deixar as transações o mais curtas possíveis.
Ex.: Quando aperto o botão OK eu abro a transação, modifico o registro e comito a transação, minimizando astronomicamente esta possibilidade de erro. Para isto não costumo utilizar data-aware controls (componentes como dbedit) para intermediar o processo, uso controles comuns e passo os conteúdos como parâmetros de uma query para executar um update.
Para contornar este problema sempre procuro deixar as transações o mais curtas possíveis.
Ex.: Quando aperto o botão OK eu abro a transação, modifico o registro e comito a transação, minimizando astronomicamente esta possibilidade de erro. Para isto não costumo utilizar data-aware controls (componentes como dbedit) para intermediar o processo, uso controles comuns e passo os conteúdos como parâmetros de uma query para executar um update.
GOSTEI 0
Afarias
18/11/2004
Vc está usando DBX com ClientDataSets?? se SIM, qual a configuração do [b:04f283781d]UpdateMode[/b:04f283781d] dos seus Providers?
T+
T+
GOSTEI 0
Guibas
18/11/2004
upwhereall...
GOSTEI 0
Afarias
18/11/2004
Sempre quando vc tem esse erro vc deve ´re-carregar´ o registro e tentar novamente. Ele informa apenas q o registro no banco não é mais o q vc está editando em memória.
Para definir isso (quando o registro é ou não o mesmo e se pode ou nào ser atualizado) vc define o UpdateMode e os ProviderFlags
upWhereALL é muito restritivo! E vc deve estar *muito* atento aos ProviderFlags!
uma ´dica´ é mudar o UpdateMode para [b:84ce4ef7ff]upWhereKeyOnly[/b:84ce4ef7ff] e definir nos ProviderFlags (dos TFields do DataSet) o campo chave apenas como pfInKey=True
T+
Para definir isso (quando o registro é ou não o mesmo e se pode ou nào ser atualizado) vc define o UpdateMode e os ProviderFlags
upWhereALL é muito restritivo! E vc deve estar *muito* atento aos ProviderFlags!
uma ´dica´ é mudar o UpdateMode para [b:84ce4ef7ff]upWhereKeyOnly[/b:84ce4ef7ff] e definir nos ProviderFlags (dos TFields do DataSet) o campo chave apenas como pfInKey=True
T+
GOSTEI 0