Visual Basic.NET - condicionar evento entre dos fechas, ayuda

 
Vista:
sin imagen de perfil

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 28/09/2023 20:38:17
If TBentrada.Value.Date <= "06/04/23" >= "09/04/23" Or TBentrada.Value.Date <= "23/06/23" >= "25/06/23"

CBtemporada.forecolor=color.lima

ElseIf TBentrada.Value.Date <= "01/04/23" >= "05/04/23" Or TBentrada.Value.Date <= "01/06/23" >= "22/06/23"

CBtemporada.forecolor=color.red

Else
CBtemporada.forecolor=color.blue

End If


'creo que tengo un problema de formato o exprecion'
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 28/09/2023 21:28:03
Hola Leonardo
Debes utilizar el ToString como he te mostrado en el problema precedente.
Que es el herramienta TBentrada ? Un TextBox o un DateTimePicker ?
Miraré cuando arribo a casa (estoy al restaurante...)
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 28/09/2023 22:26:04
Hola,

Para comparar fechas, hay 2 solucionnes;
Miras estas fechas : 31/08/2023 y 28/09/2023. La cadena 31/08/2023 es alfabéticamente más grande que 28/08/2023.
Si convierte las fechas “String” en fechas “Date”, entonces puedes las comparar y 28/09/2023 es más reciente que 31/08/2023.
Para comparar sin convertir en “String”, tienes que volver las cadenas (es más difícil que convertir en “Date”). Con las fechas vueltas, tenemos 2023/09/28 y 2023/08/31 : 2023/09/28 es alfabéticamente más grande que 2023/08/31.

Para hacer fácil, escribes :

Dim Fecha1 As Date = CType(“28/9/2023”, Date)
Dim Fecha2 As Date = CType(TBentrada.Text, Date)
If Fecha1 >= Fecha2 Then
‘ ………
Else
‘ ……….

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

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 29/09/2023 21:41:03
con esto puedo decir que este dentro de un rango de fecha? es decir que se ponga de color verde solo si la fecha actual esta dentro de las dos fechas, ejemplo


si fecha_actual es mayor que una fecha y menor que otra fecha

color de boton sea verde

si no es asi

color de boton rojo
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

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 29/09/2023 23:18:13
lo eh echo asi


Dim Fecha1a As Date = CType(“06/04/23”, Date)
Dim Fecha2a As Date = CType(“09/04/23”, Date)
Dim Fecha3a As Date = CType(“23/06/23”, Date)
Dim Fecha4a As Date = CType(“25/06/23”, Date)
Dim Fecha5a As Date = CType(“14/07/23”, Date)
Dim Fecha6a As Date = CType(“31/08/23”, Date)
Dim Fecha7a As Date = CType(“30/06/23”, Date)
Dim Fecha8a As Date = CType(“02/07/23”, Date)
Dim Fecha9a As Date = CType(“07/07/23”, Date)
Dim Fecha10a As Date = CType(“09/07/23”, Date)
Dim Fecha1b As Date = CType(“01/04/23”, Date)
Dim Fecha2b As Date = CType(“05/04/23”, Date)
Dim Fecha3b As Date = CType(“01/06/23”, Date)
Dim Fecha4b As Date = CType(“22/06/23”, Date)
Dim Fecha5b As Date = CType(“26/04/23”, Date)
Dim Fecha6b As Date = CType(“13/07/23”, Date)
Dim Fecha7b As Date = CType(“12/10/23”, Date)
Dim Fecha8b As Date = CType(“15/10/23”, Date)
Dim Fecha9b As Date = CType(“28/10/23”, Date)
Dim Fecha10b As Date = CType(“01/11/23”, Date)
Dim Fecha11b As Date = CType(“02/12/23”, Date)
Dim Fecha12b As Date = CType(“06/12/23”, Date)
Dim Fechaactual As Date = CType(TBentrada.Text, Date)

If Fechaactual <= Fecha1a And Fechaactual >= Fecha2a Or Fechaactual <= Fecha3a And Fechaactual >= Fecha4a Or Fechaactual <= Fecha5a And Fechaactual >= Fecha6a Or Fechaactual <= Fecha7a And Fechaactual >= Fecha8a Or Fechaactual <= Fecha9a And Fechaactual >= Fecha10a Then
CBtemporada.Text = "Alta"

ElseIf Fechaactual <= Fecha1b And Fechaactual >= Fecha2b Or Fechaactual <= Fecha3b And Fechaactual >= Fecha4b Or Fechaactual <= Fecha5b And Fechaactual >= Fecha6b Or Fechaactual <= Fecha7b And Fechaactual >= Fecha8b Or Fechaactual <= Fecha9b And Fechaactual >= Fecha10b Or Fechaactual <= Fecha11b And Fechaactual >= Fecha12b Then
CBtemporada.Text = "Media"
Else
CBtemporada.Text = "Baja"

End If
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 30/09/2023 07:59:29
Hola,
Si funciona, este es muy bien.
Pero, debería ser posible de elegir las playas de las horas de otra manera.
Quizá puedes enviar las explicaciones, la lógica de selección un color o otro, podré intentar de escribir tus códigos más simplemente.
Tus fechas están para a veces meses, no todos. Y, a menudo, una expresión logica tan grande pode ser simplificada.
No tengo mucho tiempo hoy, pero si envías, miraré mañana, al más tarde.

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

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 30/09/2023 08:02:58
En toda menera, miraré con detalle tu expresión IF ... THEN ....
Con un poco de álgebra Boolean, debería simplificar.
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
sin imagen de perfil

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 30/09/2023 10:00:41
este es mi codigo por el momento no funciona, TBentrada es un datetimepiker, al momento de pedir que la fecha de hoy este dentro de dos fehas, algo esta mal


Dim Fecha1a As Date = CType(“06/04/23”, Date)
Dim Fecha2a As Date = CType(“09/04/23”, Date)
Dim Fecha3a As Date = CType(“23/06/23”, Date)
Dim Fecha4a As Date = CType(“25/06/23”, Date)
Dim Fecha5a As Date = CType(“14/07/23”, Date)
Dim Fecha6a As Date = CType(“31/08/23”, Date)
Dim Fecha7a As Date = CType(“30/06/23”, Date)
Dim Fecha8a As Date = CType(“02/07/23”, Date)
Dim Fecha9a As Date = CType(“07/07/23”, Date)
Dim Fecha10a As Date = CType(“09/07/23”, Date)
Dim Fecha1b As Date = CType(“01/04/23”, Date)
Dim Fecha2b As Date = CType(“05/04/23”, Date)
Dim Fecha3b As Date = CType(“01/06/23”, Date)
Dim Fecha4b As Date = CType(“22/06/23”, Date)
Dim Fecha5b As Date = CType(“26/04/23”, Date)
Dim Fecha6b As Date = CType(“13/07/23”, Date)
Dim Fecha7b As Date = CType(“12/10/23”, Date)
Dim Fecha8b As Date = CType(“15/10/23”, Date)
Dim Fecha9b As Date = CType(“28/10/23”, Date)
Dim Fecha10b As Date = CType(“01/11/23”, Date)
Dim Fecha11b As Date = CType(“02/12/23”, Date)
Dim Fecha12b As Date = CType(“06/12/23”, Date)
Dim Fechaactual As Date = CType(TBentrada.Text, Date)

If Fechaactual <= Fecha1a And Fechaactual >= Fecha2a Or Fechaactual <= Fecha3a And Fechaactual >= Fecha4a Or Fechaactual <= Fecha5a And Fechaactual >= Fecha6a Or Fechaactual <= Fecha7a And Fechaactual >= Fecha8a Or Fechaactual <= Fecha9a And Fechaactual >= Fecha10a Then

CBtemporada.Text = "Alta"

