Erro ao alterar a base de dados - Registo inexistente

(Herberto Silva) #1

Boas… ao alterar um registo na minha base de dados surge-me o erro:
Erro ao alterar a base de dados - Registo inexistente
Alguem pode-me ajudar…
Obrigada

(Cleyton Euler) #2

Isso aconteceu comigo no seguinte cenário:

Na tabela tinha o campo PK definido como incremento automático. No SC eu não tinha definido como a aplicação mandava o valor da PK.

Resolvi assim:

No formulário do SC no campo que corresponde a PK na tabela, defini o valor no banco de dados para incremento automático e mandei forçar o valor.

(Herberto Silva) #3

Já efectuei essa opção mas… agora o campo numero que não tinha criado na tabela anteriormente está a zero, e continua a originar o mesmo erro.

(Herberto Silva) #4

ESQUECI-ME de DIZER:
apenas isto acontece quando altero o 1º campo NOME, anteriormente não tinha definido na estrutura da tabela qualquer campo com autoincremento. Será Obrigatório?

(Cleyton Euler) #5

Desculpe, agora que entendi sua dúvida. O problema ocorre na alteração do registro e não na inclusão.

Na opção SQL da sua aplicação, confira se tem chave primaria definida. Assumindo que na tabela você tem um campo PK, nesta opção deve aparecer seu campo com *

(Herberto Silva) #6

Pensava que era apenas no campo nome que me ocorria o erro, mas acontece sempre que altero algum campo com excepção do campo “situacaoh”
a estrutura é a seguinte criada no PHP Admin:

Tabela: desalojado
Campo Tipo Nulo Defeito Comentários
numero int(11) Não
nome varchar(45) Não
morada varchar(50) Não
freguesia varchar(30) Não
concelho varchar(30) Não
dtnasc varchar(10) Não
parentesco varchar(10) Não
local varchar(50) Não
situacaoh tinytext Não
obs varchar(10) Não

Índices: Documentação

Nome do Índice Tipo Único Packed Campo Quantidade Collation Nulo Comment
nome BTREE Não Não nome 164 A
freguesia BTREE Não Não freguesia 2 A
morada BTREE Não Não morada 41 A
local BTREE Não Não local 7 A

Espaço ocupado:
Tipo Utilização
Dados 20,000 Bytes
Índice 13,312 Bytes
Total 33,312 Bytes

  	Estatísticas dos registos:

Itens Valor
Formato dinâmico
Registos 164
Comprim. dos reg. ø 121
Tamanho dos reg. ø 203 Bytes
Criação 24-Fev-2010 às 15:46
Actualização 24-Fev-2010 às 15:49
Verificação 24-Fev-2010 às 15:46

[glow=red,2,300]criei neste no SC como chave primario no SC o numero, mas ao efectuar agora a validação do novo campo no SC o mesmo esta vazio, mesmo colocando um autoincremento automatic.
Como poderi preencher os calores do campo numero com o valor do registo[/glow]

(Cleyton Euler) #7

Heberto,

Pelo que entendi, sua tabela está sem chave primária.

No caso em questão, a sentença SQL UPDATE precisa de um valor único para saber qual registro deve atualizar.

Ex.:

UPDATE desalojado SET nome=‘novo_valor’ WHERE numero=‘1’

Aqui o registro que tiver 1 no campo numero vai ter o valor do campo nome alterado para novo_valor

O SC precisa saber a chave primária da sua tabela para utiliza-la na claúsula WHERE. Como está dizendo que em qualquer campo que altera dá o erro de registro inexistente, acho que seria isso.

Isto independe de sua chave primária ser auto-incremento ou não.

Na opção SQL da sua aplicação qual o campo está marcado com asterístico (*)?

(Herberto Silva) #8

é o campo NUMERO

(Cleyton Euler) #9

Na sua tabela esse campo está como chave primária?

(George Carvalho) #10

Você não pode alterar um campo que é chave primaria, para solucionar este problema crie um sequencial_id (ou outro nome que lhe convier) como chave primária, neste caso você poderá alterar qualquer campo da tabela.

O campo que você criar como chave não precisa aparecer no formulário, e coloque-o como auto-incremento manual.

George Carvalho

(Herberto Silva) #11

Sim… já está a funcionar… fica aqui mais uma dica importante para a navegação SC
OBRIGADA!..