Dados Duplicados

Delphi

20/09/2003

Fiz um banco de dados no Access.

Como eu faço para que o usuario não cadastre, duas vezes o mesmo registro.

EX:

Cadastro de Estados.
Estado:___

Codigo | Estado
01 | GO <- Registros repetidos...
02 | MT
03 | GO <- Regsitros repetidos...


Ullrich

Ullrich

Curtidas 0

Respostas

Sousa_thiago

Sousa_thiago

20/09/2003

Eu não conheço muito de Access. Mas como banco de dados é ´tudo igual´ acredito que a melhor forma de ´solucionar´ seu problema seria colocando a coluna UF como chave primário.
Dessa forma além de vc não permitir entrada de dados repetida vc ainda torna uma pesquisa futura mais rápida supondo usar o indice para localização do arquivo.


GOSTEI 0
Ullrich

Ullrich

20/09/2003

Caro sousa_thiago eu criei a tabela de cadastro de Uf com dois campos:

Tab_Uf

1. ID_Uf
2. Nome

O Primeiro campo nunca se repete (ID_Uf), mas o segundo SIM (Nome) e é ai que está minha duvida, como faço para não gravar um estado que já existe?

Pensei em algum tipo de consulta, mas não consigo imaginar como deve ser feita.

Se poder me ajudar ficaria muito grato. Obrigado pela atenção.


GOSTEI 0
Daaneto

Daaneto

20/09/2003

No Access, vá em estrutura da tabela.

Tem um propriedade chamada ´Indexado´ que possui três opções: Não, Sim (Duplicação autorizada), Sim (Duplicação não autorizada).

Portanto, para o campo em questão (Nome), deixe como Sim (Duplicação não autorizada).


GOSTEI 0
Mmtoor

Mmtoor

20/09/2003

Prezado amigo:
Provavelmente esta utilizando componentes AdoTable, ou TTable. Isso realmente duplicará seus dados ao gravar as edições.
Confirme esta colocação e cole a procedure que está utilizando para gravação.
Antecipadamente informo que sweu problema pode ser resolvido se utilizar AdoQuery ou TQuery.
MMTOOR2003


GOSTEI 0
Japa

Japa

20/09/2003

Amigo utilize a função locate se voce estiver usando TTable é claro:
if not Tabela.Locate(´Nomer´, Edit.Text,[]) then begin //coloque aqui o codigo para cadastrar mais end;


A função locate ela procura o que voce colocou no Edit.Text..
Voce não deve esquecer que as letras maiuscular e minuscular são diferentes por isso ela não localiza...
Exemplo:
MS e diferente de ms.

espero ter te ajudado... :wink:


GOSTEI 0
Ullrich

Ullrich

20/09/2003

Estou usando o componente AdoQuery, será que da certo estes comandos:

if not AdoQueryCidade.Locate(´Nome´, NomeCid.Text,[]) then
begin
// Gravar os dados.
else
// Mensagem de erro;

Vou tentar algo parecido com isto, obrigado pela atenção.


GOSTEI 0
Ullrich

Ullrich

20/09/2003

Solucionei desta maneira:

Criei no modulo, uma queryVerifica.

Antes de gravar faço uma filtragem na tabela pela queryVerifica.
Depois é só saber se contem ou não dados na queryVerifica.


Obrigado a todos.


GOSTEI 0
POSTAR