Tratar valores .T. o .F.

29/06/2006 - 04:16 por Santo76 | Informe spam
Hola,
tengo en un formulario un procedimiento personalizado con un parametro
Ej-> PARAMETERS dato

Luego yo tengo que validar esta expresion , mirar si es mas larga de 8, y si
lo es continuar, y a la vez, tengo que validar que un campo que tambien sea
de mas de 8

como se pueden dar uno de los dos casos tengo algo asi:

IF LEN(ALLTRIM(this.Value)) >=8 or LEN(ALLTRIM(dato)) >=8

Esto esta claro que da error, ya que 'dato', todavia es .F., puesto que de
momento no le passamos ningun valor.

He probado de definir una variable publica dato e inicializar-la a "", pero
no funciona, supongo que porque aunque sea publica, dentro de este
procedimiento no la tiene en cuenta, ya que ya existe una variable 'dato' y
esta prevaleze sobre la otra.

Me iria perfecto algo como el NVL(dato,''), pero esto no me funciona, ya que
solo va con valores nulos.

Hay alguna funcion igual pero que lo haga en lugar de (Nulo, si o no),
(Verdadero, si o no)?

O alguna idea altrenativa?

Gracias.

Preguntas similare

Leer las respuestas

#1 Victor B.
29/06/2006 - 10:10 | Informe spam
Puedes comprobar, antes de mirar la longitud, si se trata de una cadena o de
un valor lógico, con VARTYPE()

IF VARTYPE(dato) = "L" THEN
RETURN
ENDIF


Víctor B.
Desarrollador independiente
"Santo76" escribió en el mensaje
news:
Hola,
tengo en un formulario un procedimiento personalizado con un parametro
Ej-> PARAMETERS dato

Luego yo tengo que validar esta expresion , mirar si es mas larga de 8, y
si
lo es continuar, y a la vez, tengo que validar que un campo que tambien
sea
de mas de 8

como se pueden dar uno de los dos casos tengo algo asi:

IF LEN(ALLTRIM(this.Value)) >=8 or LEN(ALLTRIM(dato)) >=8

Esto esta claro que da error, ya que 'dato', todavia es .F., puesto que de
momento no le passamos ningun valor.

He probado de definir una variable publica dato e inicializar-la a "",
pero
no funciona, supongo que porque aunque sea publica, dentro de este
procedimiento no la tiene en cuenta, ya que ya existe una variable 'dato'
y
esta prevaleze sobre la otra.

Me iria perfecto algo como el NVL(dato,''), pero esto no me funciona, ya
que
solo va con valores nulos.

Hay alguna funcion igual pero que lo haga en lugar de (Nulo, si o no),
(Verdadero, si o no)?

O alguna idea altrenativa?

Gracias.
Respuesta Responder a este mensaje
#2 Hugo M. Ranea
29/06/2006 - 23:32 | Informe spam
Santo,

Disculpame la pregunta principal no la entendí, pero para esto:

Me iria perfecto algo como el NVL(dato,''), pero esto no me funciona, ya que
solo va con valores nulos.

Hay alguna funcion igual pero que lo haga en lugar de (Nulo, si o no),
(Verdadero, si o no)?



existe la funcion EVL()
Respuesta Responder a este mensaje
#3 Luis María Guayán
30/06/2006 - 13:51 | Informe spam
Puedes al principio del procedimiento evaluar la cantidad o tipo de
parámetro y de acuerdo a eso darle valor "" al dato.

PARAMETERS Dato
IF PCOUNT() < 1
Dato = ""
ENDIF

ó

PARAMETERS Dato
IF EMPTY(Dato)
Dato = ""
ENDIF

Otra forma puede ser:

IF LEN(ALLTRIM(this.Value)) >=8 OR ;
(VARTYPE(dato) = "C" AND LEN(ALLTRIM(dato)) >=8)
...


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Santo76" escribió en el mensaje
news:
Hola,
tengo en un formulario un procedimiento personalizado con un parametro
Ej-> PARAMETERS dato

Luego yo tengo que validar esta expresion , mirar si es mas larga de 8, y


si
lo es continuar, y a la vez, tengo que validar que un campo que tambien


sea
de mas de 8

como se pueden dar uno de los dos casos tengo algo asi:

IF LEN(ALLTRIM(this.Value)) >=8 or LEN(ALLTRIM(dato)) >=8

Esto esta claro que da error, ya que 'dato', todavia es .F., puesto que de
momento no le passamos ningun valor.

He probado de definir una variable publica dato e inicializar-la a "",


pero
no funciona, supongo que porque aunque sea publica, dentro de este
procedimiento no la tiene en cuenta, ya que ya existe una variable 'dato'


y
esta prevaleze sobre la otra.

Me iria perfecto algo como el NVL(dato,''), pero esto no me funciona, ya


que
solo va con valores nulos.

Hay alguna funcion igual pero que lo haga en lugar de (Nulo, si o no),
(Verdadero, si o no)?

O alguna idea altrenativa?

Gracias.
Respuesta Responder a este mensaje
#4 Enrique Chanquía
01/07/2006 - 01:56 | Informe spam
Prueba lo siguiente en tu método personalizado:

PARAMETERS dato
IF !EMPTY(dato) then
IF LEN(ALLTRIM(this.Value)) >=8 or LEN(ALLTRIM(dato)) >=8

ENDIF
ENDIF



"Santo76" escribió en el mensaje
news:
Hola,
tengo en un formulario un procedimiento personalizado con un parametro
Ej-> PARAMETERS dato

Luego yo tengo que validar esta expresion , mirar si es mas larga de 8, y


si
lo es continuar, y a la vez, tengo que validar que un campo que tambien


sea
de mas de 8

como se pueden dar uno de los dos casos tengo algo asi:

IF LEN(ALLTRIM(this.Value)) >=8 or LEN(ALLTRIM(dato)) >=8

Esto esta claro que da error, ya que 'dato', todavia es .F., puesto que de
momento no le passamos ningun valor.

He probado de definir una variable publica dato e inicializar-la a "",


pero
no funciona, supongo que porque aunque sea publica, dentro de este
procedimiento no la tiene en cuenta, ya que ya existe una variable 'dato'


y
esta prevaleze sobre la otra.

Me iria perfecto algo como el NVL(dato,''), pero esto no me funciona, ya


que
solo va con valores nulos.

Hay alguna funcion igual pero que lo haga en lugar de (Nulo, si o no),
(Verdadero, si o no)?

O alguna idea altrenativa?

Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida