¿Problemas con el when validate item?

Es la primera vez que utilizo esto pero he encontrado varias respuestas que me sirven para el trabajo que tengo que entregar y hasta que me he decidido a dar el paso e insertar mi pregunta...
asi q ahi va
Pues tengo un bloque de control compuesto por unos items en e cual tengo que insertar un dni y me tienen que salir todos los datos, hasta ahí todo bien el problema esta que cuando ese dni no pertenece a ningún cliente me debería de dejar poder insertar ese cliente, pero no me deja.
El trigger when-validate-item:
¿Declaro el cursor
si encuentra algo lo inserto en sus respectivos items pero como dejo para poder inserar?
No se y me estoy volviendo loca... Porque luego tengo que esos datos para hacer la reserva que la tengo que hacer a través de un curso pero hasta que no pueda mirar si me deja insertar no puedo avanzar
muchas gracias
un saludo

1 respuesta

Respuesta
1
No te entiendo un when validate salta cuando validas el campo y puedes consultar datos con ese campo, pero si tu no le dices que pare, no hace nada. Y te permite seguir introduciento otros campos.
Dime si te da algún error!
Mientras sea de base de datos, insertara lo que le indique, si no es de base de datos, mete en el wen validate que si no encuentra nada, insserte.
De todas formas dime si te da error, o pégame el código que tienes.
Frm-40735: el disparador when-validate-item ha emitido una excepción ora-12899 no tratada.
mi codigo el when-validate es:
declare
cusor c_dni ( num_d huespedes.dni&type) is
select h.dni, h.nombre, h.direccion, h.telefono
from huéspedes h
where h.dni= num_d;
r_dni c_dni%rowtype;
n_dni huespedes.dni%type;
begin
open c_dni(:control_reservas.dni);
fetch c_dni into r_dni;
if (c_dni%notfound)
then
insert into huespedes
values ('control_reservas.dni', 'control_reservas.nombre', 'control_reservas.direccion', 'control_reservas.telefono');
else
control_reservas.dni := r_dni.dni;
control_reservas.nombre := r_dni.nombre;
control_reservas.direccion := r_dni.direccion;
control_reservas.telefono := r_dni.telefono;
end if
close c_dni
end;
Este es el código.
Muchas gracias
El error te esta diciendo que estas insertando un valor demasiado largo en algún campo, del insert, haz un substr o amplia los campos, ademas te dirá el campo en el que te ha dado el error.
Te recomiendo comprobar los tamaños de las columnas de la tabla y de los elementos del bloque.
Me imagino que haces el cursor para que no te salga por un no_data_found. Pero yo te recomendaría esa opción, es más fácil de controlar los errores. No obstante cada uno programa como mejor le convenga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas