使用 DataGrid 和 Data 控件访问 Access 数据库






4.20/5 (10投票s)
使用 DataGrid 和 Data 控件访问 Access 数据库
引言
大家好.. 我写这篇文章是为了回复 CodeProject 讨论区中的 Anonymous 的提问。
Anonymous 写道
朋友们,我编程经验非常少,刚开始一个新项目,这个项目包含一个表单,表单上有两个日历控件。我想知道如何获取数据库中两个日期之间输入的数据,并将其显示在网格中。日期选择是动态的。 任何帮助都将不胜感激。
这个程序并不复杂... 但我认为它对像 Anonymous 朋友这样的 VB6 初学者来说可能很有用。
项目
我使用 Access XP 创建了一个数据库,并将其保存为 Access 97 格式。它包含一个名为 table1
的表。
Table1
有 3 列
- ID: 自动编号
- Name: 文本 .. 最大长度=50
- BirthDate: 日期时间
主表单和控件
frmMain
: 主表单...没有什么特别的。
Data
: 一个数据控件,具有以下属性
Visible=False
DatabaseName=”数据库路径”
Connect=Access
(默认值)
Cal()
: 包含 2 个元素的日历控件数组。
(你可以通过将一个控件拖到表单上并复制 它,然后将其粘贴到表单上创建控件数组。)
DBGrid
: 一个数据网格控件
dataSource=Data
现在... 让我们来看一下每次用户从日历控件中选择新日期时更新数据所需的简单代码。
这是 Cal_AfterUpdate
的代码
Private Sub Cal_AfterUpdate(Index As Integer)
Dim strDate0 As String
Dim strDate1 As String
Dim strSQL As String
strDate0 = Cal(0).Day & "/" & Cal(0).Month & "/" & Cal(0).Year
strDate1 = Cal(1).Day & "/" & Cal(1).Month & "/" & Cal(1).Year
strSQL = "SELECT * FROM table1 WHERE BirthDate Between #" _
& strDate0 & "# AND #" & strDate1 & "#"
Debug.Print strSQL
Data.RecordSource = strSQL
Data.Refresh
End Sub
这就是所有需要的编码... 感谢数据控件和数据绑定。
工作原理
- 我声明了两个
string
变量来保存日期... 我使用日历控件的属性组合它们。 strSQL
是用于让 Jet 引擎(访问数据的组件)知道我们需要哪些数据的查询。Debug.Print strSQL
是为了调试目的而调用的,这样我就可以检查查询是否形成良好。- 将
strSQL
值分配给数据控件的RecordSource
属性并刷新数据... 然后我们可以在网格控件中看到提取的结果集。
欢迎提出任何意见。
历史
- 2003 年 1 月 8 日:初始发布