我有一个与 Access 2000 数据库交互的 Delphi 2007 应用程序。我已经对数据库结构(添加字段)进行了更改,并且需要使它们在 Delphi 应用程序中可见,但事实证明这很困难。我做了一个最小的 Delphi 应用程序和 Access 数据库,在那里看到了同样的问题。
我的步骤是:
- 使用 Field 1 和 Field2 创建 Access 数据库
- 使用设置/控制面板/管理工具/数据源(ODBC 32 位)创建 MS 数据库的别名。
- 创建一个 Delphi 应用程序。
TDBGrid
在表单中添加一个TDataSource
在表格中添加一个Datasource
将网格的属性设置为DataSource1
TTable
在表单中添加一个- 将
Dataset
属性设置TDataSource
为Table1
- 将
DataBaseName
属性设置Table1
为为数据库创建的别名。 - 将
TableName
属性设置为原始 Access 数据库中表的名称。 - 将表的
Active
属性设置为 TRUE。最初在数据库中定义的所有字段都出现在网格中。问题是当我想稍后添加字段时。我可以通过从头开始重建整个事物,使它们在网格中显示为列,但必须有更简单的方法!
强制数据库结构更改到 Delphi IDE 和生成的应用程序的公认最佳实践是什么?
** 回答 Ken White 的评论 **
谢谢肯。当您可能不希望网格中的所有字段时,我很欣赏Columns
属性的原因- 我的问题是,当我使用 MS Access 将一些字段添加到表中然后重新打开我的 Delphi 项目时:DBGrid
- 如果我断开连接
TTable
并重新连接,该FieldDefs
属性会显示添加的字段。都好。 - 然后我转到 TDBGrid。显示的列不显示附加字段,仅显示原始字段。
Columns
集合是空的。 - 当我检查
Columns
属性并尝试添加所有字段时,我只会得到原始字段。如果我尝试添加一个字段列,选择列表只会给我原始字段供我选择。
我不明白为什么TTable
可以看到新字段但TDatasource
(将 TTable 指定为其Dataset
属性值)不能。