GARANTIR DESCONTO

Fórum Help ClientDataSet #287449

08/07/2005

0

Tenho uma view simples no banco de dados, utilizando as seguintes tabelas, por exemplo:

CLIENTES
Codigo,
Nome,
Endereco,
Codigo do municipio
MUNICIPIOS
Nome do municipio

Ao incluir um novo cliente, qdo quero salvar e executar o ApplyUpdates, preciso executar refreshrecord na intenção de trazer o nome do município... seria como um refresh.. porem o refresh me atualizaría todo clientdataset.

Utilizando Refreshrecord após o Applyupdates, eu recebo uma mensagem de erro :
´Record not found or change by another user´.

Vcs podem me ajudar ?


Joaogutheil

Joaogutheil

Responder

Posts

08/07/2005

Joaoshi

Colega,

Antes de dar o POST no ClientDataSet você atualiza o campo nome do Municipio (tire os flags do campo sem update, sem where).

Espero ter ajudado.


Responder

Gostei + 0

10/08/2007

Jeffmanske

Olá, estou com o mesmo problema... vc conseguiu solucionar?


Att,


Jefferson Manske
jmanske@terra.com.br


Responder

Gostei + 0

11/08/2007

Beppe

Eu não posso te dizer o que fazer, pois depende da tua arquitetura. Posso te oferecer opções.

Como está DSP.UpdateMode? O usual é upWhereAll, que trata concorrência otimista, e monta uma clausula WHERE com os valores de todos os campos marcados com pfInWhere em ProviderFlags. Se usar Firebird, defina os campos persistentes no SDS e configure esta propriedade. SQLServer, pode ser no próprio CDS.

Se DSP.UpdateMode = upWhereAKeyOnly, então vc deve informar quais campos são chave, via pfInKey em ProviderFlags.

Bom, isto que indiquei acima trata o ´Record not found´ e deve resolver caso o sistema apresente a falha mesmo com um usuário logado apenas. Já a parte ´change by another user´ é semelhante, mas só pode ocorrer com usuários concorrentes, e usando upWhereAll no DSP. Não é ruim não, pelo contrário, isto garante que dados de um usuário não serão sobrescritos no ApplyUpdates.


Responder

Gostei + 0

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

Aceitar