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