DateAdd не обновляется в итерации - PullRequest
0 голосов
/ 02 июля 2019

Всем доброго времени суток, у меня проблема: я работаю над планировщиком производства для проектов, в которых у меня есть TextBox1 для даты начала и TextBox4 для количества барабанов = Ci, пользователь должен указать, сколько Ci (барабанов) будет и начиная с этого начинать планирование производственной программы.

Вся эта информация выгружается в DataGridView, где у меня есть столбцы, где «Отдел» - это «Раздел», «Операция», «Дата окончания», «Начальная дата»

.

Проблема в том, что когда мой код начинается с барабана № 2, он назначает мне те же даты, рассчитанные для барабана № 1, что-то вроде этого.

Manufacturing   Channel Cut plate C1            04/07/2019  04/07/2019
Manufacturing   Channel Rolled plate C1         04/07/2019  04/07/2019
Manufacturing   Channel Longituidal welding C1  08/07/2019  09/07/2019
Manufacturing   Channel Re rolled C1            10/07/2019  11/07/2019
Manufacturing   Channel Cut plate C2            04/07/2019  04/07/2019
Manufacturing   Channel Rolled plate C2         04/07/2019  04/07/2019
Manufacturing   Channel Longituidal welding C2  08/07/2019  09/07/2019
Manufacturing   Chanel  rolled C2               10/07/2019  11/07/2019

Мне нужно, чтобы барабан C2 начинался с даты последнего действия на барабане 1 и оставался, что-то в этом роде.

Manufacturing   Channel Cut plate C1            04/07/2019  04/07/2019
Manufacturing   Channel Rolled plate C1         05/07/2019  05/07/2019
Manufacturing   Channel Longituidal welding C1  06/07/2019  07/07/2019
Manufacturing   Channel Re rolled C1            10/07/2019  11/07/2019
Manufacturing   Channel Cut plate C2            11/07/2019  12/07/2019
Manufacturing   Channel Rolled plate C2         13/07/2019  14/07/2019
Manufacturing   Channel Longituidal welding C2  15/07/2019  16/07/2019
Manufacturing   Chanel  rolled C2               17/07/2019  18/07/2019

Код, с которым я работал, следующий.

Private Sub Button1_Click (sender As Object, and 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, 1, date1), DateAdd (DateInterval.Day, 2, date1))
        Table.Rows.Add ("Manufacturing", "Channel", "Rolled plate C" & i, DateAdd (DateInterval.Day, 3, date1), DateAdd (DateInterval.Day, 4, date1))
        Table.Rows.Add ("Manufacturing", "Channel", "Longituid welding C" & i, DateAdd (DateInterval.Day, 5, date1), DateAdd (DateInterval.Day, 6, date1))
        Table.Rows.Add ("Manufacturing", "Channel", "Re rolled C" & i, DateAdd (DateInterval.Day, 7, date1), DateAdd (DateInterval.Day, 8, date1))
        Next
        Else
        MessageBox.Show ("Value:" & TextBox4.Text, "The number of rows must be greater than or equal to 1")
        End If
        Else
        MessageBox.Show ("Value:" & TextBox4.Text, "Invalid number")
        End If
End Sub

1 Ответ

0 голосов
/ 03 июля 2019

Намного лучше пост после того, как вы отредактировали его.

Вы сказали:

Мне нужен барабан C2, чтобы начать с даты последнего действия барабана 1 ...

Вы можете изменить значение «date1» в нижней части цикла, чтобы следующий барабан начинался с этой даты:

For i As Integer = 1 To numRows
    Table.Rows.Add("Manufacturing", "Channel", "Cut plate C" & i, DateAdd(DateInterval.Day, 1, date1), DateAdd(DateInterval.Day, 2, date1))
    Table.Rows.Add("Manufacturing", "Channel", "Rolled plate C" & i, DateAdd(DateInterval.Day, 3, date1), DateAdd(DateInterval.Day, 4, date1))
    Table.Rows.Add("Manufacturing", "Channel", "Longituid welding C" & i, DateAdd(DateInterval.Day, 5, date1), DateAdd(DateInterval.Day, 6, date1))
    Table.Rows.Add("Manufacturing", "Channel", "Re rolled C" & i, DateAdd(DateInterval.Day, 7, date1), DateAdd(DateInterval.Day, 8, date1))
    date1 = DateAdd(DateInterval.Day, 8, date1)
Next
...