Vb.net 对于每个sql reader
我有一份报告,每5分钟生成一份excel表格,其中有colums,如Department IDDeptID,并在今天出售ArticalesqtySold。我希望我的VB应用程序打开这个excel文件,读取每个部门ID,选择最畅销的产品并将其绑定到DataGridViewer。这是我的excel表格的一个简单版本 部门物品数量 01香蕉2Vb.net 对于每个sql reader,vb.net,Vb.net,我有一份报告,每5分钟生成一份excel表格,其中有colums,如Department IDDeptID,并在今天出售ArticalesqtySold。我希望我的VB应用程序打开这个excel文件,读取每个部门ID,选择最畅销的产品并将其绑定到DataGridViewer。这是我的excel表格的一个简单版本 部门物品数量 01香蕉2 apple 3 02橙色4 apple
apple 3
02橙色4
apple 5
这是我不起作用的代码
WithEvents bsData1 As New BindingSource
Private FileName1 As String = IO.Path.Combine(Application.StartupPath, "C:\WIN\SA022.xls")
Private SheetName1 As String = "Data"
Private ConnectionNoHeader1 As String = "provider= Microsoft.ACE.OLEDB.12.0; data source='{0}';Extended Properties=""Excel 12.0; HDR=yes;"""
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Dept(0 To 2) As String
Dept(0) = "01"
Dept(1) = "02"
Dim DeptNum As String
Using cn As New OleDbConnection With {.ConnectionString = String.Format(ConnectionNoHeader1, FileName1)}
cn.Open()
For Each DeptNum In Dept
Dim cmd As OleDbCommand = New OleDbCommand(
<Text>
SELECT
DeptID,
Article,
QTYSOLDTHISDAY
FROM [<%= SheetName1 %>$]
WHERE DeptID = DeptNum and QTYSOLDTHISDAY=(select max(QTYSOLDTHISDAY) from [<%=
SheetName1 %>$] where DeptID = DeptNum )
</Text`>.Value,
cn
)
Dim dt As New DataTable
dt.Load(cmd.ExecuteReader)
dt.AcceptChanges()
bsData1.DataSource = dt
DataGridView2.DataSource = bsData1
Next DeptNum
End Using
End Sub
OP在以下评论中指出的问题:
我在gridview中找不到下一个循环。如果我只在select语句中输入部门ID,它会起作用,但我不能对每个部门ID都这样做,谢谢什么不起作用?从电子表格检索到的数据不正确?网格绑定不起作用?你必须说得更具体些。我在gridview中没有下一个循环的内容。如果我只是在select语句中输入部门ID,这是可行的,但我不能对每个部门ID都这样做,谢谢如果我在select语句中输入DeptID=01,我会得到数据,但如果我使用for NEXT遍历数组部门,则什么也得不到。您的代码有些奇怪,因为您实际上在每次迭代中都会更改数据源。如果我没有弄错的话,在这种情况下,您将永远无法使用此代码获得DeptID 01的结果。不,如果我仅使用1个部门ID查询excel表,此代码将非常有效。我的问题是,我有大约24个部门ID,如果我必须为每个部门运行相同的代码,这将是一场噩梦。所以我考虑了下一个循环,但没有给出任何结果。