Vb.net 用于循环对象查询的简单方法
以下是更新的问题和更多关于我尝试做什么的信息:Vb.net 用于循环对象查询的简单方法,vb.net,for-loop,Vb.net,For Loop,以下是更新的问题和更多关于我尝试做什么的信息: Private Sub HistogramYTD(ByVal DP1 As String, ByVal DP2 As String) Dim queryString As String = "SELECT COUNT(ROUTE_SECONDS) AS RESULT1 FROM dbo.APE_BUSDRIVER_MAIN WITH(NOLOCK) WHERE YEAR_TIME = '" & cbYear.Text &
Private Sub HistogramYTD(ByVal DP1 As String, ByVal DP2 As String)
Dim queryString As String = "SELECT COUNT(ROUTE_SECONDS) AS RESULT1 FROM dbo.APE_BUSDRIVER_MAIN WITH(NOLOCK) WHERE YEAR_TIME = '" & cbYear.Text & "' AND APE_AREA_OBJID = '" & lblAreaOBJID.Text & "' AND EMPLOYEE_NAME = '" & cbEmployeeName.Text & "' AND ROUTE_SECONDS >= " & DP1 & " AND ROUTE_SECONDS < " & DP2 & " AND ACTIVE = 1"
Using connection As New SqlConnection(SQLConnectionStr)
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
' Call Read before accessing data.
While reader.Read()
RESULT1 = reader("RESULT1")
End While
' Call Close when done reading.
reader.Close()
End Using
End Sub
在使用类似语法的情况下,如何使用数组?还是循环?您不能以这种方式动态创建变量并尝试分配值,而是需要使用字典或列表,具体取决于您计划如何访问存储在集合对象中的值 例如,使用字典
Dim HistResult As New Dictionary(Of String, Single)
For i As Integer = 1 To 19
HistogramYTD(min + (range * i) + 1, min + (range * (1 + i)))
HistResult.Add(String.Format("HistResult{0}", i) , RESULT1)
Next
现在您有了一个字典,其中每个键都被命名为变量“HistResultXX”,您可以使用如下语法检索正确的值
Dim result = HistResult("HistResult19")
我假设您的变量
RESULT1
的类型为Single,但如果不是这样,则将字典声明更改为正确的数据类型我认为您需要的是数组
Plus而不是使用全局RESULT1
。(我假设您正在从sqldatabase检索一个整数,并将其存储到RESULT1
)。您应该使用函数
并返回结果
HistResult(i) =HistogramYTD(min + (range * i) + 1, min + (range * (1 + i)))
接下来是sql查询函数
函数
和参数整数
,而不是字符串
真的不清楚。什么是HISTRESULTX、RESULT1和HISTGRAMYTD?您得到了什么错误?您试图实现什么?HISTRESULTX是一个存储为整数的变量。Result1是一个SQL查询结果,HistYTD是我的SQL查询字符串的一部分。“Private Sub-historageramytd(ByVal DP1作为字符串,ByVal DP2作为字符串)”我只需要知道如何将HistResultXX合并到for循环中。我们需要知道historageramytd做了什么!成功了!问题。除了历史记录,我还有历史记录。如何使用if语句交换这两个名称?我尝试了直方图+(变量在这里)之类的方法,但它错了。你知道我的意思吗?但是我建议你用图书代替教程。在谷歌上搜索vb.net图书。通过书本学习编程。
Dim HistResult(19) as Integer
For i As Integer = 0 To HistResult.GetUpperBound(0) ' HistResult.Length-1
HistogramYTD(min + (range * i) + 1, min + (range * (1 + i)))
HistResult(i) = RESULT1
Next
'plotting inside loop will be the same
'For i As Integer = 0 To HistResult.GetUpperBound(0)
' Points.AddXY(Format(DateAdd("s", min, "00:00:00"), "mm:ss") & " - " & 'Format(DateAdd("s", min + (range * i), "00:00:00"), "mm:ss"), HistResult(i))
' Next
HistResult(i) =HistogramYTD(min + (range * i) + 1, min + (range * (1 + i)))