ElseIf Fechaactual <= Fecha1b And Fechaactual >= Fecha2b Or Fechaactual <= Fecha3b And Fechaactual >= Fecha4b Or Fechaactual <= Fecha5b And Fechaactual >= Fecha6b Or Fechaactual <= Fecha7b And Fechaactual >= Fecha8b Or Fechaactual <= Fecha9b And Fechaactual >= Fecha10b Or Fechaactual <= Fecha11b And Fechaactual >= Fecha12b Then

CBtemporada.Text = "Media"

Else

CBtemporada.Text = "Baja"

End If
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

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 30/09/2023 10:46:49
lo siento, me di cuenta que si funciona, pero no se actualiza en tiempo real, es decir, tengo que cerrar el programa y abrirlo para que se actualize, por que ese codigo esta en el evento load del forulario,
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 30/09/2023 10:58:46
Comprendo, este código debe ser puesto en un procedimiento del evento Tick de un Tiner. Lo haré en la tarde.
Pero me gustaría saber cuales fechas es color1 y cuando es color2.
Todos domingos, todos miércoles, espero una lógica que no ser un enumeración.
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

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 30/09/2023 11:20:56
eh cambiado lo de los colores, lo eh puesto como temporada alta, media o baja. si la fecha esta dentro de varios rangos un (textbox) dirá "alta", si esta dentro de otros rangos dirá "media" y si no se cumple ninguna de las fechas dirá "baja", el código funciona bien ahora, pero no se actualiza cuando cambio la fecha en el (datetimepiker), a menos que cierre el programa y lo abra otra vez.
te dejo el código a continuación.

Private Sub Plantilla_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Dim Fecha1a As Date = CType(“06/04/23”, Date)
Dim Fecha2a As Date = CType(“09/04/23”, Date)
Dim Fecha3a As Date = CType(“23/06/23”, Date)
Dim Fecha4a As Date = CType(“25/06/23”, Date)
Dim Fecha5a As Date = CType(“14/07/23”, Date)
Dim Fecha6a As Date = CType(“31/08/23”, Date)
Dim Fecha7a As Date = CType(“30/06/23”, Date)
Dim Fecha8a As Date = CType(“02/07/23”, Date)
Dim Fecha9a As Date = CType(“07/07/23”, Date)
Dim Fecha10a As Date = CType(“09/07/23”, Date)
Dim Fecha1b As Date = CType(“01/04/23”, Date)
Dim Fecha2b As Date = CType(“05/04/23”, Date)
Dim Fecha3b As Date = CType(“01/06/23”, Date)
Dim Fecha4b As Date = CType(“22/06/23”, Date)
Dim Fecha5b As Date = CType(“26/04/23”, Date)
Dim Fecha6b As Date = CType(“13/07/23”, Date)
Dim Fecha7b As Date = CType(“12/10/23”, Date)
Dim Fecha8b As Date = CType(“15/10/23”, Date)
Dim Fecha9b As Date = CType(“28/10/23”, Date)
Dim Fecha10b As Date = CType(“01/11/23”, Date)
Dim Fecha11b As Date = CType(“02/12/23”, Date)
Dim Fecha12b As Date = CType(“06/12/23”, Date)
Dim Fechaactual As Date = CType(TBentrada.Value.Date.ToString, Date)

If Fechaactual >= Fecha1a And Fechaactual <= Fecha2a Or Fechaactual >= Fecha3a And Fechaactual <= Fecha4a Or Fechaactual >= Fecha5a And Fechaactual <= Fecha6a Or Fechaactual >= Fecha7a And Fechaactual <= Fecha8a Or Fechaactual >= Fecha9a And Fechaactual <= Fecha10a Then

CBtemporada.Text = "Alta"

ElseIf Fechaactual >= Fecha1b And Fechaactual <= Fecha2b Or Fechaactual >= Fecha3b And Fechaactual <= Fecha4b Or Fechaactual >= Fecha5b And Fechaactual <= Fecha6b Or Fechaactual >= Fecha7b And Fechaactual <= Fecha8b Or Fechaactual >= Fecha9b And Fechaactual <= Fecha10b Or Fechaactual >= Fecha11b And Fechaactual <= Fecha12b Then

CBtemporada.Text = "Media"

Else

CBtemporada.Text = "Baja"

End If
end sub
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 30/09/2023 12:14:33
Rápidamente …

Al inicial del Form, declares un Timer como esta :

1
Dim WithEvents MiTimer As New Timer

Ahora, puedes escribir el evento Tick de MiTirmer :

1
2
3
4
5
Private Sub MiTimer_Tick(sender As Object, e As EventArgs) Handles MiTimer.Tick
       MiTimer.Stop()
       AjustarLosColores()  ' este procedimiento sera lambda a cada Interval de MiTimer, este es escrito en el evento Load del Fomr
       MiTimer.Start()
    End Sub

En el procedimiento Plantille_Load, escribemos los códigos para ajustar MiTimer :

1
2
3
4
5
6
7
Private Sub Plantilla_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
MiTimer.Interval = 1000   ‘ Interval es en milisegundos. Por lo tanto, 1000  es 1 segunda. Quizá que 2000 seria mejor …
MiTimer.Start
 
‘ No mas escribir sobre los colores. Este es MiTimer que lo hara al Tick siguiente.
End Sub

El procedimiento AjustarLosColores() tiene todos los códigos que has escrito

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Sub AjustarLosColores()
Dim Fecha1a As Date = CType(“06/04/23”, Date)
Dim Fecha2a As Date = CType(“09/04/23”, Date)
Dim Fecha3a As Date = CType(“23/06/23”, Date)
Dim Fecha4a As Date = CType(“25/06/23”, Date)
Dim Fecha5a As Date = CType(“14/07/23”, Date)
Dim Fecha6a As Date = CType(“31/08/23”, Date)
Dim Fecha7a As Date = CType(“30/06/23”, Date)
Dim Fecha8a As Date = CType(“02/07/23”, Date)
Dim Fecha9a As Date = CType(“07/07/23”, Date)
Dim Fecha10a As Date = CType(“09/07/23”, Date)
Dim Fecha1b As Date = CType(“01/04/23”, Date)
Dim Fecha2b As Date = CType(“05/04/23”, Date)
Dim Fecha3b As Date = CType(“01/06/23”, Date)
Dim Fecha4b As Date = CType(“22/06/23”, Date)
Dim Fecha5b As Date = CType(“26/04/23”, Date)
Dim Fecha6b As Date = CType(“13/07/23”, Date)
Dim Fecha7b As Date = CType(“12/10/23”, Date)
Dim Fecha8b As Date = CType(“15/10/23”, Date)
Dim Fecha9b As Date = CType(“28/10/23”, Date)
Dim Fecha10b As Date = CType(“01/11/23”, Date)
Dim Fecha11b As Date = CType(“02/12/23”, Date)
Dim Fecha12b As Date = CType(“06/12/23”, Date)
 
Dim Fechaactual As Date = CType(TBentrada.Value.Date.ToString, Date)
 
If Fechaactual >= Fecha1a And Fechaactual <= Fecha2a Or Fechaactual >= Fecha3a And Fechaactual <= Fecha4a Or Fechaactual >= Fecha5a And Fechaactual <= Fecha6a Or Fechaactual >= Fecha7a And Fechaactual <= Fecha8a Or Fechaactual >= Fecha9a And Fechaactual <= Fecha10a Then
 
CBtemporada.Text = "Alta"
 
ElseIf Fechaactual >= Fecha1b And Fechaactual <= Fecha2b Or Fechaactual >= Fecha3b And Fechaactual <= Fecha4b Or Fechaactual >= Fecha5b And Fechaactual <= Fecha6b Or Fechaactual >= Fecha7b And Fechaactual <= Fecha8b Or Fechaactual >= Fecha9b And Fechaactual <= Fecha10b Or Fechaactual >= Fecha11b And Fechaactual <= Fecha12b Then
 
