Galera, boa tarde...
helpem-me.
Tenho um bloco multi-record de chave composta por dois campos.
Preciso exibir um alert informando o erro se no momento em que eu clicar no botão, existir duplicidade entre as chaves do bloco...
A pk da tabela já cuida disso, porém, meu chefe quer alertazinho...
Ao que tudo indica, precisarei varrer o bloco e comparar todos os registros...
Alguém pode me dar uma idéia.....
Tratamendo de Duplicidade em Bloco Multi Record
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Qua, 22 Fev 2006 3:17 pm
- Localização: RJ
Espero que ajude
Abraços,
Maverick
Abraços,
Maverick
Exatamente,
Tenho um par
'RJ' 1
'SP' 1
'SP' 2
'RO' 1
'RR' 1
'RJ' 1
São minhas chaves...
quando eu salvar tenho que exibir um alert de erro quando ele encontrar o segundo 'RJ' 1
.
Tenho um par
'RJ' 1
'SP' 1
'SP' 2
'RO' 1
'RR' 1
'RJ' 1
São minhas chaves...
quando eu salvar tenho que exibir um alert de erro quando ele encontrar o segundo 'RJ' 1
.
-
- Rank: DBA Pleno
- Mensagens: 241
- Registrado em: Ter, 09 Out 2007 11:15 am
- Localização: Batatais - SP
ok..
eu utilizo no pre-insert fazendo um select na propria tabela dando um count com os campos da chave se retornar 1 é porque ele já existe disparendo assim a mensagem
para update caso possa existir no seu caso eu utilizo a seguinte forma eu armazeno os valor da chave primaria em itens ocultos no mesmo bloco( alimento eles no post-query com o valor original)
exemplo
:estado.sg_estado_original (não base table) := :estado.sg_estado (base table)
dai na trigger pre-update eu verifico se os dois itens estao com o mesm valor
caso não estejam eu dou um select no banco da mesma forma do criado no pre-insert
demorei pra entender esse processo, se você tiver alguma duvida estamos ai...
vlw
eu utilizo no pre-insert fazendo um select na propria tabela dando um count com os campos da chave se retornar 1 é porque ele já existe disparendo assim a mensagem
para update caso possa existir no seu caso eu utilizo a seguinte forma eu armazeno os valor da chave primaria em itens ocultos no mesmo bloco( alimento eles no post-query com o valor original)
exemplo
:estado.sg_estado_original (não base table) := :estado.sg_estado (base table)
dai na trigger pre-update eu verifico se os dois itens estao com o mesm valor
caso não estejam eu dou um select no banco da mesma forma do criado no pre-insert
demorei pra entender esse processo, se você tiver alguma duvida estamos ai...
vlw
- TBou
- Rank: Analista Sênior
- Mensagens: 136
- Registrado em: Qui, 05 Ago 2004 9:33 am
- Localização: Campo Grande - MS
OPas...detalhe no caso você quarda o record que esta gravado aqueos dados tambem no vetor ai na validação você verifica se o record for o mesmo quer dizer que não esta duplicado e sim apenas validando o item novamente.
da certinho só precisa fazer umas tratativas como apagar do vertor no key-delrec e estas coisas pois se apagar o registro e escrever ele denovo não deve ploquear...
da certinho só precisa fazer umas tratativas como apagar do vertor no key-delrec e estas coisas pois se apagar o registro e escrever ele denovo não deve ploquear...
-
- Rank: DBA Pleno
- Mensagens: 264
- Registrado em: Dom, 19 Ago 2007 8:18 pm
- Localização: Ribeirão Preto - SP
Lucas de Souza
OCA Developer
Analista de sistemas
OCA Developer
Analista de sistemas
Assim, com já tem a PK, se eu não me engano, quando você vai inserir um campo que já tem na tabela, ele retorna um erro ORA falando que a constraint foi violada.... ai você pode tratar no ON-ERROR também...
obs.: só não falo o erro qui é porque o banco aqui caiu =D
obs.: só não falo o erro qui é porque o banco aqui caiu =D
- TBou
- Rank: Analista Sênior
- Mensagens: 136
- Registrado em: Qui, 05 Ago 2004 9:33 am
- Localização: Campo Grande - MS
é como nosso colega disse,
o banco já bloqueia retornando um erro ORA, mas neste caso da erro apenas quando você da o F10 (salva) e tambem não diz em qual linha esta a duplicação, ou seja se eu ter uma tabela com 50 registros vai dar um pouco de trabalho achar qual codigo digitei duplicado (nem vamos entrar em detalhes se ter 500 registros então né).
a fazendo este tratamento via vetor (aparentemente arcaico) logo que vamos sair do registro duplicado o sistema já vai bloquear o registro.
o banco já bloqueia retornando um erro ORA, mas neste caso da erro apenas quando você da o F10 (salva) e tambem não diz em qual linha esta a duplicação, ou seja se eu ter uma tabela com 50 registros vai dar um pouco de trabalho achar qual codigo digitei duplicado (nem vamos entrar em detalhes se ter 500 registros então né).
a fazendo este tratamento via vetor (aparentemente arcaico) logo que vamos sair do registro duplicado o sistema já vai bloquear o registro.
-
- Rank: DBA Pleno
- Mensagens: 264
- Registrado em: Dom, 19 Ago 2007 8:18 pm
- Localização: Ribeirão Preto - SP
Lucas de Souza
OCA Developer
Analista de sistemas
OCA Developer
Analista de sistemas
então, aqui onde eu trabalho, todos os forms são feitos em um padrão né....
ai quando acontece um erro de violação de UK, ele mostra o erro de informações incorretas, e pula direto para o campo que está violando a UK, não sei se é o padrão que faz isso, mais creio que isso é um processo automático do forms mesmo...
=D
ai quando acontece um erro de violação de UK, ele mostra o erro de informações incorretas, e pula direto para o campo que está violando a UK, não sei se é o padrão que faz isso, mais creio que isso é um processo automático do forms mesmo...
=D
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 14 visitantes