Visual Basic.NET - DayOfWeek en CheckBox

 
Vista:
Imágen de perfil de Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 04/07/2019 22:31:35
Tengo una fecha de inicio colocada en un TextBox, y cuando ejecuto el programa me realiza un programa de fabricación con fechas iniciales y finales, quise pulir un poco el programa y agregar dos checkboxs (checkbox1 para el sábado) y un (checkbox2 para el domingo)

Cómo puedo lograr qué el programa se ejecute dependiendo el checked de los checkbox para que tome a consideración si deberá contar con la disponibilidad del sábado y/o Domingo?

Dim date1 As Date = CType(TextBox1.Text, Date)

Table.Rows.Add("Habilitado", "Materials", "Sending drawings for approval", DateAdd(DateInterval.Day, 1, date1), DateAdd(DateInterval.Day, 2, date1))
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Diego (190 intervenciones) el 06/07/2019 15:10:14
Hola Jaime, no se si termino de comprender tu pregunta, pero para saber el estado del checkbox, tenés que preguntar o asignar un valor a la propiedad .checked.

1
2
if CheckBox_Sabado.checked then ---->>>> hacer lo que sea necesario para incluir el sabado
if CheckBox_Domingo.checked then ---->>>> hacer lo que sea necesario para incluir el domingo

No se si responde tu duda.
Saludos y +Bytes.
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 06/07/2019 15:25:59
Hola Diego gracias por su respuesta, el problema es mi dificultad para excluir el sábado, cómo puedo lograr eso? ya que el problema trabaja sin restricciones e incluye automáticamente los fines de semana al generar el plan de trabajo 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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Diego (190 intervenciones) el 06/07/2019 15:43:19
Hola Jaime, bueno por ejemplo utilizando tu codigo podrías hacer esto, veo que en una columna agregas un dia y en la otra 2, me voy a concentrar en uno de los 2 resultados, pero para el otro es exactamente lo mismo:

1
2
3
4
5
6
7
8
9
10
if DateAdd(DateInterval.Day, 1, date1).DayOfWeek = DayOfWeek.Saturday then
    'Si entró acá significa que la fecha que vos pusiste, al dia siguiente es Sábado, ahora.... dependiendo de tu check sabado
    'haces lo que corresponde en cada caso
 
    if check_Sabado.checked then
        'Incluir los sabados, no hacer nada
    else
         DateAdd(DateInterval.Day, 3, date1) 'Sumo 3 de este modo, saltaría el sabado y el domingo y pasaría a ser el lunes la fecha final
    endif
endif

Podes agregar luego la validación para el domingo.
Espero ayude.
Saludos y +Bytes.
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 06/07/2019 16:05:37
Digo, he buscado en muchas partes y al parecer eres el único que me ha podido aclarar un poco más, te platico y te comparto mi código, soy aficionado a la programación (no experto) y tomé un proyecto en la empresa para la que trabajo y quiero desarrollar un planeador de fabricación para proyectos en donde tengo un TextBox1 para la fecha de inicio y un TextBox4 para el numero de carretes=Ci, el usuario debe especificar cuantos Ci (Carretes) serán y a partir de ahí comience la planeación del programa de fabricación. Toda esta información es vaciada en un DataGridView en donde tengo columnas donde está el "Departamento" "Sección" " Operación" "Fecha final" "Fecha inicial"

El problema es cuando mi código comienza, me asigna las fechas ya que para el, se trabaja sin importar si es fin de semana o no.

Quise pulir un poco el programa y agregar dos checkboxs (checkbox1 para el sábado) y un (checkbox2 para el domingo).

Y así el programa se ejecute dependiendo el checked de los checkbox para que tome a consideración si deberá contar con la disponibilidad del sábado y/o Domingo? con estas tres opciones

