如何在vb.net窗体加载时在datagridview中显示Access数据库中的当月记录

如何在vb.net窗体加载时在datagridview中显示Access数据库中的当月记录,.net,ms-access,datagridview,vb.net-2010,.net,Ms Access,Datagridview,Vb.net 2010,我可以在下面显示带有此代码的所有记录,但我只希望看到当前月份的记录,或者至少是最近31天的记录 Public Sub Display_Data() con.Open() 'opening the connection Dim dt As New DataTable("tbLMPH") Dim rs As New OleDb.OleDbDataAdapter("Select * from tbLMPH", con) rs.Fill(dt) DataGridView1.DataSour

我可以在下面显示带有此代码的所有记录,但我只希望看到当前月份的记录,或者至少是最近31天的记录

Public Sub Display_Data()

 con.Open() 'opening the connection

 Dim dt As New DataTable("tbLMPH")
 Dim rs As New OleDb.OleDbDataAdapter("Select * from tbLMPH", con)
 rs.Fill(dt)
 DataGridView1.DataSource = dt
 DataGridView1.Refresh()

 Label1.Text = dt.Rows.Count

 rs.Dispose()

 con.Close()

 End Sub 

首先,将字段改回数据类型Date。日期应始终像日期一样处理,而不是字符串,没有例外

其次,您可以使用DataView控制过滤,如下所述:


您的过滤器应该是
>=MonthFirst,您认为什么可以工作?我知道在select语句中插入where子句应该可以。我尝试过(“从tbLMPH中选择*,其中年(datadate)=年(getdate())和月(datadate)=月(getdate())”,我后来发现这是一个MySQL语句,需要一个等价的访问权限。我忘记写了,我是一个编码新手。tbLMPH的数据类型是什么。数据日期、日期/时间还是文本?我试过日期/时间,但这让我更加困惑。我相信我已经将日期列分为3列1 id thisday、thismonly和thiseyear您的thismonly和thiseyear字段的数据类型是什么。。。数字还是文本?今年的年份值是2位数还是4位数?对不起,我还有一个问题。此示例代码在哪里输入?它是放在“显示数据”函数中,还是这是对查询生成器的查询?请跟我说实话,因为我是新来的,感到很尴尬。这是一条非常陡峭的学习曲线。我需要自己去弄清楚,但是一个提示会很好。我想说的是,您应该扩展您当前的代码,并引入一个DataView,如链接中所示。因此,这不是复制粘贴,而是对代码的调整。公共子显示_Data()con.Open()'打开连接Dim dt作为新数据表(“tblarp”)Dim rs作为新OleDb.OleDbDataAdapter(“选择*从tblarp”,con)Dim Today作为DateTime=DateTime.Today Dim MonthFirst=New DateTime(Today.Year,Today.MonthLast=MonthFirst.AddMonthMonthMonth1.AddDays(-1)rs.Fill(dt)DataGridView1.DataSource=dt DataGridView1.Refresh()Label1.Text=dt.Rows.Count rs.Dispose()con.Close()结束没有发生任何情况?数据显示但未过滤。您只指定了MonthFirst和MonthLast。正如本文所解释的,您将需要创建并使用一个过滤数据视图。
Dim Today As DateTime = DateTime.Today
Dim MonthFirst = new DateTime(Today.Year, Today.Month, 1)
Dim MonthLast = MonthFirst.AddMonths(1).AddDays(-1)