CBtemporada.Text = "Media"
 
Else
 
CBtemporada.Text = "Baja"
 
End If
end sub

Dice me si funciona como quieres ...

Pero deberías reflexionar a otra manera de describir las temporadas, no es bien de las escribir con todas estas fechas porque sera cambiada cado año (no sé si existe otra manera ...).
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
sin imagen de perfil

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 30/09/2023 19:55:18
No pensé en que cada año cambiará
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 01/10/2023 00:47:48
Te propongo de utilizar una hoja XLS que se es leído con un SELECT, como una tabla Access.
La hoja XLS puede tener todo el año, una columna con fecha y otra con la información 1, 2 o 3, por ejemplo.
A ti a ver si puedes trabajar con este calendario de un año completo....
Con XLS, este calendario puede ser actualizar sin modificar tus códigos.
....
Hasta mañana...
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 01/10/2023 09:45:23
Hola,

He reflexionado como registrar las temporadas.

Una escritura por playas no seria demasiado difícil a hacer una vez por año. Este podría ser hecho con XLS o Notepad o OpenOffice. Podemos tener una hoja de calculo o un fichero TXT de tipo CSV.

Simplemente, las playas deberían ser escritas con [Fecha inicial]+[Fecha final]+[Indication de la importancia].

Por ejemplo, en XLS :

Leonardo1

Mismo en fichero CSV (=TXT con seprador)

FechaInicial;FechaFinal;ValorTiempo;Comentario
06/04/2023;09/04/2023;1;= Alta
23/06/2023;25/06/2023;1;= Alta
14/07/2023;31/08/2023;1;= Alta
30/06/2023;02/07/2023;1;= Alta
07/07/2023;09/07/2023;1;= Alta
01/04/2023;05/04/2023;2;= Media
01/06/2023;22/06/2023;2;= Media
26/04/2023;13/07/2023;2;= Media
12/10/2023;15/10/2023;2;= Media
28/10/2023;01/11/2023;2;= Media
02/12/2023;06/12/2023;2;= Media

XLS o TXT o CSV, ..., es important de tener los nombres de los campos en priera línea y las playas completas línea por línea.

No ya reflexiono sobre la manera de utilizar estos datos, he solamente reflexionado a la menara de los registrar.

Estudiando tus fechas, veo la playa 26/4 ==> 13/7 de tipo "Media" superpone otras playas de tipo "Alta". Normal ?

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

condicionar evento entre dos fechas, ayuda

Publicado por leonardo (12 intervenciones) el 01/10/2023 13:00:18
me parece una idea muy buena, de esta manera solo tendría que modificar cada año solo el txt... ojala tubiera un profesor como vos :D muchas gracias me as ayudado mucho. con esto tendria terminado el programa. me pondre en ello esta tarde, si me sale bien o no lo comento por aqui...
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.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

condicionar evento entre dos fechas, ayuda

Publicado por Phil Rob (1554 intervenciones) el 01/10/2023 14:59:03
Muy bien!

Si utilizas XLS, debería ser posible de leer directamente la hoja con SQL para decir de que playa viene una fecha elegida y por lo tanto, conocer su importancia. Entonces, es fácil de poner los colores :
1
2
3
4
5
6
7
If ValorTiempo = 1 Then
  Color1
ElseIf ValoTiempo = 2 Then
 Color2
Else
 Color3
End If
Si utilizas CSV (y que XLS no existe sobre el PC), tienes que leer las líneas y separar los campos para llenar un DataTable. Entonces solamente es posible de mirar los ValorTiempo.

Pienso que XLS es mas fácil. Cuando tienes una hoja, envias la. Debería tener los códigos para la leer.

Cuidado ..., no pueden se superponer las playas.

....
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