Lunes a Viernes.
Lunes a Sábado
Lunes a Domingo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
    Dim date1 As Date = CType(TextBox1.Text, Date)
    Dim numRows As Integer
 
    If Integer.TryParse(TextBox4.Text, numRows) Then
        If (numRows >= 1) Then
            For i As Integer = 1 To numRows
                Table.Rows.Add("Manufacturing", "Channel", "Cut plate C" & i, DateAdd(DateInterval.Day, 4, date1), DateAdd(DateInterval.Day, 4, date1))
                Table.Rows.Add("Manufacturing", "Channel", "Rolled plate C" & i, DateAdd(DateInterval.Day, 4, date1), DateAdd(DateInterval.Day, 1, date1))
                Table.Rows.Add("Manufacturing", "Channel", "Longituid welding C" & i, DateAdd(DateInterval.Day, 4, date1), DateAdd(DateInterval.Day, 5, date1))
                Table.Rows.Add("Manufacturing", "Channel", "Re rolled C" & i, DateAdd(DateInterval.Day, 7, date1), DateAdd(DateInterval.Day, 7, date1))
                date1 = DateAdd(DateInterval.Day, 6, date1)
            Next
        Else
            MessageBox.Show("Value: " & TextBox4.Text & " El numero de filas debe ser mayor o igual a 1", "Error")
        End If
    Else
        MessageBox.Show("Value: " & TextBox4.Text & " Número invalido", "Error")
    End If
 
End Sub

Tendría que agregar la condición if DateAdd(DateInterval.Day, 1, date1).DayOfWeek = DayOfWeek.Saturday then en cada uno de mis DateAdd? esto no me generaría demasiados End If? Espero puedas ayudarme para darle fin a este proyecto, me ayudaría mucho saludos.

Captura
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 06/07/2019 17:08:04
Hola Jaime,

Creo que tienes que usar los RadioButon y no los CheckBox por que con los RadioButton un solo elección es posible.

Uso una variable global Eleccion con los valores 1, 2 o 3.

Lunes a Viernes ==> 1
Lunes a Sábado ==> 2
Lunes a Domingo ==> 3

Cuando cambias un RadioButton, el código cambia la variable (cf. Proyecto para ejemplo adjuntado)


Y en el procedimiento Button1_Click, cuando calculas una fecha, cambias esta fecha segun el variable Eleccion :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
' ... ... ...
Dim date1 As Date = CType(TextBox1.Text, Date)
 
Select Case Eleccion                ' Los días son Domigo = 0, Lunes = 1,, Sabado = 6.
    Case 1
        If date1.DayOfWeek = 6 Then
            date1 = date1.AddDays(2)
        ElseIf date1.DayOfWeek = 0 Then
            date1 = date1.AddDays(1)
        End If
    Case 2
        If date1.DayOfWeek = 0 Then
            date1 = date1.AddDays(1)
        End If
    Case 3
        ' Nada hacer
End Select
 
' ... ... ...
Y también

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
' ... ... ...
            date1 = DateAdd(DateInterval.Day, 6, date1)
Select Case Eleccion                ' Los días son Domigo = 0, Lunes = 1,, Sabado = 6.
    Case 1
        If date1.DayOfWeek = 6 Then
            date1 = date1.AddDays(2)
        ElseIf date1.DayOfWeek = 0 Then
            date1 = date1.AddDays(1)
        End If
    Case 2
        If date1.DayOfWeek = 0 Then
            date1 = date1.AddDays(1)
        End If
    Case 3
        ' Nada hacer
End Select
 
        Next
' ... ... ...

Saludos

RadioButton
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 06/07/2019 19:00:07
Hola Phil tu lógica es muy buena! pero no pude aplicarla el programa compila perfectamente pero me sigue dando los mismos días, me permitirías adjuntarte mi el proyecto en zip para que le puedas echar un vistazo?
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 06/07/2019 22:24:36
Si, naturalmente, envias me el proyecto, mirare 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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 07/07/2019 18:33:12
Buen día Phil, espero te encuentres bien, te adjunto el zip para recibir tu ayuda, muchas gracias!

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 07/07/2019 22:29:14
Hola Jaime,

He modificado Form_Load pero no es necesario.
Adjunto el archivo Form2.VB.
Mi código paréceme bien funcionar pero no soy seguro del condigo en círculo rojo :

