Olá Walter,

Esse meu erro não está acontecendo em relacionamentos MD.
É em um cadastro normal, de pessoa, aliás em todos os cadastros.
Ontem em casa debugando a aplicação acabei por encontrar o problema.
Quando salvo o registro (applyupdates) o registro é incluído na tabela mas
o clientdataset não tem o código daquele registro para efetuar uma alteração
logo após esse insert então quando clico no botão editar e faço alguma alteração
em qualquer campo e clico em gravar de novo para salvar a atualização dá o 
referido erro.
Esse erro ocorre por que quando ele vai fazer o update o cod_pessoa na cláusula 
Where está indo 0.
E para tentar resolver fiz após o applyUpdates do botão salvar um select 
buscando o max
codigo na tabela de pessoa e jogo no tfield do clientdataset. Assim resolvi o 
problema, mas
é gambiarra né. Gostaria de saber se há alguma forma de o clientdataset pegar 
automático
o codigo que está sendo inserido. Tem o tal de "delta" do clientdataset, será 
que não seria por ae?
De qualquer forma Walter, valeu pelas explicações referentes ao modelo MD.
Obrigado.

Atenciosamente,

Rodrigo de Moura
----- Original Message ----- 
From: Walter Alves Chagas Junior 
To: 'delphi-br@yahoogrupos.com.br' 
Sent: Tuesday, August 22, 2006 9:26 AM
Subject: RES: [delphi-br] Erro em alteração de registro.


meu, o povo aqui deve lembrar de quando eu penei com este tipo de erro em
relacionamentos MD..

Seu problema pode estar relacionado com a forma como voce configurou o DSP.
Vejemos:

Dê um clique duplo na query master. Aparecerá o FieldsEditor. Manda
adicionar
todo mundo.

Em cada TField, localize a propriedade providerflags. Os campos que são
chave primária na Tabela, ficaraão com pfInkey true nos, os demais ficou
false. Os pfInUpdate e pfInWhere todos ficam como true (em todos os campos).

Sete a propriedade CursorLocation da qMaster ou do sqldMaster pra
"clUseServer"

Se a sentença SQL da qMaster tiver parametros, ajuste as configurações dele,
na propriedade "Parameters" (A não configuração do parametro irá dar pau nos
ClientDatasets posteriormente)


Abra a propriedade Options do DataSourceProvider. Todas as subpropriedades
dele devem ficar como false, exceto as poCascadeDeletes, poCascadeUpdates,
poAutoRefresh. Estas tres deverão ficar setadas como True.

Mude a propriedade UpdateMode para "upWhereKeyOnly"

Ative o clientDataSet Master, mudando a propreiedade Active dele para True.
Dê um clique duplo, aparecerá o FieldsEditor. Manda adicionar todo mundo.


Para fazer uma inclusão ou uma edição em um relacionamento MD: você deve dar
insert/Edit em todos os Datasets. Para dar o post, dê post apenas nos
details, NO MASTER PRINCIPAL SOMENTE DAR O APPLYUPDATES DIRETO. Não dê
applyUpdates em algum detail.



[]s

Walter Alves Chagas Junior
Projeto e desenvolvimento de sistemas
Telemont Engenharia de telecomunicações S/A
Belo Horizonte - MG - Brasil
[EMAIL PROTECTED]
Fone: (31) 3389-8215 Fax: (31) 3389-8200

Parabens Telemont - Somos a 8ª maior empresa do Brasil no segmento de
construção!!


-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de Rodrigo de Moura
Enviada em: segunda-feira, 21 de agosto de 2006 16:15
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Erro em alteração de registro.


Boa tarde amigos,

Na alteração do registro quando vou dar o applyUpdates me dá o seguinte
erro:
"Record not found or changed by another user".
Minha aplicação não está em rede e todas as configurações do datasetprovider
estão
corretas também.
Em minhas telas de cadastro trabalho com controle de botões (incluir,
editar, salvar,
excluir, cancelar) pelo OnStateChange do DataSource. O interessante é que
esse erro
ocorre somente quando faço qualquer alteração no registro logo após a
inclusão do mesmo.
Explicando: após incluir o registro clicando no botão salvar, se por acaso
quiser fazer
alguma alteração, clico no botão editar e faço a alteração necessária.
Quando clico no
botão salvar ocorre o citado erro.
Mas se eu sair da tela de cadastro e voltar nela novamente e pela tela de
procura retornar o
registro para a tela do cadastro e fizer qualquer alteração é salvo
normalmente.
Utilizo Delphi 7, DBExpress com clientDataSet, Firebird 1.5 e Driver UIB.
Qualquer ajuda será bem vinda!!

Atenciosamente,

Rodrigo de Moura

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos








[As partes desta mensagem que não continham texto foram removidas]

 

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a