es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al intentar filtrar una tabla dinámica con fechas entre utilizando vb.net.

Estoy automatizando varios informes utilizando una aplicación de formularios de Windows en vb.net. Tengo un informe en el que necesito actualizar el filtro en un campo de fecha para que esté entre 2 fechas (lunes y domingo o la semana en cuestión).

Obtengo las fechas al hacer que el usuario seleccione una fecha de finalización desde un DateTimePicker dateStatusEnd.

Cuando el código llega a agregar el filtro, obtengo el siguiente mensaje de error:

imagen

Las fechas son válidas porque pensé erróneamente que las había agregado en el orden incorrecto, pero esto generó un error que decía que la fecha de finalización debía ser menor que la fecha de inicio, por lo que definitivamente las está leyendo como errores.

¿Alguna idea de cómo puedo resolver esto? Fragmento de código a continuación:

“`vb.net
xlSht = aWorkBook.Worksheets("RBA Expiry Dates")

Dim xlPivot As PivotTable = xlSht.PivotTables("PivotTable1")
Dim xlPivotField As PivotField = xlPivot.PivotFields("RBA Expiry Date")

xlPivotField.ClearAllFilters()

If dateStatusEnd.Value.Day = 31 AndAlso dateStatusEnd.Value.Month = 12 And dateStatusEnd.Value.Date.ToString("dddd") <> "Sunday" Then
Dim aDate As Date = dateStatusEnd.Value.Date

<pre><code>Do Until aDate.ToString("dddd") = "Monday"
aDate = aDate.AddDays(-1)
Loop

xlPivotField.PivotFilters.Add2(Type:=XlPivotFilterType.xlDateBetween, Value1:=aDate.ToShortDateString, Value2:=dateStatusEnd.Value.Date.ToShortDateString)
</code></pre>

Else
xlPivotField.PivotFilters.Add2(Type:=XlPivotFilterType.xlDateBetween, Value1:=dateStatusEnd.Value.Date.AddDays(-6).Date.ToShortDateString, Value2:=dateStatusEnd.Value.Date.ToShortDateString)
End If
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el mensaje de error indica que el formato del valor de la fecha es incorrecto. Es posible que deba asegurarse de que el valor de la fecha esté formateado de manera compatible con el método xlPivotField.PivotFilters.Add2.

    Una forma de hacer esto es convertir el valor de la fecha a una cadena utilizando un formato específico. Por ejemplo:

    Dim startDate As Date = #2022-01-03# 'Lunes de la semana
    Dim endDate As Date = #2022-01-09# 'Domingo de la semana
    
    xlPivotField.PivotFilters.Add2(Type:=XlPivotFilterType.xlDateBetween, _
                                    Value1:=startDate.ToString("MM/dd/yyyy"), _
                                    Value2:=endDate.ToString("MM/dd/yyyy"))
    

    En este ejemplo, los valores de fecha se convierten en cadenas utilizando el formato “MM/dd/yyyy”, que debería ser compatible con el método Add2.

    También puede verificar el tipo de datos del campo de fecha en la tabla dinámica para asegurarse de que sea compatible con el tipo de filtro xlDateBetween.

Comments are closed.