RadioButton2

Dices me si no funciona ...
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 08/07/2019 15:56:43
Bonito Lunes Phil,

Te comento, los números encerrados en un circulo rojo se refiere a la duración que tiene cada actividad, no podría poner una iteración de +1 porque cada actividad tiene una duración diferente, el programa me sigue dando las mismas fechas para los 3 case, te puse una duración de 1 día para cada actividad para que no te confundas con las duraciones y puedas ver la secuencia de las fechas como un dia por actividad puedes ver a partir de la fecha 01/07/19 probando los 3 case.

Muchas gracias por tu ayuda!
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 08/07/2019 18:09:33
Hola,

Comprendo que la acción de los RadioButton debe ser hecho en cada fecha.

He puesto el SELECT CASE para agregar días al fecha en una función NoWeekEnd() para mejora legibilidad.

Me propongo de escribir el código como siguiente :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim DateBegin As Date
Dim DateEnd As Date
 
If Integer.TryParse(TextBox4.Text, numRows) Then
    If (numRows >= 1) Then
        For i As Integer = 1 To numRows
 
            DateBegin = NoWeekEnd(DateAdd(DateInterval.Day, 1, date1))
            DateEnd = NoWeekEnd(DateAdd(DateInterval.Day, 2, DateBegin))  ' !!!! con DateBegin
            Table.Rows.Add("Manufacturing", "Channel", "Cut plate C" & i, DateBegin, DateEnd)
 
            DateBegin = NoWeekEnd(DateAdd(DateInterval.Day, 5, date1))
            DateEnd = NoWeekEnd(DateAdd(DateInterval.Day, 6, DateBegin))
            Table.Rows.Add("Manufacturing", "Channel", "Longituid welding C" & i, DateBegin, DateEnd)
 
            ' ... ... ...

Dice me si te gusta ...
En este caso, continuo.
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 08/07/2019 18:26:23
No sé si la idea quedó clara pero lo que busco es que independientemente de la fecha que el usuario agregue se obtenga algo similar a la imagen adjuntada.

Disculpa las molestias causadas Philp, pero he batallado y aún no obtengo la solución.

Saludos.

Captura
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 08/07/2019 22:31:04
Existe contradicción en tu imagen, el comportamiento no es todavía el mismo.

En el Caso 1 :
Duración siempre 1 día.
Fecha inicial igual fecha final de la operación precedente excepto “re Rolled”, pero no es mismo en otros casos.

Mejor que respondes a mis preguntas para que cree el algoritmo.

Suponemos que trabajamos todos días :

Fecha en la TextBox (date1) : 1/7/2019 o 2/7/2019 ?

Cut Plate :
Fecha inicial : cuanto días después la fecha para iniciar ?
Cuanto días de duración ?

Rolled Plate :
Inicio todavía a la fecha final del operación precedente ?
Si no, cuanto días después la fecha para iniciar ?
Cuanto días de duración ?

Longituidal :
Inicio todavía a la fecha final del operación precedente ?
Si no, cuanto días después la fecha para iniciar ?
Cuanto días de duración ?

Re rolled :
Inicio todavía a la fecha final del operación precedente ?
Si no, cuanto días después la fecha para iniciar ?
Cuanto días de duración ?

Nuevo ciclo (nuevo Cut Plate) :
Inicio todavía a la fecha final del operación precedente ?
Si no, cuanto días después la fecha para iniciar ?

Esto funcionará ...
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 08/07/2019 22:48:30
For example: 1/7/2019

Cut Plate :
Fecha inicial : cuanto días después la fecha para iniciar El mismo día de inicio
Cuanto días de duración ? 1 día

Rolled Plate :
Inicio todavía a la fecha final del operación precedente ? Inicia 2/07/19
Si no, cuanto días después la fecha para iniciar ?
Cuanto días de duración ? 1 día

Longituidal :
Inicio todavía a la fecha final del operación precedente ? 3/07/19
Si no, cuanto días después la fecha para iniciar ?
Cuanto días de duración ? 2 días

