Visual Basic - InStr busqueda exacta

Life is soft - evento anual de software empresarial
 
Vista:

InStr busqueda exacta

Publicado por 56646 (1 intervención) el 10/10/2014 14:41:19
hola
buenas
resulta que al usar la función InStr cuando busca por ejemplo "caballo amarillo 56" y en la cadena donde busca hay un "caballo amarillo 99" los toma como iguales y no es así.
espero me puedan ayudar a solucionar esta situación!!!!

muchas 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
Imágen de perfil de Oscar

InStr busqueda exacta

Publicado por Oscar (63 intervenciones) el 11/10/2014 11:29:06
Instr te devuelve el valor de la posición inicial de la cadena que buscas (en el string que buscas).
Bueno dicho así suena un poco raro, pero resumiendo si usas algo como:

1
Instr(MiTexto,"caballo amarillo 56")

Si esta instrucción te devuelve 0 es que no esta el texto buscado en el texto sobre el que se busca y si es mayor que cero es que si que está.

En ningún caso si tienes dentro del texto a buscar "caballo amarillo 99" te va a dar un valor mayor que 0, a menos que también este "caballo amarillo 56".

Si quieres pega aquí el código que usas y vemos porque te está dando problemas.
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

InStr busqueda exacta

Publicado por ew (1 intervención) el 13/10/2014 03:17:59
si tengo

"caballo amarillo 55" en la cadena de palabras antes que "caballo amarillo" resulta, pero al revés no
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
Imágen de perfil de Oscar

InStr busqueda exacta

Publicado por Oscar (63 intervenciones) el 13/10/2014 09:53:29
Debería funcionar en ambos casos, por mera curiosidad lo acabo de probar y como esperaba funciona.

Pon aquí el código que usas y así analizamos cual es el problema.
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

InStr busqueda exacta

Publicado por vds (1 intervención) el 16/10/2014 18:19:51
gracias por la respuesta, este es el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
For n = 0 To UBound(prods)
 
      If Len(prodsFound) <> Empty Then
 
                If InStr(1, prodsFound, prods(n, 1), vbBinaryCompare) = 0 Then
                   prodsFound = prodsFound & prods(n, 1) & ","
                   count = count + 1
                End If
       Else
                prodsFound = prodsFound & prods(n, 1) & ","
                count = count + 1
       End If
 
Next n
prods() contiene todas las cadenas (o palabras)

gracuias
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
Imágen de perfil de Oscar

InStr busqueda exacta

Publicado por Oscar (63 intervenciones) el 17/10/2014 09:15:01
Por lo que veo en tu código usas prodsFound para guardar todas las palabras no repetidas (distinguiendo mayúsculas y minúsculas) del array prods().. esto es así?

Si es así parece correcta la instrucción, por lo que lo único que se me ocurre que pueda fallarte es por la entrada de datos ya que yo puedo almacenar en una variable de texto un 'EOL' y entonces solo busca hasta ese carácter.

Otra cosa es que prods parece un array de dimensión 2 (sin la parte del código donde lo declaras no lo puedo saber seguro), si ese es el caso entonces la llamada de Ubound del bucle For debería ser Ubound(prods,1) ya que solo estas revisando la parte del array en la que el primer elemento varia y el segundo siempre es 1.


Con el trozo de código que has puesto y sin los datos de entrada del programa no puedo decirte mucho más.

Si te sigue fallando pon el código completo con algunos datos de entrada que sepas que te fallan seguro y seguimos mirándolo
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