我有一个应用程序,显示某个引用的移位目标。我有很多参考文献分为3班(早上,下午,晚上) 该应用程序运行良好,但现在我想在所有参考的每个班次开始时重置班次目标的计数器。我的意思是,当时钟是早上6点时,所有早班都应该把计数器置于0。 我有以下代码但不工作。有些东西不见了,我被卡住了。
Dim rtime As New TimeSpan(0, 0, CInt(requestddate.TimeOfDay.TotalSeconds))
hora1 = New TimeSpan(6, 0, 0)
hora2 = New TimeSpan(14, 0, 0)
hora3 = New TimeSpan(22, 0, 0)
ConnectDatabase()
If rtime = hora1 Then
count = 0
Try
With cmd4
.Connection = conn
.CommandText = "Select ShiftTarget.IDShiftTarget from ShiftTarget, turnos, linhas WHERE ShiftTarget.IDLinha = linhas.IDLinha and ShiftTarget.IDTurno = turnos.IDTurno And turnos.Descricao = 'Manha' And linhas.NomeLinha = '" & GlobalVariables.linha & "'"
End With
While objReader.Read()
listaIDs.Add(objReader("IDShiftTarget").ToString())
End While
objReader.Close()
DisconnectDatabase()
ConnectDatabase()
With cmd1
.Connection = conn
.CommandText = "INSERT into contador (IDShiftTarget, Data, Contador) VALUES (@ID, @date, @cont)"
For Each item As String In listaIDs
MsgBox(item)
.Parameters.AddWithValue("@ID", item)
.Parameters.AddWithValue("@date", data.ToString("yyyy-MM-dd"))
.Parameters.AddWithValue("@cont", count)
.ExecuteNonQuery()
Next
End With
Catch ex As Exception
If ex.InnerException IsNot Nothing Then
MsgBox(ex.InnerException)
End If
End Try
DisconnectDatabase()
有人能告诉我我做错了什么吗?
所以,想象一下,当实际时间是早上6点时,我想插入类似的内容:
IDContador IDShiftTarget Data Contador
11933 32 2016-02-23 0
11934 19 2016-02-23 0
11935 20 2016-02-23 0
11936 35 2016-02-23 0
我不能简单地重置为0,其中idshifttarget等于19,20,32,35因为这将重置所有记录,我想将它们保留在表中。 我需要检查MAX(ID),其中shiftTarget是我在数组中得到的值,然后将Contador设置为0。
更新:
我在代码中做了这些更改:
While objReader.Read()
listaIDs.Add(objReader("IDShiftTarget").ToString())
End While
objReader.Close()
DisconnectDatabase()
ConnectDatabase()
With cmd1
.Connection = conn
.CommandText = "INSERT into contador (IDShiftTarget, Data, Contador) VALUES (@ID, @date, @cont)"
For Each item As String In listaIDs
MsgBox(item)
.Parameters.AddWithValue("@ID", item)
.Parameters.AddWithValue("@date", data.ToString("yyyy-MM-dd"))
.Parameters.AddWithValue("@cont", count)
.ExecuteNonQuery()
Next
End With
Catch ex As Exception
If ex.InnerException IsNot Nothing Then
MsgBox(ex.InnerException)
End If
End Try
DisconnectDatabase()
使用此代码我只能看到第一个ID,在控制台中我得到下一个错误: 抛出异常:MySql.Data.dll中的“System.InvalidOperationException”
答案 0 :(得分:1)
你的代码中有些东西会导致错误的行为:
IDShiftTargets
,关闭DataReader,然后循环遍历列表并执行Insert语句。AddWithValue
只在循环外部进行一次,并将其设置在循环中
Parameter("@ID").Value = item
Timer.Enabled= False
函数的开头和函数后的Timer.Enabled=True
完了。或者只是将计时器刻度设置得足够高( d'哦)。