Re rolled :
Inicio todavía a la fecha final del operación precedente ? 05/07/19
Si no, cuanto días después la fecha para iniciar ?
Cuanto días de duración ? 2

Nuevo ciclo (nuevo Cut Plate) :
Inicio todavía a la fecha final del operación precedente ? 06/07/19
Si no, cuanto días después la fecha para iniciar ?


Había puesto una duración de 1 día para que notaras que lo que busco es saltar días sábados y domingos dependiendo el caso.
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 09/07/2019 07:45:47
Perfecto.
Me voy a divertir esta tarde
Que tenga un buen dia!
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 09/07/2019 08:23:45
Disculpa, no podía esperar la tarde…, rápido antes de salir

Gracias que probar esta versión (archivo Form2.vb adjuntado).

El algoritmo :
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
For i As Integer = 1 To numRows
 
    Duracion = 1   ' Duration of this work
    DateBegin = NoWeekEnd(date1) ' El mismo dia de inicio   ' Begin this work
    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
    Table.Rows.Add("Manufacturing", "Channel", "Cut plate C" & i, DateBegin, DateEnd)
 
    Duracion = 1   ' Duration of this work
    DateBegin = DateEnd    ' DateEnd precedente   ' Begin this work
    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
    Table.Rows.Add("Manufacturing", "Channel", "Rolled plate C" & i, DateBegin, DateEnd)
 
    Duracion = 2   ' Duration of this work
    DateBegin = DateEnd    ' DateEnd precedente   ' Begin this work
    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
    Table.Rows.Add("Manufacturing", "Channel", "Longituid welding C" & i, DateBegin, DateEnd)
 
    Duracion = 2   ' Duration of this work
    DateBegin = DateEnd    ' DateEnd precedente   ' Begin this work
    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
    Table.Rows.Add("Manufacturing", "Channel", "Re rolled C" & i, DateBegin, DateEnd)
 
    date1 = DateEnd.AddDays(1)  ' Date for begin new loop, 1 day after the end of last work
 
Next

Fecha1
Fecha2
Fecha3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 09/07/2019 16:14:40
Hey Phil! you did it..!! muchas gracias me has ayudado mucho tu solución fue muy elegante, eres un genio.

Gracias nuevamente.

Great regards Phil.
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 09/07/2019 23:18:10
Hola,

Disculpa de agregar opciones pera quizá se te olvido los días festivos …, y tambien yo quería jugar un poco ...

He agregado un CheckBoxList y un Label en el Form2.Design.
He modificado el procedimiento Form1_Load y la función NoWeekEnd.

Adjunto Form2_3_Archivos.Zip que contiene los 3 archivos Form2 (.VB, .Designer.VB, .Resx).

Buena noche

Fecha4
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 10/07/2019 22:11:27
Hey Phil muchas gracias por la consideración!

Gracias por apoyarme nuevamente,

Perdón por responder hasta ahora pero había estado ocupado estos días, el programa luce mejor con tu consideración holidays! Planeo meter factores que afecten la duración de los días, será por ejemplo longitud del equipo, diámetros del carrete, diámetros de boquillas, para esto tenía planeado realizar una matriz dentro del mismo código (¿Es esto posible?) y plantear varios escenarios de duración y que dependiendo del parámetro ingresado en las variables (diámetro carrete, diámetro boquilla, longitud) eligiera uno de todos los escenarios, consideras que es una solución viable o otra idea elegante?

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 10/07/2019 23:50:24
Hola,

En mi código, en el procedimiento Button1_Click, he creado una variable Duracion (para mejora la legibilidad) y le asigno el valor (en días) que me has dado para cada trabajo.
Es facil de reemplazar esto valor para el resultado de una función CalcularDuracion(TipoTrabajo). En este caso, tenamos :

1
Duracion = CalcularDuration(1)  ' para ejemplo, si 1 es el tipo de "Cut plate".

