Update affected more than 1 record (DBX) Problema

24/02/2006

0

Estou enfrentando esse problema, ao tentar dar o Post, ApplyUpdates, é retornado o seguinte erro

´[b:ce1b599629]Update affected more than 1 record´[/b:ce1b599629]

Notei que o DataSetProvider está setado para não permitir que mais de um registro seja alterado (poAllowMultiRecordUpdates=False). É isso mesmo que eu quero..

Notei tbm q o problema acontece porque tenho algums registros que são iguais, onde será diferenciado apenas pelo numero de série,

Alguém sabe como contornar isso?


Eniorm

Eniorm

Responder

Posts

24/02/2006

Vinicius2k

Enio,

Isto acontece exatamente por ter registros iguais e a propriedade [b:2742e65bf8]UpdateMode[/b:2742e65bf8] do TDataSetProvider *deve* estar setada para [b:2742e65bf8]upWhereKeyOnly[/b:2742e65bf8].
Esta propriedade é a responsável por definir quais os campos entram na cláusula WHERE da instrução SQL de UPDATE gerada pela Midas.

Altere o [b:2742e65bf8]UpdateMode[/b:2742e65bf8] para [b:2742e65bf8]upWhereAll[/b:2742e65bf8]. Com isso a cláusula WHERE incluirá todos os campos e, a não ser que você tenha registros com 100¬ dos campos repetidos, o erro não mais ocorrerá.

T+


Responder

26/02/2006

Eniorm

blza..... mas veja só

no select eu uso assim pra abrir o dataset onde o registro será alterado:

SELECT NOME, END, ..... FROM...

veja q o campo código eu não estou buscando, pois assim qdo eu inserir, o proprio banco vai criar o autoincremento (FB)

qdo eu trazia o campo codigo, eu tinha problema, pois o campo codigo não poreria ficar em branco.

me disseram pra usar o TField setado para AutoInc, mas eu não gosto de usar os TFields,

então como devo proceder?????,


Responder

27/02/2006

Vinicius2k

Enio,

Se você não trouxer para no select ao menos um campo único, você terá este problema.
O que a Midas faz é construir para você a instrução SQL para atualizar os dados no servidor e ela constrói a instrução baseada nos campos que você trouxe no select.
Penso que você deveria trazer o campo único no select e setar ´Required := False;´ no TField correspondente ao seu campo único (tanto no TSQLDataSet quanto no TClientDataSet).


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar