ORACLE FORMS
Como puedo insertar más de una fila en un elemento de texto de un form?.
El código que utilizo es:
DECLARE
CURSOR c1 IS
SELECT * FROM EMP
WHERE deptno = :PARAMETER.deptno;
BEGIN
FOR c1_rec IN c1 LOOP
:emp.empno := c1_rec.empno;
:emp.ename := c1_rec.ename;
:emp.job := c1_rec.job;
:emp.sal := c1_rec.sal;
:emp.comm := c1_rec.comm;
END LOOP;
END;
Inserta todos las filas, pero sólo visualiza la última porque sobreescribe las anteriores. Qué puedo hacer para que esto no suceda y pueda ver todos los registros?.
Gracias.
El código que utilizo es:
DECLARE
CURSOR c1 IS
SELECT * FROM EMP
WHERE deptno = :PARAMETER.deptno;
BEGIN
FOR c1_rec IN c1 LOOP
:emp.empno := c1_rec.empno;
:emp.ename := c1_rec.ename;
:emp.job := c1_rec.job;
:emp.sal := c1_rec.sal;
:emp.comm := c1_rec.comm;
END LOOP;
END;
Inserta todos las filas, pero sólo visualiza la última porque sobreescribe las anteriores. Qué puedo hacer para que esto no suceda y pueda ver todos los registros?.
Gracias.
No es necesario hacer next_record ya que el propio loop lo lleva implícito.
Un saludo.
Un saludo.
Pero por qué no creas un bloque de datos, de base de datos, con la tabla EMP? Si lo haces con el asistente te pregunta si se trata de un bloque multiregistro y los campos que quieres mostrar. Vaya, lo puedes hacer con el cursor pero tendrias que insertar una nueva fila cada vez, que viene a ser lo mismo que crear un bloque multiregistro de base de datos.
Ej:
DECLARE
CURSOR c1 IS
SELECT * FROM EMP
WHERE deptno = :PARAMETER.deptno;
BEGIN
go_block(emp); -- Va al bloque donde vamos a insertar las filas.
FOR c1_rec IN c1 LOOP
down; -- Inserta una fila.
:emp.empno := c1_rec.empno;
:emp.ename := c1_rec.ename;
:emp.job := c1_rec.job;
:emp.sal := c1_rec.sal;
:emp.comm := c1_rec.comm;
END LOOP;
first_record; -- Te lleva al primer registro.
END;
Un saludo.
Ej:
DECLARE
CURSOR c1 IS
SELECT * FROM EMP
WHERE deptno = :PARAMETER.deptno;
BEGIN
go_block(emp); -- Va al bloque donde vamos a insertar las filas.
FOR c1_rec IN c1 LOOP
down; -- Inserta una fila.
:emp.empno := c1_rec.empno;
:emp.ename := c1_rec.ename;
:emp.job := c1_rec.job;
:emp.sal := c1_rec.sal;
:emp.comm := c1_rec.comm;
END LOOP;
first_record; -- Te lleva al primer registro.
END;
Un saludo.
Si requiero que no se puedan modificar los datos de ese bloque? He intentado con set_item_properties , utilizando ENABLED en modo FALSE pero marca error de propierties, set_block no tiene una propiedad similar. Ya he bloqueado desde las propiedades los campos del bloque sin embargo solo inserta el ultimo registro, sin bloquear se insertan todos.
Como puedo solucionar esto, de antemano gracias.
Como puedo solucionar esto, de antemano gracias.