El valor de Duracion no cambia el arreglo de las fechas, porque si el 1 de mayo 2019 es dia de fiesta, la produccion deba esperar el 2 de mayo para terminar.
Asi, la variable Duracion permite de calcular una primera fecha y el código de Button1_Click arregla una fecha final con sábado, domingo et días de fiesta.

Para calcular las duraciones, tienes que escribir el código :

1
2
Private Function CalcularDuracion(ByVal TipoTrabajo As Byte)  As Integer
' Algoritmo que toma todas las variables que te gusta ...

Pero, creo que estas variables van dar duraciones que serán diferentes de pocas horas. Esto no cambiar de manera significativa el calendario de las producciones terminadas, especialmente en este caso donde no se trabaja el sábado, el domingo, las noches (?), ...

Entonces, que será el impacto sobre la fecha final ?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 11/07/2019 16:21:43
Hola de nuevo Phil, realmente las duraciones que te pase son ideales, van a estar cambiando respecto al material (_metal) que se este utilizando así como sus diamteros de boquillas y carretes ademas de la longitud del equipo, no importa si las fechas se desplazan ya que nunca serán las mismas en ningun caso, debido a que hay metales más duros de doblar (Rolar), más complicados de soldar y las dimensiones afectaran obviamente la duración, se ha puesto interesante verdad? jajaja por eso estaba pensando en realizar una matriz en este caso.

Consideras que la realización de una matriz en este caso es una solución ideal o se podría plantear otra solución más elegante?

Saludos y gracias!
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 11/07/2019 17:27:46
Hola,

La matriz no es una buena solución (creo).
Tienes que probar escribir este matriz en Excel.

Debe contener :
Las operaciones : Cute plat, Rolled, Longitud, Re Rolled
Para cada : Material dureza - 2, Material dureza - 1, Material normal, Material dureza + 1, Material dureza + 2, ...
Y para cada caso : Diámetros, Longitud, ….

Veas, este matriz debe ser en 3 dimensiones.

Pero si tienes tablas con los valores, es posible de le registrar en un archivos de texto y leer (con StreamReader) las informaciones necesarias en esto momento.
Es necesario que escribieras líneas con delimitador de campos (por ejemplo, el carácter ~, ASCII 126) :
Operacion~Cute Plate~Material~Inoxidable~Diam~120~Long~1200~Duracion~2~

Puedes escribir tan parámetros que te gusta, cada veces, un juego por linea de texto : NombreParametro~Valor~.

También, el archivo puede ser de tipo XML. Me, me gusta el archivo de texto porque puede es escribido fácilmente con NotePad.

Sobre el archivo de texto, también este puede ser utilizar por registrar las fechas de los días de fiesta.

Buena reflexión ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 12/07/2019 21:52:39
Excelente Phil y estos valores podría ser interpolados cierto? o qué sucedería si el usuario elige un rango que no haya definido, por ejemplo yo definí 1200 in de longitud y mi siguiente definición fue 1400 in y el usuario seleccionó 1300 in de longitud?

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 12/07/2019 23:11:21
Hola,

Probablemente que puedes calcular valores aproximados ente dos valores seguros. Ente 1200 y 1400, 1300 es la valor plausible (si la serie de datos es ± lineal).
Tienes que ver si puebes tratar todos parametros del misma manera.
Tambien tienes que ver que seran los parametros y que seran los valores dados para asignar la variable Duracion.

Es tu decisión ...
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 12/07/2019 23:20:33
Si eligo usar el formato ASCII 126 Cómo podría obetener el valor 1 en tu codigo?

Operacion~Cute Plate~Material~Inoxidable~Large~45~Long~10~Duracion~1~

Duracion = 1 ' Duration of this work
DateBegin = DateEnd ' DateEnd precedente ' Begin this work
DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
Table.Rows.Add("Manufacturing", "Channel", "Rolled plate C" & i, DateBegin, DateEnd)


Saludos, parece que el programa está agarrando más complejidad.

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 13/07/2019 00:23:39
"parece que el programa está agarrando más complejidad" ... si !

