Vb.net 循环数据库获取值并将其放在datagridview中的特定位置
我有一个带有两列的Vb.net 循环数据库获取值并将其放在datagridview中的特定位置,vb.net,loops,datagridview,Vb.net,Loops,Datagridview,我有一个带有两列的DataGridView。第一列填充文件夹路径,第二列为空。每个文件夹路径中都有一个名为DB1的数据库。我想从每个数据库中提取1个值(value),然后将该值放在第二列中相应的数据库路径旁边。这就是我正在使用的查询 Select CODE, VALUE from DB1 where CODE = 2419 我知道如何填充DataGridView以及如何从数据库中提取1个值,但我甚至不知道从何开始 编辑 我已经设法创建了工作循环,但不知道如何将这些值添加到datagridvie
DataGridView
。第一列填充文件夹路径,第二列为空。每个文件夹路径中都有一个名为DB1的数据库。我想从每个数据库中提取1个值(value),然后将该值放在第二列中相应的数据库路径旁边。这就是我正在使用的查询
Select CODE, VALUE from DB1 where CODE = 2419
我知道如何填充DataGridView
以及如何从数据库中提取1个值,但我甚至不知道从何开始
编辑
我已经设法创建了工作循环,但不知道如何将这些值添加到datagridview中的相应位置
For Each row As DataGridViewRow In DataGridView1.Rows
Dim sendtroopid As String
sendtroopid = row.Cells("CODE").Value
On Error Resume Next
Dim FilePath As String = sendtroopid 'DATABASE PATH
Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath & _
" ;Extended Properties=dBASE IV")
con.Open()
Using cmd As New OleDbCommand("SELECT CODE, VALUE FROM DB1 WHERE CODE = @CODE", con)
cmd.Parameters.AddWithValue("@CODE", "2419")
Using reader As OleDbDataReader = cmd.ExecuteReader()
While (reader.Read())
MsgBox(reader("VALUE"))
End While
End Using
End Using
End Using
Next
编辑2
通过上面的代码,我可以在msgbox中获得所有值。唯一剩下的就是插入另一个循环,将所有这些值(从第0行开始)放入datagridview。
如果我将msgbox替换为
For i As Integer = 0 To DataGridView1.Rows.Count - 1
DataGridView1.Rows(i).Cells(1).Value = (reader("VALUE"))
Next
然后,所有行仅填充最后一个值(来自最后一个数据库的值)
编辑3
我变了
value = reader.Read()
与
While (reader.Read())
value = reader("VALUE")
End While
按行填充
Protected Sub GridView1_RowDataBound(sender As Object, e As _
System.Web.UI.WebControls.GridViewRowEventArgs) Handles _
GridView1.RowDataBound
Dim DGRow As GridViewRow = sender
If DGRow.RowType = DataControlRowType.DataRow Then
Dim TestPath As String = DGRow.Cells(0).Text
Dim FoundKey As String = GetKeyFromOtherDatabase(TestPath)
DGRow.Cells(1).Text = FoundKey
End If
End Sub
Private Function GetKeyFromOtherDatabase(testpath) As String
Dim FoundKey As String = ""
' FoundKey = Double something magical...
Return FoundKey
End Function
我仍然不确定您的查询是如何工作的,但假设是这样,我已经更改了您的代码
For Each row As DataGridViewRow In DataGridView1.Rows
Dim sendtroopid As String
sendtroopid = row.Cells("CODE").Value
On Error Resume Next
Dim FilePath As String = sendtroopid 'DATABASE PATH
Dim value as string = "" ' declare a string variable to hold the result
Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath & _
" ;Extended Properties=dBASE IV")
con.Open()
Using cmd As New OleDbCommand("SELECT CODE, VALUE FROM DB1 WHERE CODE = @CODE", con)
cmd.Parameters.AddWithValue("@CODE", "2419")
Using reader As OleDbDataReader = cmd.ExecuteReader()
value = reader.Read()
End Using
End Using
End Using
row.Cells(1) = value ' put it in the datagridview cell
Next
未声明DataControlRowType,未找到RowDataBound,未定义GridViewRow。对不起,我不知道如何解决这个问题。这个网站怎么了?如果我的问题有需要纠正的地方,请留下评论。佩蒂,我看到一种趋势,人们为了能够在生活中制造某种权力的幻觉而放弃投票。我编辑了你的问题,试图让它更容易理解。我还是不知道你到底在问什么问题。另外,如果您有一个名为
DB1
的数据库,那么表名是什么?如何在没有表名的情况下查询数据库?仅供参考,最好在原始问题中包含一些代码,否则人们很难提供帮助。一些清晰和更好的语法也会有所帮助。我知道,但这就是为什么我在最初的帖子中解释了我能做什么和我不能做什么。我知道如何从DBF数据库中提取单个值,但我无法找出在第二列中填充这些值的循环。顺便说一句,这不是我得到的第一次否决票,但没有人想留下这样做的理由。行。单元格(1)。值。我在手机上,当我到达PC时会更新我的答案唯一需要更改的事情(如果有人在这里寻找解决方案)是:value=reader.Read()到While(reader.Read())value=reader(“value”)结束While。再次感谢。