所以这是我从中读取数据的表。假设我告诉我的连接字符串选择A25:B50。
好吧,A47至B50为空。如果我专门告诉我的连接字符串仅使用A25:B46,它可以正常工作,但是,当我告诉它也选择B50时,它告诉我那里没有单元格。
如何使用最大为B50的连接字符串,以便将来如果我有更多数据,它也会读取它?
这是我选择的代码:
MyCommand2 = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$A25:B46] order by Visits desc", MyConnection2)
Dim DS = New System.Data.DataSet
MyCommand.Fill(DS)
For Each r As DataRow In DS.Tables(0).Rows
DataGridView1.Rows.Add(r.Item("Places"), r.Item("Visits"))
Next
答案 0 :(得分:1)
选择第25列及以后的A-B列的所有行。
select * from [Sheet1$A25:B] order by Visits desc
并且除了空(或仅限空白)行之外。
select * from [Sheet1$A25:B] where len(trim(Places)) > 0 order by Visits desc
如果数据中间没有空行,则不会选择空行。 因此,如果数据采用所提供的形式,则我认为您无需具有Where子句。
我假设从第47行开始输入了空格。 尝试检查是否在看起来空的行中输入了空格等。
答案 1 :(得分:0)
看起来问题甚至与此无关。问题显然是因为我通过告诉代码执行以下操作来选择“总计”值(访问次数):Tables(0).Rows(21)(1)
很明显,如果我删除一行,则该特定单元格的位置将不再存在。 但是,@ m mukai的解决方案也可以改善我的代码。 谢谢大家。