Update affected more than 1 record (DBX) Problema
24/02/2006
0
´[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
Posts
24/02/2006
Vinicius2k
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+
26/02/2006
Eniorm
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?????,
27/02/2006
Vinicius2k
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).
Clique aqui para fazer login e interagir na Comunidade :)