Visual Basic - Uso de la cláusula IN con fechas

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 25
Ha disminuido su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Uso de la cláusula IN con fechas

Publicado por Alejandro (15 intervenciones) el 17/02/2019 12:39:57
Hola amigos:

Estoy tratando de utilizar la cláusula IN con fechas, pero me da error "Uso no válido de Null"
Si alguien me puede ayudar?

Tengo un cuadro de lista multiselección en el que aparecen las fechas que contiene un campo
Campo: Fecha
Cuadro de Lista: clFecha

Selecciono varias fechas en el cuadro de lista y las cargo en una variable
Variable: varFecha
Contenido: '02/01/2019', '03/02/2019', ...

Después con estos datos realizo el filtro
Resultado = "CStr(Fecha) In (" & Me.varFecha& ")"

Y no funciona.

Un cordial saludo.
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 Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Uso de la cláusula IN con fechas

Publicado por Antoni Masana (558 intervenciones) el 17/02/2019 17:49:17
Me despista tu consulta.

Que yo recuerde la clausula IN en Visual Basic no existe como tal. Quizas en VB Net pero lo dudo. Esta clausula es propia de SQL y esto esta lejos de serlo.

VB no sabe resolver esto.

1
Resultado = "CStr(Fecha) In (" & Me.varFecha& ")"

Si los formatos son STRING, la instrucción correcta es:

1
Resultado = Instr(Me.varFecha, CStr(Fecha) )

Si existe devuelve un valor mayor a cero.

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
sin imagen de perfil
Val: 25
Ha disminuido su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Uso de la cláusula IN con fechas

Publicado por Alejandro (15 intervenciones) el 17/02/2019 19:20:49
Hola Antoni, gracias por tu respuesta, pero no funciona.

A ver si me explico mejor.
Como bien dices la cláusula IN que utilizo es de Sql.

Estoy realizando un filtro con varios campos.

Uno de ellos es:
varCentros = "CodCentro In (" & Me.txtContCentros & ")"
Donde
CodCentro es el que campo que voy a filtrar y
Me.txtContCentros = "'Valladolid', 'Madrid', 'Burgos'..." son los valores elegidos en el listbox multiselección.

Pero el campo Fecha es el que se me atasca.
Porque Fecha es el campo a filtrar y
Me.varFecha = "'02/01/2019', '03/02/2019', ..."

Luego hago
txtFiltro = Me.txtContCentros & " AND " & Me.varFecha

Me!frmPagosFacturas.Form.Filter = txtFiltro
Me!frmPagosFacturas.Form.FilterOn = True
Me!frmPagosFacturas.Form.Requery

Pero al hacerlo con la fecha me da el error.

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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Uso de la cláusula IN con fechas

Publicado por Antoni Masana (558 intervenciones) el 17/02/2019 23:05:20
Si el contenido de la variable que tiene la lista de fechas es un texto:

1
Me.varFecha = "'02/01/2019', '03/02/2019', ..."

Supongo que Fecha es el campo a buscar en la BBDD.
El formato de Fecha para buscar en la variable anterior debe ser un texto, suponiendo que el formato se Día, Mes, Año:

1
Resultado = "Format(Fecha, "& chr$(34) & "DD/MM/YYYY" & Chr$(34) ") In (" & Me.varFecha & ")"

El resultado de toda esta parrafada tiene que ser esto:

1
Format(Fecha, "DD/MM/YYYY") In ("'02/01/2019', '03/02/2019', ...")

Otra posibilidad que acabo de ver es que el ultimo & esta pegado a la A y eso no le guste.

1
2
Resultado = "CStr(Fecha) In (" & Me.varFecha& ")"
Resultado = "CStr(Fecha) In (" & Me.varFecha & ")"

Otra opción es ver el contenido de Resultado para ver si la estructura es correcta, porque a parte del pequeño detalle del espacio no creo que este dando error.

Yo pondría esto:

1
2
Resultado = "CStr(Fecha) In (" & Me.varFecha & ")"
MsgBox ">" & Resultado & "<"

O esto:

1
2
Resultado = "Format(Fecha, "& chr$(34) & "DD/MM/YYYY" & Chr$(34) ") In (" & Me.varFecha & ")"
MsgBox ">" & Resultado & "<"

O usar el debug.

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
sin imagen de perfil
Val: 25
Ha disminuido su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Uso de la cláusula IN con fechas

Publicado por Alejandro (15 intervenciones) el 18/02/2019 18:24:28
Muchas gracias, Antoni.

Funciona perfectamente !!!

Le faltaba un 'más', pero filtra como yo quería.

1
Resultado = "Format( Fecha, " & Chr( 34 ) & "dd/mm/yyyy" & Chr( 34 )  & ") In ( " & Me.varFecha & " )"

Un cordial 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
sin imagen de perfil
Val: 37
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Uso de la cláusula IN con fechas

Publicado por seba64 (26 intervenciones) el 26/02/2019 04:54:37
Se que llego tarde, pero no hubiera sido mejor utilizar la función instr() ¿?
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