Crear una variable de sustitución en Forms

Como hago una variable de sustitución en Forms
Ej:
d1:=2000;
d2:=3000;
for i in 1..2 loop
valor:='d'||to_char(i);
vec1(i):= valor;
end for
Yo quiero que vec1(i) tome el valor 2000, 3000 y sucesivamente, no 'D1'.
En Visual Fox yo hago
vec1(i) = &valor
Es lo que se llama una variable de sustición. En la realidad es como si digera
vec1(i) = D1
Si sabes

1 respuesta

Respuesta
1
La forma de realizar una variable de sustitución en pl/sql es con la función Name_in (). En tu caso sería:
d1:=2000;
d2:=3000;
for i in 1..2 loop
valor := Name_in ( 'd'||to_char(i) );
vec1(i):= valor;
end loop;
Con un item sirve pero con una variable no. mira el error que da:
FRM-40105
Este es el código
Declare
TYPE VEC IS TABLE OF Number
INDEX BY Binary_integer;
VEC1 VEC;
i number;d1 number;d2 number;
valor integer(5):= 0;
begin
for i in 1..2 loop
vec1(i) := null;
end loop;
d1:=2000;
d2:=3000;
for i in 1..2 loop
valor:=Name_in ('d'||to_char(i));
vec1(i):=valor;
end loop;
:b:=valor;
end;
Gracias
Efectivamente, sólo te permite referenciar items. Por lo tanto te propongo 3 posibles alternativas. 1) Crearte un bloque auxiliar ( sin que esté asociado a tabla ni canvas ni nada ) y que contenga tantos items como variables tipo D1 y D2 necesites y los referencias con el name_in,
2) En lugar de definir las variables d1 y d2 usar globales ( :global. D1 ) que si se pueden referenciar ( lo he comprobado ) ó
3) Crearte una variable tipo tabla como la que tienes o tipo record y guardar en ella los valores de las variables y en el for tan solo hay que usar la i para recoger los valroes correspondientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas