Access - Ayuda con filtro en vba

 
Vista:
sin imagen de perfil

Ayuda con filtro en vba

Publicado por Alex (8 intervenciones) el 21/01/2015 01:34:32
Hola buenas noches, antes que nada queria agradecerles por su ayuda, mi problema es el siguiente.

tengo una base base de datos con una tabla con varios valores numerios tanto enteros como con decimales, y he creado un formulario con un filtro en vba, en el coloco un cuadro de texto llamado "txtdim" con el sigiente codigo

Dim smedida As String

If Not IsNull(Me.txtdim) And Me.txtdim <> "" Then
smedida = "c1 BETWEEN" & Me.txtdim - 1 And Me.txtdim + 1
Else
smedida = ""
End If

(el codigo sigue que es donde aplico el filtro al formulario, solo que no lo pongo ya que pienso que el problema esta en este fragmento de codigo)

lo que yo quiero que haga es buscar todos los valores en un rango de ± 1, dependiendo del valor que coloque en txtdim

espero me puedan enterder y ayudar.

Saludos.
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 Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con filtro en vba

Publicado por Norberto (753 intervenciones) el 22/01/2015 10:17:44
Hola.

Corrige la expresión.

smedida = "c1 BETWEEN " & Me.txtdim - 1 & " AND " & Me.txtdim + 1

Ojo con los espacios en blanco detrás de BETWEEN y antes y después de AND.

Un saludo,

Norberto.
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
sin imagen de perfil

Ayuda con filtro en vba

Publicado por Alex (8 intervenciones) el 22/01/2015 12:48:15
Genial muchas gracias, me fuiste de mucha ayuda, como no me salia de esa manera lo intente de la siguente forma que si me dio resultado,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim smedida1 As String
Dim smedida2 As String
 
If Not IsNull(Me.txtdim) And Me.txtdim <> "" Then
        smedida1 = "c1 <=" & Me.txtdim + 1
    Else
        smedida1 = ""
    End If
 
If Not IsNull(Me.txtdim) And Me.txtdim <> "" Then
        smedida2 = "c1 >" & Me.txtdim - 1
    Else
        smedida2 = ""
    End If

pero se me hacia muy largo el cogido de esta manera, entonces probe nuevamente corrigiendo la expresion como me digiste y anduvo perfecto.

Una pregunta mas, haber si me podes ayudar, en esta misma expresion que me explicaste si le cambio el rango de ± 1 a ± 0.5 quedando de la siguiente manera

smedida = "c1 BETWEEN " & Me.txtdim - 0.50 & " AND " & Me.txtdim + 0.50

me salta un error de "error de sintaxis (coma) en la expresión de consulta"
como puedo solucionarlo?

Desde ya muchas gracias.

Saludo
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 Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con filtro en vba

Publicado por Norberto (753 intervenciones) el 27/01/2015 10:30:53
Ok.

El problema es que cuando concatenas directamente un texto con un valor numérico éste es convertido a texto usando la configuración regional, por lo que la cadena resultante para "Tengo " & 3.5 & " Euros" es "Tengo 3,5 Euros". Si se trata de visualizarlo, perfecto; pero si lo queremos en una expresión SQL... Para que el número se convierta en texto manteniendo el punto usa la función Str(...) de esta manera:

smedida = "c1 BETWEEN " & Str(Me.txtdim - 0.50) & " AND " & Str(Me.txtdim + 0.50)

Un saludo,

Norberto.
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
sin imagen de perfil

Ayuda con filtro en vba

Publicado por Alex (8 intervenciones) el 29/01/2015 12:05:42
Genail, muchas gracias me has sido de mucha ayuda, me funciono a la perfeccion y tambien queria agradecerte por la esplicacion del porque es asi, la verdad de la forma en la que me lo explicaste lo entendi rapidamente y me fue de mucha ayuda.

Muchas gracias por tu ayuda.

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