consulta porque <> me da igual y no diferente

135 views
Skip to first unread message

Marcelo Barberis

unread,
May 20, 2019, 4:06:19 AM5/20/19
to publicesvfoxpro
Hola buenas noches, estuve revisando un codigo y he visto que la instruccion <> que deberia ser o entenderse como diferente en el sistema me lo interpeta como igual, alguien me puede explicar porque se da ese impas

Sin título.jpg
En esta imagen se ve que teniendo dos valores uno de una propiedad y otro de una variable la cual le pongo si <> realize un proceso y sino no haga nada pero lo interpreta como igual, y le puese tanto a la propiedad como a la variable la  ALLTRIM() y es lo mismo me lo interpreta como igual

Sin título2.jpg

Este es el codigo que uso y como se ve le pongo que si es diferente realize un proceso bueno la propiedad THISFORM.llExec es .F. en este proceso.

De antemano gracias por cualquier comentario que me pueda resolver el problema

--
Marcelo Barberis Gutierrez
Sistemas Informaticos
Villa Montes - Bolivia
Telef.: +591-76830544

ZeRoberto

unread,
May 20, 2019, 7:16:54 AM5/20/19
to publice...@googlegroups.com
Activa el SET EXACT

SET EXACT ON
SET NEAR OFF

Saludos 

Ze

--
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAMUm0dnMwTqxmBvZ0AHV_NOVugSgYsxgTQN9%3DooH%2BeXePShvWA%40mail.gmail.com.

Fidel Charny

unread,
May 20, 2019, 7:43:55 AM5/20/19
to Comunidad de Visual Foxpro en Español
Alternativamente a lo dicho por Roberto, sin necesidad de configuración previa

IF lower(THISFORM.lcTableAct) == lower(m.lcTable)
       * Iguales
ELSE
       * No iguales
ENDIF

El uso de LOWER() puede que sea para el caso irrelevante.

Tratándose de cadenas puedes comenzar también por comparar los len() de ambas cadenas.


El lunes, 20 de mayo de 2019, 8:16:54 (UTC-3), ZeRoberto escribió:
Activa el SET EXACT

SET EXACT ON
SET NEAR OFF

Saludos 

Ze

El lun., 20 de may. de 2019 3:06 AM, Marcelo Barberis <alexm...@gmail.com> escribió:
Hola buenas noches, estuve revisando un codigo y he visto que la instruccion <> que deberia ser o entenderse como diferente en el sistema me lo interpeta como igual, alguien me puede explicar porque se da ese impas

Sin título.jpg
En esta imagen se ve que teniendo dos valores uno de una propiedad y otro de una variable la cual le pongo si <> realize un proceso y sino no haga nada pero lo interpreta como igual, y le puese tanto a la propiedad como a la variable la  ALLTRIM() y es lo mismo me lo interpreta como igual

Sin título2.jpg

Este es el codigo que uso y como se ve le pongo que si es diferente realize un proceso bueno la propiedad THISFORM.llExec es .F. en este proceso.

De antemano gracias por cualquier comentario que me pueda resolver el problema

--
Marcelo Barberis Gutierrez
Sistemas Informaticos
Villa Montes - Bolivia
Telef.: +591-76830544

--
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

HernanCano

unread,
May 20, 2019, 11:44:23 AM5/20/19
to Comunidad de Visual Foxpro en Español
Marcelo:
Recuerda que la comparación que estás haciendo es verdadera:

1. Tu escenario.
Una variable vale tbl_grupos_acceso.
La otra variable vale tbl_grupos.

Entonces

if "tbl_grupos_acceso" = "tbl_grupos    "
   MessageBox('Son iguales')
else
   MessageBox('Son diferentes')
endif

Debes hacer lo que te dicen Ze Roberto o Fidel. En lo persdonal prefiero la solución de Fidel, pero con ambas obtendrás el resultado correcto.

2. Primera alternativa: lo que te dice ZeRoberto:

set exact on
if "tbl_grupos_acceso" = "tbl_grupos     "
   MessageBox('Son iguales')
else
   MessageBox('Son diferentes')
endif


3. Segunda alternativa: lo que te dice Fidel:

if alltrim("tbl_grupos_acceso") == alltrim("tbl_grupos     ")
   MessageBox('Son iguales')
else
   MessageBox('Son diferentes')
endif

Puedes leer en la ayuda de VFP9 el sgte tema:

String and Value Comparison in Visual FoxPro

Tu caso es "abc" = "ab"

Seguimos en contacto.


Marcelo Barberis

unread,
May 21, 2019, 6:32:47 PM5/21/19
to publicesvfoxpro
Hola bueno no lo vi de poner los set exact, pero si evalue tanto la propiedad como la variable con la funcion len() y en el caso de tbl_grupos = 10 y tbl_grupos_acceso = 17 realize esta comparacion y me devolvio numeros diferentes por lo que no era por ahi pero bueno no tome la precaucion de usar los set adecuado.
Ahora tambien realize poniendo if propiedad == variable y si ahi me daba lo correcto, pero como yo queria empezar con el punto que si era diferente y me cerre con esa opcion y no vi otra pero bueno 
Gracias por sus comentarios lo revisare como me sale

--
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/4b41f8f5-5a52-423b-849f-b8cc59cf2a92%40googlegroups.com.

Luis Maria Guayan

unread,
May 22, 2019, 11:54:00 AM5/22/19
to Comunidad de Visual Foxpro en Español
Mira la diferencia del SET EXACT

SET EXACT OFF
? "tbl_grupos_acceso" = "tbl_grupos"
? "tbl_grupos_acceso" <> "tbl_grupos"

SET EXACT ON
? "tbl_grupos_acceso" = "tbl_grupos"
? "tbl_grupos_acceso" <> "tbl_grupos"


Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxpro+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages