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查询函数

  • 更好地使用

  • 而不是连接字符串以使命令使用 参数化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)))