ola pessoal, sou novato e tenho uma duvida no form abaixo e gostaria de uma ajudinha, pois o meu form não esta garantindo que a minha exclusão funcione normalmente, pois se eu clico com o enter no primeiro elemento ele dia que duplicou e deleta automaticamente e se eu clicar na love tb não funciona, os campos são preenchidos automaticamente
Gostaria de saber o que devo mudar para que isso não continue acontecendo
DECLARE
V_REC NUMBER; -- Variável que receberá posição do registro atual(digitado por último)
V_UF VARCHAR2(2); -- UF
V_DESC_UF VARCHAR2(50); -- DESC_UF
ALERTA ALERT;
RET NUMBER;
BEGIN
break;
BEGIN
SELECT NOM_UF
INTO :BLK_RELATED_ICMS_ITEM.NOM_UF
FROM UFEDT001
WHERE SIG_UF = :BLK_RELATED_ICMS_ITEM.SIG_UF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
V_REC := :system.cursor_record;
V_UF := :BLK_RELATED_ICMS_ITEM.SIG_UF;
V_DESC_UF := :BLK_RELATED_ICMS_ITEM.NOM_UF;
FIRST_RECORD;
LOOP
IF :BLK_RELATED_ICMS_ITEM.SIG_UF = V_UF AND :BLK_RELATED_ICMS_ITEM.NOM_UF = V_DESC_UF THEN
ALERTA := FIND_ALERT('DUPLICOU');
RET := SHOW_ALERT(ALERTA);
GO_RECORD(V_REC);
CLEAR_RECORD;
END IF;
EXIT WHEN :system.cursor_record = V_REC;
NEXT_RECORD;
END LOOP;
NEXT_ITEM;
END;
Intão, cria uma constraint de banco, uma unique ou uma pk mesmo, é mais seguro, e trata o erro no on-error do forms....
tenta inserir um campo que viole essa constraint que vai retornar um erro ORA.. isso é muito mais simples do que ter que fazer esse precesso que você está fazendo...