Fórum record not found or changed by another user #382948

06/08/2010

0

Estou tendo esse problema para atualizar uma tabela mysql. Usando DBX, preciso atualizar os dados de uma tabela principal em FB para uma tabela secundaria em mysql repassando os campos, porem no momento de dar um applyupdate, retorna esse erro, percebi que isso acontece se todos os campos do registro em questao estiverem iguais nas 2 tabelas, mas faço isso tb em outras tabelas de produtos por exemplo, as flags do SQLDataset estao configuradas, o datasetprovider tb esta configurado para whereonlykey, mas nao vai, nao sei mais o que fazer.   Alguem tem uma luz ?   Abs  
Felipe Ip

Felipe Ip

Responder

Posts

06/08/2010

Marco Salles

como esta sua configuração dos providers Flags ???   e pq o DataSetProvider esta para whereOnlyKey ???
Responder

Gostei + 0

06/08/2010

Felipe Ip

TSQLDataset:   campo chave: update = true where = true key = true   demais campos: update = true where = false key = false   TDataSetProvider UpdateMode = wherekeyonly   TClientDataset igual ao TSQLDataset     Abs  
Responder

Gostei + 0

06/08/2010

Eriley Barbosa

Primeiro me explica uma coisa tua chave primária é gerada por um generator? Pq se não, tem que ter chave mesmo antes de dar o post;

Exclua os componentes e vamos do ZERO:

DatasetProvider, mude a propriedade UPDATEMODE para upWhereKeyOnly
SQLDataset, faça o SQL e adicione os campos. Selecione o campo Chave e mude a propriedade PROVIDERFLAGS, deixe true para UPDATE, WHERE e KEY...agora os demais campos tu vai apenas deixar o UPDATE, deixando o where FALSE (para os campos externos deixar tudo FALSE, são aqueles que vem pelo LEFT join ).
Agora  inclua os campos no clientdataset e realize a mesma configuração que fez no SQLDataset.
Faça o mesmo teste que gerou os erros.

Atenciosamente  
Eriley
Responder

Gostei + 0

06/08/2010

Felipe Ip

Eriley, obrigado pela mensagem, mas fiz isso varias vezes, exatamente como vc descreveu.   Quanto a chave primaria, veja o que estou fazendo:   Tenho uma tabela de clientes, em FB. (chave primaria gerada por uma funcao que procura o ultimo codigo) Tenho uma tabela com a mesma estrutura, em MYSQL.   Quando é feito alteracao em algum cadastro ou inserido um novo cliente sempre sera feito na tabela FB.   Entao preciso atualizar a tabela em MYSQL. Para isso pesquiso os cadastros alterados ou novos, atraves de um TSQLDataset, depois faço um laço nele e vou pesquisando no MYSQL, se encontrar o codigo, altero (Edit) e depois Post e applyupdate, vou para o proximo registro do TSQLDataset e assim por diante.     Abs Obrigado
Responder

Gostei + 0

06/08/2010

Felipe Ip

Esqueci de mencionar, faço a mesma coisa em uma tabela de produtos e esse maldito erro, nunca ocorreu.   Abs  
Responder

Gostei + 0

06/08/2010

Eriley Barbosa

Teria como postar o DFM do form onde tem os componentes que gravam no FB e no MySQL.   Atenciosamente   Eriley
Responder

Gostei + 0

18/08/2010

Felipe Ip

Depois de alguns testes percebi o seguinte:   Caso envie um registro identico (sem nenhuma alteracao) pro outro banco, o erro ocorre, caso eu faça qualquer alteracao em qualquer campo, o erro NAO acontece.   Entao se ele vai passar os dados sem alteracao, quer dizer todos os campos tem os mesmos dados, o erro ACONTECE.   Obrigado
Responder

Gostei + 0

18/08/2010

Felipe Ip

Resolvido, um campo timestamp no firebird os dados estavam null e no banco mysql o padrao esta 00/00/00 00.00.00, passei a nao enviar mais esse campo, ou preencher ele com valor e o erro sumiu, claro q usando os providers flags dos campos.   Obrigado a todos
Responder

Gostei + 0

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

Aceitar