【发布时间】:2015-11-16 03:04:41
【问题描述】:
我搜索了很多论坛,但没有找到任何解决方案。我想从 Vb.net 更新访问表格单元格。我的表有字段:
[PanelNumber],[Date], [PVValue]
在面板编号字段中,有一些文本,如“面板 1”、“面板 2”等。 从vb,我将在单击按钮后选择“面板1”,我需要用给定范围内的随机数填充“PVValue”字段,请检查下面的代码,当我尝试使用此代码时,我总是得到相同所有行中的数字 但需要单独的数字(可能在某些行中重复) LogTable2 是我的表名
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=LoggedData.accdb;Jet OLEDB:Database Password=GodavarthiSuresh;"
myNewConnection.ConnectionString = connString
myNewConnection.Open()
Dim UpdateString As String = "update LogTable2 set [pvvalue]= @rndVal1 where panelnumber='" & panelnametxt.Text & "'"
Dim UpdateCmd As New OleDb.OleDbCommand(UpdateString, myNewConnection)
UpdateCmd.Parameters.Clear()
Randomize()
UpdateCmd.Parameters.AddWithValue("@rndVal1", GetRandom())
Try
UpdateCmd.ExecuteNonQuery()
UpdateCmd.Dispose()
myNewConnection.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
' this is the function to get random number in given range
Public Function GetRandom() As Integer
Static Generator As System.Random = New System.Random()
Return Generator.Next(825, 850)
End Function
【问题讨论】:
-
如何将 Randomize() 调用传递给函数?我不确定它是否能解决问题,但代码至少看起来会更清晰。
-
@Philippe Grondier ,我也尝试在 GetRandom 函数中使用 Randomize() ,但仍然为所有行获得相同的随机数,请提供其他建议..
-
在您的主进程中,添加一个将保存随机值的变量,并在调用 AddWithValue 方法之前显示它。然后,您可以控制问题是来自 GetRandom 函数(我怀疑)还是对 AddWithValue 方法的调用。
-
不,GetRandom 函数运行良好,我尝试在该表单中添加 2 个字段,然后运行良好,问题仅在更新命令中。假设该表中有 5 行具有该条件,那么该更新命令将被调用 5 次,可能是这样解决的 :(
-
如果您的查询更新多行,它们都将获得相同的随机数,因为它是一个影响多行的查询。如果您希望每一行具有不同的随机值,则需要循环并一次更新它们。还有,
Randomize这里什么都不做,panelnumber也应该是查询参数