Visual Basic.NET - Generar días del mes como columnas en un datagridview.

 
Vista:
Imágen de perfil de Matt
Val: 177
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Matt (73 intervenciones) el 22/09/2020 07:58:19
Hola!

Estoy tratando de generar tantas columnas, como días en un mes, en un datagridview. pero solo me muestra un mismo día todo el mes, ¿Como le hago para que me muestre un día a la vez y luego se vuelvan a repetir hasta que termine el mes?

1
2
3
4
5
Dim dias_de_la_semana As New ArrayList From {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado", "Domingo"}
 
For i As Integer = 1 To 30
    DataGridView1.Columns.Add(0, dias_de_la_semana(0) & " " & i)
Next

Hasta el momento asi me lo muestra en el DataGridView:

Anotacion-2020-09-22-005657
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 Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 22/09/2020 10:17:55
Hola Matt,

Por favor, prueba este codigo :

1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form6
 
    Dim dias_de_la_semana As New ArrayList From {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado", "Domingo"}
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For i As Integer = 1 To 30 Step 7
            For j = 0 To 6
                DataGridView1.Columns.Add(0, dias_de_la_semana(j))
            Next
        Next
    End Sub
End Class

Debe saber que si una fecha inicial es conocida, los métodos siguientes pueden servir :
UnaFecha.Day da el numéro del día
UnaFecha.DayOfWeek.ToString da el nombre del día (quizá en inglés)
.

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 Matt
Val: 177
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Matt (73 intervenciones) el 22/09/2020 16:56:31
Hola Mr. Phill!

Gracias por su respuesta, si ya me muestra los días de la semana correctamente, pero no me muestra los números de 1 al 30, es decir...

Lunes 1 Martes 2 Miércoles 3 Jueves 4 Viernes 5 Sábado 6 Domingo 7 Lunes 8 Martes 9 ...
Como se podría implementar (.DayOfWeek.ToString) aunque los días sean en ingles?
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 Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 22/09/2020 17:35:54
Si quieres los numéros, este es el codigo :
1
2
3
4
5
For i As Integer = 1 To 30 Step 7
    For j As Integer = 0 To 6
        DataGridView1.Columns.Add(0, dias_de_la_semana(j) & " " & i + j)
    Next
Next

Day, DayOfWeek y DayOfWeek.ToString) se usan con un fecha. No sé como hacer con otra idioma.

Los Headers de tu DGV son textos que ne deben ser unos fechas, poden ser otras cosas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 22/09/2020 18:08:00
Si quieres comenzar con una fecha real, puedes utilizar este codigo :
1
2
3
4
5
6
7
8
9
10
' La variable dias_de_la_semana debe comenzar con "Domingo" que es el día n°0
Dim dias_de_la_semana As New ArrayList From {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado"}
 
Dim MiFecha As Date = Now  ' o toda otra fecha
For i As Integer = 1 To 30 Step 7
    For j = 0 To 6
        DataGridView1.Columns.Add(0, dias_de_la_semana(MiFecha.DayOfWeek) & " " & i + j)
        MiFecha = MiFecha.AddDays(1)
    Next
Next

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Matt
Val: 177
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Matt (73 intervenciones) el 22/09/2020 23:57:49
Hola Mr. Phill.

Usando cualquiera de los 2 últimos códigos, los números se van hasta el 35.
Captura-de-pantalla-2020-09-22-165135

Y si uso el segundo código, me pone miércoles como la fecha de hoy, y hoy es Martes (al menos aquí en México).

Captura-de-pantalla-2020-09-22-165648
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 Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 23/09/2020 00:10:19
Olvidas de cambiar la lista de los dias.
Buena noche
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 Matt
Val: 177
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Matt (73 intervenciones) el 23/09/2020 05:34:44
Ya cambie la lista de los días y aun me sigue dando los mismos resultados.
Dim dias_de_la_semana As New ArrayList From {"Monday", "Tuesday", "Wednesday", "Thrusday", "Friday", "Saturday", "Sunday"}
Dim dias_de_la_semana As New ArrayList From {2, 3, 4, 5, 6, 7, 1}
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 Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 23/09/2020 07:21:53
Hola Matt,

Perdón mi rapide repuesta de ayer ...

Debes cambiar la lista como he escrito en mi mensaje de ayer a la 18:08.

Te envio nuevamente el código :
1
2
3
4
5
6
7
8
9
10
11
12
13
' ... ... ...
        ' !!!! La dias_de_la_semana debe comenzar con "Domingo" que es el día n°0
        Dim dias_de_la_semana As New ArrayList From {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado"}
 
        Dim MiFecha As Date = Now  ' o toda otra fecha
        For i As Integer = 1 To 30 Step 7
            For j = 0 To 6
                DataGridView1.Columns.Add(0, dias_de_la_semana(MiFecha.DayOfWeek) & " " & i + j)
                MiFecha = MiFecha.AddDays(1)
            Next
        Next
        MessageBox.Show(Now.ToString)
' ... ... ...

Mira :
MattFechas

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Matt
Val: 177
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Matt (73 intervenciones) el 23/09/2020 07:36:35
Si ya comienza con el día correcto, pero porque muestra hasta el día 35 ?
InkedCaptura-de-pantalla-2020-09-22-165135_LI
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 Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 23/09/2020 08:37:56
For i As Integer = 1 To 30 Step 7

==> i = 1,8,15,22,29

y For j = 0 To 6

==> j = 0,1,2,3,4,5,6

Por lo tanto :

==> i + j = 1,2,3,..., (29+0), (29+1), ..., (29 + 6).

Para mejor te ayudar, tienes que dar un ejemplo (quizá con una Grid XLS ?) de este quieres.
Con cuidad que todos meses no tienen la misma cantidad de días.

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 Matt
Val: 177
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Matt (73 intervenciones) el 24/09/2020 03:15:53
Ok, muchas gracias por su ayuda Mr. Phill!!!
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 Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generar días del mes como columnas en un datagridview.

Publicado por Phil Rob (937 intervenciones) el 24/09/2020 07:13:36
Hola Matt,

Lo pensaba este mañana ...

Con este código, puedes terminar la agregación de columna cuando lo quieres :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim dias_de_la_semana As New ArrayList From {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado"}
Dim MiFecha As Date = Now  ' o toda otra fecha
Dim Limite As Integer = 30  ' Puestas el valor que quieres
For i As Integer = 1 To Limite Step 7
    For j = 0 To 6
        If i + j <= Limite Then
            DataGridView1.Columns.Add(0, dias_de_la_semana(MiFecha.DayOfWeek) & " " & i + j)
        Else
            i = Limite
            Exit For
        End If
        MiFecha = MiFecha.AddDays(1)
    Next
Next

Que tenga un buen día ...
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