Power Builder - Ejecutar String

 
Vista:

Ejecutar String

Publicado por Hugo Contreras (12 intervenciones) el 09/12/2003 15:06:29
'Tengo 2 variables, una string y otra enetro, y quiero ejecutar en una sentencia IF la condiciòn que guarda la variable string, como muestro a continuaciòn:
/****************************************************/
string var = "edad=20 or edad=21 or edad=22"
Integer edad

IF var THEN
...
END IF
/****************************************************/
'Hay alguna forma de hacer algo como esto (arriba).

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecutar String

Publicado por Ricardo (1957 intervenciones) el 09/12/2003 16:32:02
Cual es el error que te da, ya que deberia de funcionarte a menos que no existiera el campo 'edad', pero si ya lo probaste dime que te marca.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar String

Publicado por Oscar (1178 intervenciones) el 09/12/2003 20:07:20
La línea:
string var = "edad=20 or edad=21 or edad=22"

No tiene sentido; ya que todo lo que está encerrado entre comillas; se está tomando en cuenta como una cadena de caracteres; no importa si dentro las comillas existen otras variables. Por eso, no te reporta ningún error.
Recuerda que la variable var es de tipo string y acepta todo lo que le encierres entre comillas.

Más bien, creo que es más importante saber, si el valor de la edad obtienes a través de un cálculo; si es el valor de una fila en un DW o si introduces de manera externa, por ejemplo a través de un sle_1.

Dependiendo de eso, me inclino por el uso de un CASE y quizá necesites sólo una variable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar String

Publicado por Hugo Contreras (12 intervenciones) el 09/12/2003 20:55:40
Estoy conciente de ello, y presisamente por eso es que hago la pregunta, pues quiero saber si hay alguna manera de poder ejecutar una condiciòn que este guardada en una variable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar String

Publicado por Oscar (1178 intervenciones) el 10/12/2003 05:36:16
Creo que más bien esperábamos aclaraciones tuyas: qué error te reporta ó cómo obtienes la edad (si la misma está en un DW o si introduces mediante un sle_1), para tratar de brindarte una respuesta específica. Sólo eso.

En vista que se carece de esa información, me permitiré dos suposiciones (me gustaria que aclares, si no son las correctas). La primera, es que la edad lo obtienes de un DW.
/**************/
string var
integer Edad

//El origen del valor edad, es de la fila seleccionada del campo Edad.
Edad = dw_1.GetItemNumber(dw_1.GetRow(), "Edad")

choose case Edad
case 20
//Almacenamos la edad en la variable var
var=string(Edad)
case 21
var=string(Edad)
case 22
var=string(Edad)
case else
var=string(Edad)
End choose

//Segunda suposición
If var="20" or var="21" or var="22" then
messageBox("Aviso", "La edad es"+ var +" y cae en ese rango")
else
messagebox("Aviso", "La edad es "+var+" y cae en otro rango")
end if
/***************/

Nota: La condición la podías ejecutar directamente trabajando con una sola variable (sólo edad), y nos evitábamos el uso de la variable var y todo el Choose case (es redundante).
En último caso, si querías trabajar con un tipo de dato STRING, podías convertir a ese tipo, anteponiendo precisamente esa última palabra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar String

Publicado por Hugo Contreras (12 intervenciones) el 10/12/2003 12:58:41
Oscar, lo que sucede es q yo al abrir la aplicaciòn obtengo ciertos datos (en el ejemplo coloque edades), q van a ser utilizados durante toda la ejecuciòbn del programa. Esos datos los obtengo de un archivo .ini al iniciar. Luego durante la ejecuciòn, debo validar si un dato coincide con alguno estos tomados al iniciar. Para ello tendria que hacer un for y comparar, cada vez que ejecute cierto procedimiento, para validar si coincide con alguno o no. Pues bien , lo que quiero es evitar eso (el hacer un for), como?, se me ocurrio hacer un solo for al iniciar la aplicaciòn y guardar los datos obtenidos en un string con un formato de sentencia, es decir algo como: var= "edad=10 or edad=15 or edad=38", para luego durante la ejecuciòn solo tener que ejecutar un if y no un for.
SI queires observa con detenimiento la nota original.

Hasta Luego y gracias por tu atenciòn.!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar String

Publicado por Oscar (1178 intervenciones) el 10/12/2003 15:01:08
Empieza a aclararse la cosa. Para empezar, es buena la idea hacer un solo for al iniciar la aplicación, donde se guardan esos números enteros. Se entiende (aunque no mencionas) que los guardaste en un ARRAY (que podría ser dinámico, Unbound, si la cantidad de edades es variable); pero este array, no es necesario que sea del tipo string. Mejor, si los mantienes como un array de enteros.

Luego, cada vez que necesites ejecutar un procedimiento y validar si coincide con un número que está dentro el array, no te puedes librar de hacer un for dentro el array, para averiguar si existe o nó ese número. Pero para que esta operación no sea repetitiva, es mejor crear una función por ejemplo llamada Existe(le pasas un parametro entero), que devuelva si existe o nó ese número en tu array.

Luego ya puedes usar tu función:

If existe(numero) then
//lo que quieras
end if
De esa manera tu código se vuelve más simple. Y el for que hace la función es rapidísimo, ya que trabaja con unos cuantos números.

Nota: A ver si existen otras sugerencias; por mi parte es mi última participación, para no monopolizar este post.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar