Como evitar duplicação de registros?
Eu tenho um form simples para cadastro dos setores. A estrutura da tabela de setores é seguinte:
CREATE TABLE ´SETORES´(
AUTOMATICO INTEGER NOT NULL,
NOME VARCHAR(40) COLLATE PXW_INTL850,
CONSTRAINT ´PK_SETORES´ PRIMARY KEY(´AUTOMATICO´)
);
Sendo que o campo automático é preenchido automaticamente em um trigger incrementandoo valor de um generator.
Adicionei no form um IBDataSet. A SelectSQL ficou:
SELECT AUTOMATICO, NOME FROM SETORES
No DataSetEditor selecionei como KeyField somente o campo automático e em UpdateFields selecionei ambos os campos e pressionei ´Generate SQL´.
Adicionei um DataSetProvider apontando para esse IBDataSet e depois adicionei um ClientDataSet apontando para esse DataSetProvider.
Adicionei os campos do ClientDataSet pelo FieldsEditor.
Pois bem, o resto do form é somente um DBEdit para o campo nome e um DBNavigator. O problema é o seguinte: A chave primária é o campo ´AUTOMATICO´. Ele nunca vai se repetir porque ele é gerado automaticamente via trigger. Então como faço agora para evitar que o usuário insira um segundo registro com o mesmo ´NOME´? Pq a partir do momento que a chave primária é o campo AUTOMATICO preencher um segundo registro com um nome existente não leventará nenhuma exceção...
Agradeço qualquer ajuda.
CREATE TABLE ´SETORES´(
AUTOMATICO INTEGER NOT NULL,
NOME VARCHAR(40) COLLATE PXW_INTL850,
CONSTRAINT ´PK_SETORES´ PRIMARY KEY(´AUTOMATICO´)
);
Sendo que o campo automático é preenchido automaticamente em um trigger incrementandoo valor de um generator.
Adicionei no form um IBDataSet. A SelectSQL ficou:
SELECT AUTOMATICO, NOME FROM SETORES
No DataSetEditor selecionei como KeyField somente o campo automático e em UpdateFields selecionei ambos os campos e pressionei ´Generate SQL´.
Adicionei um DataSetProvider apontando para esse IBDataSet e depois adicionei um ClientDataSet apontando para esse DataSetProvider.
Adicionei os campos do ClientDataSet pelo FieldsEditor.
Pois bem, o resto do form é somente um DBEdit para o campo nome e um DBNavigator. O problema é o seguinte: A chave primária é o campo ´AUTOMATICO´. Ele nunca vai se repetir porque ele é gerado automaticamente via trigger. Então como faço agora para evitar que o usuário insira um segundo registro com o mesmo ´NOME´? Pq a partir do momento que a chave primária é o campo AUTOMATICO preencher um segundo registro com um nome existente não leventará nenhuma exceção...
Agradeço qualquer ajuda.
Djorius
Curtidas 0
Respostas
Djorius
10/08/2005
alguém :?:
GOSTEI 0
Fievel
10/08/2005
1º alternativa: colocar o campo NOME como primário também.
2º alternativa: fazer um select antes de adicionar o novo registro e verificar se o nome informado não existe.
2º alternativa: fazer um select antes de adicionar o novo registro e verificar se o nome informado não existe.
GOSTEI 0