La función "Private Function CalcularDuracion(ByVal TipoTrabajo As Byte) As Integer" lee el archivo y buscada el tipo de operación necesaria, por ejemplo "Cute Plate". Cuando es leído la línea en el archivo, tenemos la duración 1 (segun el ejemplo de tu mensaje).

Seguramente que la funcion no leera directo la duracion pero muchas valores para calcular la duracion finale ...

Para la legibilidad del codigo, creo tienes que poder escribir :
1
Duracion = CalcularDuracion(... ... ... parametros a fijar ...)

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 13/07/2019 09:22:21
Hola,

¿Has tenido una buena noche?

En lugar de calcular los valores aproximados ente dos valores seguros, ¿no puedes dar los valores de tiempo por unidad de medida, para cada operación, para cada material (en horas por metro para la longitud, por ejemplo)?
Si puede dar estos valores en horas, la función calculará la duración en día si sabe cuántas horas trabaja cada día. Tu programa será mucho más comodo.

Ejemplo :

Operacion~Cute Plate~Material~Inoxidable~Large(horas./m.)~.1~Long(horas./m.)~.75~Diam. (minutos./cm.)~2~
Operacion~Cute Plate~Material~Ductible~Large(horas./m.)~.1~Long(horas./m.)~.60~Diam. (minutos./cm.)~.5~


Es posible mezclar las unidades: minutos, horas, centímetros, metros, ...

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
1
Comentar
Imágen de perfil de Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 15/07/2019 16:24:11
Hola Phil, perdon por contestar hasta ahora, pero durante el fin de semana estuve desconectado completamente, estuve pensando y creo que las soluciones más sencillas suelen ser las más adecuadas, trataré de controlar el evento DataError del DataGridView al momento de ingresar datos, es posible modificar la columna de dias y es decir si el DataGridView me daba una duración de 1 día yo reemplazarlo por un 2 y que se calcule automaticamente la actualización desplazando las siguientes actividades? Investigaré un poco sobre el tema.

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 15/07/2019 18:09:46
Hola,

Estas feliz de estar desconectado todo el fin de semana ¡

Quizá ser útil para interceptar el texto introducido en un DataGridView que es ligadura con la base de datos :

1
2
3
Private Sub UnDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles UnDataGridView.DataError
    ' acceso al texto : sender.editingcontrol.text =  ..........'
End Sub

Saludos
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 Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 15/07/2019 18:47:01
Gracias Phil! Ten 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
Imágen de perfil de Jaime
Val: 73
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (33 intervenciones) el 19/07/2019 16:34:59
Hola Phil, cómo estás? espero te encuentres bien, podemos retomar este caso?

No logro hacer que el código lea el notepad con el valor asignado.

Podías ayudarme?

Cómo ligo el notepad al vb.net? tengo que poner una ruta de acceso?

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 19/07/2019 18:50:51
Tengo ejemplo. Lo busco y hago un ejemplo completo.
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
0
Comentar
Imágen de perfil de Jaime
Val: 73
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (33 intervenciones) el 19/07/2019 19:08:50
Gracias Phil, estaré atento! Descansa 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
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 20/07/2019 09:15:12
Hola,

He aislado 3 ejemplos del uso de archivos de textos para registrar datos y lo releer para iniciar zonas de texto y variables en un programa.
Los archivos son escribido con NotePad.exe. Puedes lo abrir y modificar (agregar líneas, modificar valores, eliminar líneas), es solamente necesario que conservas la misma estructura.

Miras el video : https://www.dropbox.com/s/a7isghpqmaqbxwz/ArchivosDeTextos.mp4?dl=0

Los 3 ejemplos son separado en la pantalla y también en el código. Este son :
Leer líneas de texto para llenar un CheckBoxList
Leer líneas de los parámetros iniciales para asignar Label y TextBox
Llenar un DataGridView con los valores del archivo

Adjunto el archivo ArchivosDeTextos.zip.

Tienes que comprender como este funciona, especialmente cuando utilizo el separador ~.

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

DayOfWeek en CheckBox

