Ms access 使Access数据库字段结构更改传播到Delphi应用程序
我有一个与Access 2000数据库交互的Delphi 2007应用程序。我已经对数据库结构进行了更改(添加了字段),需要使它们在Delphi应用程序中可见,但事实证明这很困难。我做了一个最小的Delphi应用程序和Access数据库,同样的问题也出现了 我的步骤是:Ms access 使Access数据库字段结构更改传播到Delphi应用程序,ms-access,delphi,delphi-2007,ms-access-2000,Ms Access,Delphi,Delphi 2007,Ms Access 2000,我有一个与Access 2000数据库交互的Delphi 2007应用程序。我已经对数据库结构进行了更改(添加了字段),需要使它们在Delphi应用程序中可见,但事实证明这很困难。我做了一个最小的Delphi应用程序和Access数据库,同样的问题也出现了 我的步骤是: 使用字段1和字段2创建Access数据库 使用设置/控制面板/管理工具/数据源(ODBC 32位)为MS数据库创建别名 创建一个Delphi应用程序 在表单中添加TDBGrid 在表单中添加TDataSource 将网格的Da
- 使用字段1和字段2创建Access数据库
- 使用设置/控制面板/管理工具/数据源(ODBC 32位)为MS数据库创建别名
- 创建一个Delphi应用程序
- 在表单中添加
TDBGrid
- 在表单中添加
TDataSource
- 将网格的
属性设置为Datasource
DataSource1
- 在表单中添加一个
t表
- 将
的TDataSource
属性设置为Dataset
Table1
- 将
的Table1
属性设置为为数据库创建的别名DataBaseName
- 将
属性设置为原始Access数据库中的表名TableName
- 将表的
属性设置为TRUE。最初在数据库中定义的所有字段都显示在网格中。 问题是我想在以后添加字段。我可以通过从头开始重建整个内容,使它们在网格中显示为列,但必须有一种更简单的方法李>Active
DBGrid
属性的Columns
的原因-我的问题是,当我使用MS Access向表中添加一些字段,然后重新打开我的Delphi项目时:
- 如果断开
并重新连接,则TTable
属性将显示添加的字段。一切都好FieldDefs
- 然后我转到TDBGrid。显示的列不显示其他字段,仅显示原始字段。
集合为空列
- 当我检查
属性并尝试添加所有字段时,我只得到原始字段。如果我尝试添加一个field`列,则picklist只提供可供选择的原始字段列
我不明白为什么
TTable
可以看到新字段,但是TDatasource
(它将TTable指定为Dataset
属性值)不能看到新字段。当您更改数据库结构时,最大限度地减少问题的方法是避免在Delphi应用程序的数据集中使用持久的TFields,并且,如果Delphi数据集类型是支持持久TFieldDefs的数据集类型,请避免使用这些类型。这两种类型的pesistent集合所能做的一切都不能在代码中完成,您可以使代码适应底层数据集结构的更改。但是,没有办法像您想象的那样强制进行更改。无法自动完成更改的原因是IDE无法知道您是否希望包含新列。例如,创建持久化字段以在TDBGrid中使用以向用户显示,但不将表中的每一列都包含到该网格中以供显示,或者当您使用来自另一个应用程序的相关数据库时,该数据库包含您在应用程序中永远不会使用的列。您好,Ken,有问题的评论。