Publicado por Jaime (33 intervenciones) el 22/07/2019 23:11:45
Gracias Phil por todo realmente me has ayudado demasiado te lo agradezco mucho bendiciones amigo!
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 25/07/2019 00:32:57
Este son as informaciones para imprimar. Son en francés y soy demasido perezoso para traducir …
Pero el primero ejemplo, el código de procedimiento PrintDocument1_PrintPage es fácil a comprender, quizá con un poco de ayuda de Google Traduction.
Adjunto el archivo Imprimer.zip con aquellas informaciones. Espero que te ayudara.

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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 25/07/2019 09:01:09
Hola Jaime,

Quizá no he respondido bien a tu pregunta de ayer : “solo necesito obtener algunos valores en formato bold”.

Si quieres precisar tu pregunta y decime de cual texto es, probaré hacer mejor repuesta.

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
1
Comentar
Imágen de perfil de Jaime
Val: 73
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (33 intervenciones) el 26/07/2019 19:04:35
Hola Phil, lo que me compartiste no logré hacer "match" con mis condicionales en el código, te comparto mi proyecto mediante el siguiente enlace, estoy seguro que se trata de algo sencillo pero no logro hacerlo funcionar ni con lo que he investigado en internet, define en los materiales "inoxidable" y de espesor "3/4" para que puedas ver el programa funcionar, aún me falta condicionarlo más debido a las variables, pero ya es la base de como funcionará, sólo necesito el formato bold en los temas principales de las actividades (los que no tienen fecha). Traduje el pdf al idioma español y también lo subo por aquí por si a alguien más lo necesita.

Saludos, bendiciones.

https://www.dropbox.com/s/ro76bwe9ui2glwp/WindowsApplication1.zip?dl=0
maintopics
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 26/07/2019 22:09:13
Gracias para la traducción del documento.

Para el problema de los caracteres negrita, propongo de escribir el procedimiento PonerCaracteresNegritas() en el archivo FormPressureVessels.vb :
1
2
3
4
5
6
7
Private Sub PonerCaracteresNegritas()
    For R As Integer = 0 To DataGridView1.Rows.Count - 1
        If DataGridView1.Item("Fecha Inicial", R).Value.ToString = String.Empty Then
            DataGridView1.Item("Operación", R).Style.Font = New Font("Microsoft Sans Serif", 10, FontStyle.Bold)
        End If
    Next R
End Sub

Entonces tienes que llamar esto procedimiento después que la tabla Table es llenado, por ejemplo a la última línea de código de los procedimientos Button1_Click y Button2_Click_1.

Este trabajar debia hacer este que quieras.

Si debo testar, tienes que me envíar un foto del pantalla de FormPressureVessels durante el ejecución, antes el Click del Botón 1 o 2.
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 Jaime
Val: 73
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (33 intervenciones) el 26/07/2019 22:35:07
Hola Phil, te envio las dos imagenes antes de testear, así debería iniciar el programa, las tareas que no tienen fecha son las que busco poner en formato negrita. Intenté probarlo con tu código pero no pude, saludos.

1
2
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

DayOfWeek en CheckBox

Publicado por Phil Rob (1546 intervenciones) el 26/07/2019 23:43:43
He corregido el codigo del procedimiento (he hecho -2 en lugar de -1 porque el DataGridView tiene un Rows vacia) :
1
2
3
4
5
6
7
Private Sub PonerCaracteresNegritas()
    For R As Integer = 0 To DataGridView1.Rows.Count - 2
        If DataGridView1.Item("Fecha Inicial", R).Value.ToString = String.Empty Then
            DataGridView1.Item("Operación", R).Style.Font = New Font("Microsoft Sans Serif", 10, FontStyle.Bold)
        End If
    Next R
End Sub

No olvidar de llamar este procedimiento después el lleno de la tabla.

Gras01
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jaime
Val: 41
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

DayOfWeek en CheckBox

Publicado por Jaime (19 intervenciones) el 29/07/2019 15:00:33
Gracias Phil, lo he probado y funciona de maravilla, muchas gracias!
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